Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何翻译画布并在正确的位置获得触摸事件_Android_Android Listview_Android Gesture - Fatal编程技术网

Android 如何翻译画布并在正确的位置获得触摸事件

Android 如何翻译画布并在正确的位置获得触摸事件,android,android-listview,android-gesture,Android,Android Listview,Android Gesture,我正在尝试创建一个自定义的AbsListView(覆盖ListView、GridView和HeaderGridView上的相同内容),该视图将根据外部因素(布局上移动的其他内容)重新定位其所有绘图和触摸事件 填充在这里不是一个选项,因为尝试控制AblistView位置的唯一方法是使用超级糟糕的方法smoothScrollBy(int-distance,int-duration),这给了我一个不同级别的问题,我正试图通过在屏幕的不同区域一起绘制来克服这些问题 当时我发现在屏幕的不同区域绘图非常简单

我正在尝试创建一个自定义的AbsListView(覆盖ListView、GridView和HeaderGridView上的相同内容),该视图将根据外部因素(布局上移动的其他内容)重新定位其所有绘图和触摸事件

填充在这里不是一个选项,因为尝试控制AblistView位置的唯一方法是使用超级糟糕的方法
smoothScrollBy(int-distance,int-duration)
,这给了我一个不同级别的问题,我正试图通过在屏幕的不同区域一起绘制来克服这些问题

当时我发现在屏幕的不同区域绘图非常简单:

   @Override
   protected void onDraw(Canvas canvas) {
      canvas.translate(0, 400);
      super.onDraw(canvas);
   }
但是触摸事件不会被转换,所有的触摸都是400像素以上。因此,我也尝试用以下方法来翻译触摸:

   @Override
   public boolean dispatchTouchEvent(MotionEvent ev) {
      ev.offsetLocation(0, -400);
      return super.dispatchTouchEvent(ev);
   }
它确实相对有效,1)在项目上单击调用get,2)视图根据主题更改颜色
android:state_pressed=“true”
,但不会调用
Up
Cancel
touch evens,并且视图不会将图形刷新回默认颜色

我还将进一步分析,但我不确定带有按钮和手势检测器的复杂定制适配器是否有效

因此,问题是:
我如何翻译图纸并仍然正确地获取触摸事件?

您是否找到了解决问题的方法?“我在保持触摸位置方面也有类似的问题。@NewGuy抱歉,没有。显然这是不可能的。”。谷歌刚刚发布了一个设计应用程序compat库,它似乎以一种不同的方式实现了这一点。谢谢你回到我身边。你有推荐信吗?我的问题也贴在这里:@NewGuy主要是这个班级