컴퓨터 지식 네트워크 - 컴퓨터 지식 - 안드로이드 프래그먼트에서 키 이벤트 디스패치키이벤트를 처리하는 방법

안드로이드 프래그먼트에서 키 이벤트 디스패치키이벤트를 처리하는 방법

DispatchKeyEvent는 프래그먼트에 작성할 수 없습니다.

프래그먼트를 시작하는 액티비티에 콜백 메서드를 작성할 수 있습니다.

공개 인터페이스 MyTouchListener

{

public void onTouchEvent(MotionEvent event);

}

/*

* MyTouchListener 인터페이스 목록 저장

*/

private ArrayList myTouchListeners = new ArrayList();

/**

* 제공 대상 getActivity( ) 메소드를 통해 조각화하여 자체 터치 이벤트 등록

* @param 리스너

*/

public void RegisterMyTouchListener(MyTouchListener 리스너)

{

myTouchListeners.add(listener);

}

/**

* getActivity(를 통해 Fragment에 제공됨 ) 메소드 자체 터치 이벤트 등록을 취소하는 메소드

* @param 리스너

*/

public void unRegisterMyTouchListener(MyTouchListener 리스너)

{

myTouchListeners.remove(listener);

}

/**

* 등록된 모든 MyTouchListeners 인터페이스에 터치 이벤트를 배포합니다

*/

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

// TODO 자동 생성 메서드 스텁

for (MyTouchListener 리스너 : myTouchListeners) {

Listener.onTouchEvent(ev);

}

return super.dispatchTouchEvent(ev) ;

}

그런 다음 프래그먼트에 등록하고 이 방법을 사용하세요

/**

* 프래그먼트에 등록하세요

* ChatActivity의 Touch 콜백을 수신하는 객체

* onTouchEvent 함수를 다시 작성하고 Fragment의 논리적 처리를 수행합니다.

*/

private MyActivity.MyTouchListener mTouchListener = new ChatActivity.MyTouchListener() {

@Override

pub

lic void onTouchEvent(MotionEvent event) {

// TODO 자동 생성된 메소드 스텁

//논리 처리

int action = event.getAction();

스위치(작업) {

case MotionEvent.ACTION_DOWN:

if (vTracker == null) {

vTracker = VelocityTracker. acquire();

} else {

vTracker.clear();

}

vTracker.addMovement(event);

중단;

사례 MotionEvent.ACTION_MOVE:

vTracker.addMovement(event);

중단;

Case MotionEvent.ACTION_UP:

Case MotionEvent.ACTION_CANCEL:

try{

vTracker.recycle();

}catch(예외 e){

e.printStackTrace();

}

break;

}

}

};

콜백은 프래그먼트의 onAttach 메소드에 등록되어야 합니다.

@Override

public void onAttach(Activity Activity) {

super.onAttach(activity);

//조각 생성자에 mTouchListener 콜백 등록

if(mTouchListener!=null){

if(getActivity()!=null){

((MyActivity)getActivity()).registerMyTouchListener(mTouchListener);

}

< 피> }

}

上篇: I5 8 세대 4g 플러스 고유 2g 노트북은 충분합니까? 下篇: DNF. 물리 데미지나 마법 데미지 중 하나를 선택하세요.
관련 내용