Android FrameLayout / ImageView轮换问题

时间:2015-10-17 12:38:50

标签: android image rotation android-imageview android-framelayout

我正在旋转FrameLayout,其中包含带有图像的Imageview。当我在旋转的FrameLayout上添加另一个Imageview时,添加的imageview也会像往常一样默认旋转。

为了防止这种情况,因为我需要添加不再旋转的ImageView,我将从FrameLayout以反向角度旋转ImageView。

我正在使用以下代码旋转FrameLayout:

(1)旋转:

    float angle = mainFrm.getRotation();
    if (angle == 0) {
        angle = 360;
    }
    angle = angle - 90;
    mainFrm.setRotation(angle);

(2)垂直翻转

    float angle = mainFrm.getRotationX();
    if (angle == 0) {
        angle = 360;
    }
    angle = angle - 180;
    mainFrm.setRotationX(angle);

(3)水平翻转

    float angle = mainFrm.getRotationY();
    if (angle == 0) {
        angle = 360;
    }
    angle = angle - 180;
    mainFrm.setRotationY(angle);

我使用以下代码旋转ImageView:

    if(mainFrm.getRotation()!=0)
    {
        iv.setRotation(-(mainFrm.getRotation()));
    }
    if(mainFrm.getRotationX()!=0)
    {
        iv.setRotationX(-(mainFrm.getRotationX()));
    }
    if(mainFrm.getRotationY()!=0)
    {
        iv.setRotationY(-(mainFrm.getRotationY()));
    }

现在我面临的问题是当我第一次旋转框架(270度),然后垂直翻转(180度)时,在向旋转的框架添加ImageView之后,它也会旋转ImageView。

这里我也附上了图片。 这就是问题

enter image description here

我需要像这样的解决方案

enter image description here

任何帮助/建议都将受到高度赞赏。

提前致谢

1 个答案:

答案 0 :(得分:0)

我的Framelayout就像..

<FrameLayout android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="#33ffff">
    <ImageView android:id="@+id/image1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/ic_launcher"/>

    <ImageView android:id="@+id/image2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:src="@drawable/ic_launcher"/>
</FrameLayout>

我的java代码是,

mFrame = (FrameLayout) findViewById(R.id.frame);
    mImage1 = (ImageView) findViewById(R.id.image1);
    mImage2 = (ImageView) findViewById(R.id.image2);
    float angle = mFrame.getRotation();
    if(angle == 0) {
        angle = 180;
    }
    mFrame.setRotation(angle);
    mImage2.setRotation(-angle);

希望这会对你有帮助......