首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪<TextView>上的触摸计数

跟踪<TextView>上的触摸计数
EN

Stack Overflow用户
提问于 2012-05-11 04:56:29
回答 1查看 889关注 0票数 1

感谢您抽出时间来看这个问题。我正在尝试一些android编程,但遇到了麻烦;我不确定如何解决它。仅当触摸计数为奇数时,我才尝试激活特定实体的动画。这就是touchCount%2 != 0

代码语言:javascript
复制
public boolean onTouch(View v, MotionEvent event){

    ArrayList<TextView> textToDance = new ArrayList<TextView>();
    textToDance.add((TextView)findViewById(R.id.CAD5));
    textToDance.add((TextView)findViewById(R.id.CAD10));
    textToDance.add((TextView)findViewById(R.id.CAD20));
    textToDance.add((TextView)findViewById(R.id.CAD50));
    textToDance.add((TextView)findViewById(R.id.CAD100));

    switch (event.getAction()){
        case MotionEvent.ACTION_DOWN:
            for(TextView txtAnimate: textToDance){

                if(event.getRawX()<= txtAnimate.getX()+txtAnimate.getMeasuredWidth() && event.getRawX()>=txtAnimate.getX()){
                    if(event.getRawY()<= txtAnimate.getY()+105+txtAnimate.getMeasuredHeight() && event.getRawY()>=txtAnimate.getY()+105){
                        helpAnimate(txtAnimate, 0);
                    }
                }

            }

        break;

        case MotionEvent.ACTION_MOVE:
            Log.d("MOVE","MOVE");
        break;

        case MotionEvent.ACTION_UP:
            Log.d("UP","UP");
        break;

        default:
            break;
    }
    return true;
}

我试图实现一个HashMap,但是这个映射重置了调用onTouch的所有内容。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-11 05:30:55

首先,您希望在onTouch方法之外初始化数组。

代码语言:javascript
复制
ArrayList<TextView> textToDance = new ArrayList<TextView>();
textToDance.add((TextView)findViewById(R.id.CAD5));
textToDance.add((TextView)findViewById(R.id.CAD10));
textToDance.add((TextView)findViewById(R.id.CAD20));
textToDance.add((TextView)findViewById(R.id.CAD50));
textToDance.add((TextView)findViewById(R.id.CAD100));

然后,您可以创建一个映射,并使用零计数值对其进行初始化,然后注册一个onTouchListener (假设它是您的Activity)

代码语言:javascript
复制
HashMap<TextView,Integer> myMap = new HashMap<TextView,Integer>();
for (TextView tv : textToDance){
    tv.setOnTouchListener(this);
    myMap.put(tv,0);

} 

那么在onTouch中你会有类似这样的东西...

代码语言:javascript
复制
public boolean onTouch(View v, MotionEvent event){
    switch (event.getAction()){
       case MotionEvent.ACTION_DOWN:
          if (myMap.contains(v)){
              myMap.put(v, myMap.get(v) + 1;
          }
       break;

这可能不是最好的方法,但它应该足以让你开始实现你想要做的事情。

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

https://stackoverflow.com/questions/10542008

复制
相关文章

相似问题

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