我需要准备FrameLayout(包含比屏幕尺寸大得多的ImageView和其他ImageViews - 叠加),这必须是同时的:
对于滚动,我使用此处提供的解决方案:https://stackoverflow.com/a/6716638/2274709
我的代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<com.chrosciu.konferencja.VScroll android:layout_height="fill_parent"
android:layout_width="fill_parent" android:id="@+id/vScroll">
<com.chrosciu.konferencja.HScroll android:id="@+id/hScroll"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/planView"
android:src="@drawable/map"
android:scaleType="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</FrameLayout>
</com.chrosciu.konferencja.HScroll>
</com.chrosciu.konferencja.VScroll>
</RelativeLayout>
MainActivity.java:
...
private void rotate(float angle) {
FrameLayout frameLayout = (FrameLayout)findViewById(R.id.frameLayout);
frameLayout.setRotation(angle);
}
....
然而这会引起一些麻烦:FrameLayout在旋转后被裁剪,即使手动滚动也无法到达角落
即使我将FrameLayout的minHeight和minWidth设置为在旋转后放大它,结果仍然不能令人满意:
这似乎不是一个奇特的任务。我走对了路吗?有没有其他方法来实现这一目标?
答案 0 :(得分:0)
最后,我设法实现了一些可用的东西。这仍然不是我预期的100%,但足以达到我的目的。谢谢@pskink指导...
解决方案如下:
使用任何角度旋转ImageView后的这些假设,它将始终位于FrameLayout内部,永远不会被裁剪。