我试图在我的应用程序中实现多点触控时,我以某种方式得到意想不到的结果。我永远不会获得多个指针的数据。我的手机上的多点触控确实有效,因为我可以用GestureDetector捏缩放浏览器并检测捏手势,但以下示例打印action=0 pointers=1
,无论我用多少手指触摸屏幕。
我需要在配置/ AndroidManifest或Activity创建中有什么东西
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.ll1).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG","onTouch action="+event.getAction()+" pointers="+event.getPointerCount());
return false;
}
});
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
问题是我在false
返回onTouch
,因此没有生成新的触摸事件。
在我的情况下,我意识到getPointerCount()
没有改变,因为它被称为MotionEvent.ACTION_DOWN
行动,这意味着它永远是一个。
解决方案是将它移动到MotionEvent.ACTION_MOVE
,如果移动时需要指针计数,或者在动作之外,如果触摸时需要指针计数,则移动到onTouch实现。我希望这可以帮助那些在我的案例中可能没有理解这一点的人。