2012-03-27 3 views
0

그래서 내 페이지의 이미지 뷰 구성 요소를 스 와이프로 변경하려고합니다. 나는 스 와이프 제스처를 집어 제스처 탐지기로 전달할조차 못합니다.OnFling 및 ImageView가 올바르게 작동하지 않습니다.

OnFling 메서드에서 해당 로그 문을 가져올 수 없습니다. 내가 누락 된 것이 있습니까?

public class Detail extends Activity implements OnClickListener{ 

private GestureDetector gestureDetector; 
private ImageView wallpaper; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
      gestureDetector = new GestureDetector(new MyGestureDetector()); 
      wallpaper = (ImageView)findViewById(R.id.wallpaper); 
    wallpaper.setAdjustViewBounds(true); 

      wallpaper.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.d("getting", "here"); 
          //return gestureDetector.onTouchEvent(event); 
      return true; 
        } 
      }); 
} 

class MyGestureDetector extends SimpleOnGestureListener { 
    private static final int SWIPE_MIN_DISTANCE = 50; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      Log.d("MOTION", "STARTED"); 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 

       Log.d("Moving", "Right"); 
       return true; 

      } 
      else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Log.d("Moving", "Left"); 
       return true; 

      } 
     } catch (Exception e) { 

     } 
     return false; 
    } 
} 

답변

0

입니다이 시도 : 을 나는 GenesMotionDetector.java라는 클래스가 있습니다. 여기에 대한 코드는 다음과 같습니다.

package gene.com.motioneventssample; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.GestureDetector; 
import android.view.MotionEvent; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

//This works 
public class GenesMotionDetector extends Activity implements GestureDetector.OnGestureListener { 
    private GestureDetector gestureScanner; 
    LinearLayout mView1; 
    TextView mView2; 
    ImageView mView3; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.nothing); 
     gestureScanner= new GestureDetector(getBaseContext(),this); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent me) { 
     System.out.println("Inside onTouchEvent() of GenesMotionDetector.java"); 
     return gestureScanner.onTouchEvent(me); 
    } 

    @Override 
    public boolean onDown(MotionEvent e) { 
     System.out.println("Inside onDown() of GenesMotionDetector.java"); 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     System.out.println("Inside onFling() of GenesMotionDetector.java"); 
     return true; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 
     System.out.println("Inside onLongPress() of GenesMotionDetector.java"); 
    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
     System.out.println("Inside onScroll() of GenesMotionDetector.java"); 
     return true; 
    } 

    @Override 
    public void onShowPress(MotionEvent e) { 
     System.out.println("Inside onShowPress() of GenesMotionDetector.java"); 
    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent e) { 
     System.out.println("Inside onSingleTapUp() of GenesMotionDetector.java"); 
     return true; 
    } 
} 

해당 클래스의 해당 XML 레이아웃 파일은 nothing.xml입니다. 당신은 기본적으로 길게 누르 활성화 (true)

mDetector.setIsLongpressEnabled(false); 

을 설정해야

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/screen" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/text" 
     android:background="#17528c" 
     android:text="testing" 
     android:layout_width="100dp" 
     android:layout_height="200dp" /> 

    <ImageView 
     android:id="@+id/image" 
     android:background="#f8af20" 
     android:layout_width="100dp" 
     android:layout_height="200dp" /> 
</LinearLayout> 
0

어떤 그 일은 마리 등 만 파기 스크롤 길게 누르 이벤트를 수신입니다 : 여기에 대한 코드입니다 복잡한 사건들.

mDetector = new GestureDetectorCompat(context, this); 
mDetector.setOnDoubleTapListener(this); 
mDetector.setIsLongpressEnabled(false); 

평화

:

은 그냥 설치 이후에 동작 감지기 개체를 그 코드를 넣어

관련 문제