我按下按钮时旋转可缩放的ImageView,如下所示:
Float cur_angle = imageView.getRotation();
imageView.setPivotX(imageView.getWidth() / 2);
imageView.setPivotY(imageView.getHeight() / 2);
imageView.animate().rotation(cur_angle + add_angle).setDuration(delay);
imageView.invalidate();
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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=".MainActivityFragment"
android:id="@+id/rel_layout" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/map_view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/store_map"
android:scaleType="centerCrop"
android:layout_alignParentBottom="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rotate"
android:id="@+id/rotate_right"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
旋转90度(add_angle = 90)后,如果我放大以使图像在Y轴上足够大,则图像会在顶部和底部被剪切。似乎imageView垂直尺寸保持等于或小于原始imageView宽度,该宽度仅限于它所在的RelativeLayout的宽度(仅限于显示尺寸)。
旋转后为什么不自动“匹配父”?如何强制它?
仅仅为了体验,我尝试了没有动画的旋转,但没有任何区别。
由于
答案 0 :(得分:0)
好吧,看看你的方法。它会将您的实际身高和体重视为特定状态,因此如果您只是更改方向,则会重新创建imageview
,但使用这些“已保存”参数,这就是更改方向后图像视图看起来很糟糕的原因
您需要使用'onOrientationChangeMethod'重新定义imageview
个参数。
耐心阅读本指南:http://developer.android.com/guide/topics/resources/runtime-changes.html
然后:How to detect orientation change in layout in Android?
希望有所帮助