Android - 劫持点击[关闭]

厌伴老儒烹瓠叶,强随举子踏槐花。这篇文章主要讲述Android - 劫持点击[关闭]相关的知识,希望能为你提供帮助。
在我的一个项目中,我想收集类似点击热图的内容。在android中有什么办法吗?
【Android - 劫持点击[关闭]】我正在考虑在原始布局上方添加透明布局,并在那里“劫持”,然后将其传递给底层布局。但我无法弄明白。
那么,关于如何做到这一点的任何想法?
答案我自己就找到了解决方案。它位于onInterceptTouchEvent()功能。在切换到子视图之前,您可以覆盖它以拦截所有触摸事件。所以我创建了一个扩展FrameLayout的布局。这个布局包围了我的布局,就是这样:)
另一答案您是否只想捕获特定视图被点击的次数?或者您想要触摸的精确像素坐标?如果是前者,您可以为每个都覆盖onTouchListener,并为该视图增加一个计数器。
对于后者,我使用onTouchListener玩了一下,并且能够让它工作,但你可能不得不为每个视图设置一个onTouchListener,这应该不是什么大问题,但只是要保持记住除非有人有更好的方法。
vector2D.java

public class Vector2D { private float x; private float y; public Vector2D(float x, float y) { this.x = x; this.y = y; }public void setX(float x) { this.x = x; }public float getX() { return this.x; }public void setY(float y) { this.y = y; }public float getY() { return this.y; } }

main.Java
public class Main extends Activity implements OnTouchListener { /** Called when the activity is first created. * @return *///defined as class variable so it's accessible from onTouch() List< Vector2D> points; @Override public boolean onTouch(View v, MotionEvent event) { //adds a new coordinate to the list, //with the X and Y values of the touch points.add(new Vector2D(event.getX(), event.getY())); Log.d("TOUCH", "X:" + event.getX() + " Y:" + event.getY()); return true; }@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); points = new ArrayList< Vector2D> (); final LinearLayout ll = (LinearLayout)findViewById(R.id.linearlayout); final TextView pointsList = (TextView)findViewById(R.id.points_list); ll.setOnTouchListener(this); final Button listPoints = (Button)findViewById(R.id.list_points); listPoints.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { StringBuilder sb = new StringBuilder(); for (Vector2D vector : points) { sb.append( "X:" +vector.getX() + " " + "Y:" + vector.getY() + " "); } pointsList.setText(sb.toString()); } }); } }


    推荐阅读