Android 프로 그래 밍 사용자 정의 제스처 구현 방법 상세 설명
6985 단어 Android사용자 정의 제스처
이전에 안 드 로 이 드 프로그램 에서 제스처 를 사용 하 는 방법 을 소 개 했 는데 주로 시스템 이 기본적으로 제공 하 는 몇 가지 제스처 입 니 다.이번 에는 제스처 를 어떻게 사용자 정의 하고 관리 하 는 지 소개 합 니 다.
먼저 안 드 로 이 드 시스템 의 제스처 관 리 를 소개 합 니 다.안 드 로 이 드 시스템 은 응용 프로그램 이 사용자 의 제스처 를 파일 형식 으로 저장 하기 전에 이 제스처 를 사용 하려 면 이 제스처 라 이브 러 리 파일 만 불 러 오 면 됩 니 다.또한 안 드 로 이 드 시스템 은 제스처 인식,찾기 및 삭제 등 함수 인 터 페 이 스 를 제공 합 니 다.구체 적 으로 다음 과 같 습 니 다.
1.제스처 라 이브 러 리 파일 불 러 오기:
staticGestureLibrary fromFile(String path);
staticGestureLibrary fromFile(File path);
staticGestureLibrary fromPrivateFile(Context context, String name);//지정 한 프로그램의 데이터 폴 더 에서 name 파일 로 제스처 라 이브 러 리 불 러 오기
staticGestureLibrary fromRawResource(Context context, int resourceId);
2.제스처 라 이브 러 리 관리:
voidaddGesture(String entryName, Gesture gesture);// entryName
Set<String>getGestureEntries();//
ArrayList<Gesture>getGestures(String entryName);// entryName
ArrayList<Prediction>recognize(Gesture gesture);// gesture
voidremoveEntry(String entryName);// entryName
voidremoveGesture(String entryName, Gesture gesture);// entryName、gesture
booleansave();//
다음은 제스처 를 사용자 정의 하 는 방법 을 소개 합 니 다.안 드 로 이 드 는 Gesture OverlayView 라 는 구성 요 소 를 제공 하여 사용자 정의 제스처 를 그립 니 다.Ongesture Listener,OnGesture Performed Listener,OnGesturing Listener 세 개의 감청 인 터 페 이 스 를 제공 합 니 다.각각 제스처 이벤트 의 시작,종료,완료,취소 등에 응답 하 는 데 사 용 됩 니 다.일반적으로OnGesture Performed Listener 는 제스처 이벤트 가 완 료 될 때 응답 을 제공 하 는 데 가장 많이 사용 된다.다음은 프로그램 인 스 턴 스 를 통 해 제스처 를 사용자 정의 하 는 방법 을 설명 한다.사용 한 레이아웃 파일 은 다음 과 같 습 니 다:
1.main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" "
/>
<android.gesture.GestureOverlayView
android:id="@+id/gesture"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<!-- ,single -->
android:gestureStrokeType="multiple"
/>
</LinearLayout>
2.save.xml:
<?xmlversionxmlversion="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dip"
android:text="@string/gesture_name"
/>
<!-- -->
<EditText
android:id="@+id/gesture_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<!-- -->
<ImageView
android:id="@+id/show"
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_marginTop="10dp"
/>
</LinearLayout>
자바 코드 는 다음 과 같 습 니 다:
public class AddGesture extends Activity
{
EditText editText;
GestureOverlayView gestureView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) findViewById(R.id.gesture_name);
gestureView = (GestureOverlayView) findViewById(R.id.gesture);
//
gestureView.setGestureColor(Color.RED);
//
gestureView.setGestureStrokeWidth(4);
// gesture
gestureView.addOnGesturePerformedListener(
new OnGesturePerformedListener()
{
@Override
public void onGesturePerformed(GestureOverlayView overlay
,final Gesture gesture)
{
// save.xml
View saveDialog = getLayoutInflater().inflate(
R.layout.save, null);
// saveDialog show
ImageView imageView = (ImageView) saveDialog
.findViewById(R.id.show);
// saveDialog gesture_name
final EditText gestureName = (EditText) saveDialog
.findViewById(R.id.gesture_name);
// Gesture
Bitmap bitmap = gesture.toBitmap(128, 128, 10, 0xFFFF0000);
imageView.setImageBitmap(bitmap);
// saveDialog
new AlertDialog.Builder(AddGesture.this)
.setView(saveDialog)
.setPositiveButton(" ", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which)
{
//
GestureLibrary gestureLib = GestureLibraries
.fromFile("/mnt/sdcard/mygestures");
//
gestureLib.addGesture(
gestureName.getText().toString()
,gesture);
//
gestureLib.save();
}
})
.setNegativeButton(" ", null)
.show();
}
});
}
}
위 프로그램 을 실행 하면 사용자 정의 제스처 추가 가 완 료 됩 니 다.실행 결 과 는 그림 과 같 습 니 다.이 제스처 를 사용 하려 면 해당 하 는 제스처 라 이브 러 리 를 불 러 오고 앞에서 제시 한 식별 함수 인 터 페 이 스 를 호출 하여 식별 하면 됩 니 다.여 기 는 더 이상 상세 하 게 설명 하지 않 습 니 다.상기 내용 은 미 친 안 드 로 이 드 라 는 책 에서 배 웁 니 다.
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.