新波士顿的手势

时间:2016-08-19 11:05:29

标签: android gestures

我想问一些有关此代码的问题。我需要帮助

问题:

  1. 为什么他们以这种方式实施手势检测器界面 GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener
    这是我第一次看到像这样的界面

  2. myGesture=new GestureDetectorCompat(this,this);
    为什么他们从界面初始化一个对象?
    只有在我们使用匿名课程时才能做到这一点吗? 为什么他们使用(手势探测器紧凑)代替(手势探测器)? 我无法理解(this)关键字指的是什么 有谁可以向我解释一下? 以及如何在不使用(this)关键字的情况下初始化对象?

  3. 这行代码 myGesture.setOnDoubleTapListener(this);
    我无法理解其存在的重要性

  4. 代码:

    public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener {
    
    private TextView textView1;
    private GestureDetectorCompat myGesture;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1= (TextView) findViewById(R.id.textView1);
        myGesture=new GestureDetectorCompat(this,this);
        myGesture.setOnDoubleTapListener(this);
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent event) {
    
        return this.myGesture.onTouchEvent(event);
    }
    
    @Override
    public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
        textView1.setText(" onSingleTapConfirmed");
        return true;
    }
    
    @Override
    public boolean onDoubleTap(MotionEvent motionEvent) {
        textView1.setText("onDoubleTap");
        return true;
    }
    
    @Override
    public boolean onDoubleTapEvent(MotionEvent motionEvent) {
        textView1.setText("onDoubleTapEvent");
        return true;
    }
    
    @Override
    public boolean onDown(MotionEvent motionEvent) {
        textView1.setText("onDown");
        return true;
    }
    
    @Override
    public void onShowPress(MotionEvent motionEvent) {
    
        textView1.setText("onShowPress");
    }
    
    @Override
    public boolean onSingleTapUp(MotionEvent motionEvent) {
        textView1.setText(" onSingleTapUp");
        return true;
    }
    
    @Override
    public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        textView1.setText(" onScroll");
        return true;
    }
    
    @Override
    public void onLongPress(MotionEvent motionEvent) {
        textView1.setText(" onLongPress");
    }
    
    @Override
    public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        textView1.setText("onFling");
        return true;
    
    }
    }
    

    我搜索了这些问题,但没有找到任何有用的东西 有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

  

GestureDetectorCompat(上下文上下文,                  GestureDetector.OnGestureListener监听器)

活动是一个Context和一个GestureDetector.OnGestureListener,因此解释了(this, this)

  

void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener listener)

该接口也在Activity上实现,因此再次使用this

  

有人可以解释并初始化没有(this)关键字的对象

当然,你可以,但是制作内部的匿名类会使所有代码嵌套,而且看起来很混乱。

  

这行代码myGesture.setOnDoubleTapListener(this);无法理解其存在的重要性

它的意义?它检测到双击...