Android onTouch 方法 和onTouchEvent 方法

onTouch 是将触摸屏运动事件传递到目标视图,或查看是否是目标。‘

onTouch方法是view设置触摸时间的方法,结合OnTouchListener 使用,

下面是常见的2中按压的方法,

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {

    private LinearLayout linearLayout;
    private Button button;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 方法一
        linearLayout = findViewById(R.id.main);
        linearLayout.setOnTouchListener(this);
        // 方法二
        button = findViewById(R.id.btn);
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    Toast.makeText(MainActivity.this, "按压了", Toast.LENGTH_SHORT).show();
                }
                return false;
            }
        });

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Toast.makeText(this, "按压了屏幕", Toast.LENGTH_SHORT).show();
                break;
        }

        return false;
    }
}

其实   MotionEvent有很多情况,ACTION_UP,ACTION_MOVE,ACTION_CANCEL等,写的时候会有提示的,字母就可以看出作用呢,就不再说了,

onTouchEvent

onTouchEvent方法是override 的Activity的方法。重新了Activity的onTouchEvent方法后,

当屏幕有touch事件时,此方法就会别调用

比如下面的代码触摸屏幕就会调用Toast --(onTouchEvent 在事件分发中处理activity和view 的,一般用在自定义view 中比较多一些,)

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Toast.makeText(this, "按压了屏幕", Toast.LENGTH_SHORT).show();
                break;
        }
        return true;
    }


}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值