旋转后切割ImageView顶部和buttom边

时间:2015-12-17 13:34:48

标签: android image rotation imageview

我按下按钮时旋转可缩放的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的宽度(仅限于显示尺寸)。

旋转后为什么不自动“匹配父”?如何强制它?

仅仅为了体验,我尝试了没有动画的旋转,但没有任何区别。

由于

1 个答案:

答案 0 :(得分:0)

好吧,看看你的方法。它会将您的实际身高和体重视为特定状态,因此如果您只是更改方向,则会重新创建imageview,但使用这些“已保存”参数,这就是更改方向后图像视图看起来很糟糕的原因

您需要使用'onOrientationChangeMethod'重新定义imageview个参数。

耐心阅读本指南:http://developer.android.com/guide/topics/resources/runtime-changes.html

然后:How to detect orientation change in layout in Android?

希望有所帮助