1

我正在旋转一个FrameLayout,其中包含一个ImageView与图像。当我在旋转的FrameLayout上添加另一个Imageview比添加的ImageView还像往常一样默认旋转。Android FrameLayout/ImageView旋转问题

为了防止这一点,因为我需要添加的ImageView不能旋转,我旋转该ImageView以相反的角度从FrameLayout。

我使用以下代码旋转的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); 

我在旋转Ima geView使用以下代码:

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

任何帮助的解决方案/建议将不胜感激。

在此先感谢

+0

怎么样不在相同的框架内添加第二个视图,因为你不想旋转它,但只显示它?相反,您可以将它放在带有透明背景的浮动视图中,您是否尝试过? – mass

+0

@mass,我需要旋转第二个视图以及相同的框架,因此我在同一个框架内添加了第二个视图。但是如果框架已经旋转并且仅在上述场景中发生了这种情况,第二个视图才会旋转。 – Nitesh

+0

对不起,我不清楚你想要做什么。你想独立旋转第二个图像视图吗?或者你的问题是,当你将第二个图像视图添加到视图中时,它会旋转,因为视图已经旋转了?这对我来说似乎很直观。为什么不跟踪原始框架的旋转?如果你用更多的细节解释你真正想要的东西,我会帮你的。 – mass

回答

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); 

希望这将帮助你...

+0

独立旋转两个图像浏览我没有找到一个好主意,因此我旋转了框架。 – Nitesh

+0

好吧...然后做一件事...当你旋转180度的框架...旋转第二个图像在相同的程度相反的方向...然后它会看起来正确.. – Vennila

+0

我已经这样做了,但那不起作用。 if(mainFrm.getRotationX()!= 0) iv.setRotationX( - (mainFrm.getRotationX())); } – Nitesh