2012-06-01 4 views
2

Я работаю над приложением, в котором я хочу реализовать идентификаторы жестов. Когда пользователь дважды щелкнет, тогда он должен отобразить следующее изображение, и когда он даст один клик, тогда он покажет описание ..... .. мой код, как следовать .......жесты детектора не работают

public class FirstImage extends ImageView implements OnTouchListener { 

    double pixel=0; 
    MotionEvent event; 
    TextView k; 
    int rid; 
    GestureDetector gd; 
    Bitmap image,bitmap; 
    String huma ="Human"; 
    String info="human"; 
    String infoR = "Ribosome"; 
    String infom = "Mitochondria"; 
    String infoc="Cytoplasm"; 
    float x = 0; //init value 
    float y = 0; //init value 
    Animation animationFadeIn; 
    int t=0; 
    int i=1; 
    private GestureDetector gestureDetector= new GestureDetector((OnGestureListener) this); 

    public FirstImage(Context context) { 
     super(context); 



     } 
    public FirstImage(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     } 


    public void changeImage(int id,int Image_slide){ 
        if(Image_slide==1){ 
         this.setImageResource(id); 
         final Animation animationslidein=AnimationUtils.loadAnimation(getContext(), R.anim.slidein); 
         this.startAnimation(animationslidein); 
         rid=id; 

         this.setOnTouchListener((OnTouchListener) gestureDetector); 
         Log.w("debug","which is null"+gestureDetector); 

        }else if(Image_slide==2){ 
         this.setImageResource(id); 

        final Animation animationslideout=AnimationUtils.loadAnimation(getContext(), R.anim.slideout); 
        this.startAnimation(animationslideout); 
        rid=id; 
        this.setOnTouchListener((OnTouchListener) gestureDetector); 
        }else 
        { 
         this.setImageResource(id); 
         rid=id; 
         final Animation animationzoomin=AnimationUtils.loadAnimation(getContext(), R.anim.zoomin); 
         this.startAnimation(animationzoomin); 
         this.setOnTouchListener((OnTouchListener) gestureDetector); 
        } 




    } 

private void doubletap(float x, float y) { 
     // TODO Auto-generated method stub 
     if((x==(this.getWidth()))&&(y==(this.getHeight()))){ 
      int Image_slide=0; 
      if(rid==R.drawable.human) 
       this.changeImage(R.drawable.hand, Image_slide); 
     } 
public boolean onTouch(View v, MotionEvent me) { 
    return gestureDetector.onTouchEvent(me); 

} 
public class MyGestureDetector extends SimpleOnGestureListener { 
    public boolean onDown(MotionEvent e) { 
     // TODO Auto-generated method stub 
     x=e.getX(); 
     y= e.getY(); 

     pageinfo(x,y); 
     return true; 
    } 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     // TODO Auto-generated method stub 
     return false; 
    } 
    public void onLongPress(MotionEvent e) { 
     // TODO Auto-generated method stub 
     x=e.getX(); 
     y= e.getY(); 
     pageinfo(x,y); 
    } 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
      float distanceY) { 
     // TODO Auto-generated method stub 
     return false; 
    } 
    public void onShowPress(MotionEvent e) { 
     // TODO Auto-generated method stub 
     x=e.getX(); 
     y= e.getY(); 
     pageinfo(x,y); 
    } 
    public boolean onSingleTapUp(MotionEvent e) { 
     // TODO Auto-generated method stub 
     x=e.getX(); 
     y= e.getY(); 
     pageinfo(x,y); 
     return true; 
    } 
    public boolean onDoubleTap(MotionEvent e) { 

     x=e.getX(); 
     y= e.getY(); 
     doubletap(x,y); 
     return true; 
    } 
} 
} 

может ли один помочь мне, что проблема в моем коде ...... и почему он не работает ..... }

ответ

0

Сначала создайте GestureDetector и слушатель. Затем привяжите его к вашему классу, который расширяет GestureDetector.SimpleOnGestureListener.

private GestureDetector detector; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    detector= new GestureDetector(this, new MyGesturesListener()); 
} 

Затем вы можете реализовать методы различных жестов:

class MyGesturesListener extends GestureDetector.SimpleOnGestureListener{ 
    @Override 
    public boolean onSingleTapUp(MotionEvent ev) { 
    return true; 
    } 
    @Override 
    public void onShowPress(MotionEvent ev) { 
    } 
    @Override 
    public void onLongPress(MotionEvent ev) { 
    } 
    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    return true; 
    } 
    @Override 
    public boolean onDown(MotionEvent ev) { 
    return true; 
    } 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    return true; 
    } 
} 
+0

если мы используем framelayout thenwher мы должны определить жест dtectore ..... – Ashishsingh

+0

Я нашел это для макета кадра. Надеюсь, поможет. http://stackoverflow.com/questions/8855034/cant-detect-gesture-on-a-framelayout-in-android – comrad

Смежные вопросы