在以下链接的帮助下,我已经在我的自定义相对布局中成功实现了缩放和平移/拖动功能。
1)。一个优秀的教程——多点触控的意义
2)。(SO链接)扩展RelativeLayout,并覆盖dispatchDraw()创建一个可缩放的ViewGroup
3)。(SO 链接)在自定义布局中滚动/平移或拖动
这是我的完整工作代码。
https://gist.github.com/pandeyGitHub/6805840。
我的 layout.xml 看起来像这样:-
<com.myzoomproject.views.ZoomableRelativeLayout
android:id="@+id/root_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.myzoomproject.views.CustomViewPager
android:id="@+id/pager_test2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.myzoomproject.views.ZoomableRelativeLayout>
我的自定义相对布局包含一个 viewpager,我的 viewpager 中的每个页面都包含 2-4 个图像视图(一个全屏图像视图和几个可点击的较小图像视图)。缩放和平移页面效果很好。
问题 1: 但不知何故,我无法为平移功能设置边界限制。页面将在过度滚动时从屏幕上移开。
问题 2: 此外,似乎图像视图仅在绘图中平移/翻译,但实际上没有。因为当它们从屏幕上的原始位置移开时,它们不再可点击,并且可点击坐标仅局限于其原始位置。
我在 SO link 1、link 2、link 3上查找了几个类似的问题,但它们都基于 ImageView 缩放而不是自定义布局缩放。
所以与他们不同的是,我在 ZoomableRelativeLayout 中没有对我的图像视图的引用。引用 Imageview、读取位图和显示它们由其他类(MyPagerActivity 和 MyPagerFragment 类)负责。此外,上述链接中的解决方案依赖于矩阵转换,在我的情况下我可能无法使用。
期待在这方面的任何帮助。
谢谢。