首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离散OnTouchListener事件

离散OnTouchListener事件
EN

Stack Overflow用户
提问于 2016-05-01 20:47:10
回答 2查看 87关注 0票数 2

当我只要求View.OnTouchListener()增加1时,它为什么工作得如此怪异呢?

代码语言:javascript
复制
    public class Clicker extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.clicker);
        TextView t = (TextView) findViewById(R.id.counter);
        ImageView v = (ImageView) findViewById(R.id.image);
        if (v != null) {

            v.setOnTouchListener(new View.OnTouchListener() {
                int count = 3123;
                @Override
                public boolean onTouch(View arg0, MotionEvent me) {
                    v.setSelected(me.getAction()== MotionEvent.ACTION_DOWN);
                    count = count + 1;
                    t.setText(String.format("%d",count));
                    return true;
                }
            });
        }
    }
}

1点击增量2或3分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-01 21:05:24

onTouch方法用于许多不同的触摸事件,包括ACTION_DOWN、ACTION_MOVE和ACTION_UP。只需单击按钮,此方法就会被调用两次,一次用于向下按压,一次是当您的手指被提起时。为了在按下按钮时只计算一次,您需要编写如下内容:

代码语言:javascript
复制
v.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN){
            count += 1;
        }
        return true;
    }
});
票数 1
EN

Stack Overflow用户

发布于 2016-05-01 21:01:17

方法:

onTouch(View arg0, MotionEvent me)

每次触摸事件都会被调用。对于点击,您将收到两个事件MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP,如果您移动手指,您也可以收到一个MotionEvent.ACTION_MOVE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36971765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档