2012-03-27 48 views
0

所以我試圖讓我的頁面的imageview組件改變滑動。我甚至無法拿起滑動手勢並將其轉發到手勢檢測器上。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。下面是它的代碼:

<?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.setIsLongpressEnabled(false); 

長按已啓用(true)和什麼做的是監聽長按事件僅丟棄滾動,甩等複雜的事件。

只要把代碼中後您設置您的姿態探測器對象:

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

和平

相關問題