Android记录单点和多点触控的位置

本文介绍了如何在Android中记录单点和多点触控的位置。通过监听TextView并利用GestureDetector和OnTouchListener,尤其是通过event.getPointerCount()判断触控点的数量,以及ACTION_POINTER_DOWN来跟踪第二个触控点,实现触控轨迹的详细记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了完成可以记录滑动和缩放的位置信息,尝试了包括GestureDector类和OnTouchListener类,虽然能够很好的识别具体手势,可是在区分单点还是多点触控方面还是有些欠缺。

本文对TextView进行监听,在position中显示记录触控的痕迹。

tv = (TextView)findViewById(R.id.textv);
position = (TextView)findViewById(R.id.position);


通过对event.getPointerCount()来对点的数目进行判断

    通过ACYION_POINTER_DOWN对第二个点进行记录,同时记得用这个参数时要配合ACTION_MASK在switch语句

tv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()& MotionEvent.ACTION_MASK){
                    case MotionEvent.ACTION_DOWN:
                        position.setText("N1S"+" ("+<span style="font-family: Arial, Helvetica, sans-serif;">event.getX()</span><span style="font-family: Arial, Helvetica, sans-serif;">+" , "+</span><span style="font-family: Arial, Helvetica, sans-serif;">event.getY()</span><span style="font-family: Arial, Helvetica, sans-serif;">+")");</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>                        break;
                    case MotionEvent.ACTION_POINTER_DOWN:
                        position.append("N2S"+" ("+<span style="font-family: Arial, Helvetica, sans-serif;">event.getX()</span><span style="font-family: Arial, Helvetica, sans-serif;">+" , "+</span><span style="font-family: Arial, Helvetica, sans-serif;">event.getY()</span><span style="font-family: Arial, Helvetica, sans-serif;">+")");</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>                        break;
                    case MotionEvent.ACTION_MOVE:
                        if(event.getPointerCount()<2 ){
                        position.append("M" + " (" + event.getX() + " , " + event.getY() + ")");}
                        else{
                            position.append("TM"+" (" + event.getX(0) + " , " + event.getY(0) + ")"
                                    +" (" + event.getX(1) + " , " + event.getY(1) + ")");
                        }
                }
                return true;
            }
        });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值