gpt4 book ai didi

android - RelativeLayout 的旋转如何在 android 中工作?

转载 作者:行者123 更新时间:2023-11-29 01:33:18 25 4
gpt4 key购买 nike

我有以下相对布局(它的伪代码):

<RelativeLayout id="container">
<ImageView id="one" background="@color/Green"/>
<ImageView id="two" background="@color/White"/>
<ImageView id="three" background="@color/Yellow"/>
</RelativeLayout>

所以通常情况下,有一个绿色层,上面有一个白色层,然后在上面有一个黄色层。

目前黄色层在上面。现在,我通过将 RelativeLayout 在 Y 轴上旋转约 180 度来为其设置动画。理想情况下,我希望绿色层位于顶部,黄色位于背面。但我得到的是,RelativeLayout 旋转了 180 度,但黄色层仍留在前面。

那么,RelativeLayout 中的 rotationY 有什么作用呢?它是否仅将其从 +1 缩放到 -1,以产生旋转效果?我怎样才能真正旋转布局,以实现我上面提到的情况?

更新:

好的,这次为了看看到底发生了什么,我将 ImageView 更改为实心圆圈。现在,绿色层的半径为 30dp,白色层的半径为 20dp,黄色层的半径为 10dp。都有同一个中心。所以最初,所有三个实心圆都是可见的,因为它们的 z 深度和变化的半径。理想情况下,在 180 度旋转后,应该只有绿色可见。但是这三者再次可见。

似乎在旋转 180 度之前看到的任何东西都在旋转之后显示(它的镜像)。这是 rotationY 所做的,显示镜像吗?

更新:

那么,让我们忘掉动画吧。我只是继续在布局本身中为 RelativeLayout 设置 android:rotationY="180"。我只是得到一个镜像。我正在寻找不同的行为。

最佳答案

动画(和其他变换属性)在绘制后变换您的 View 。这意味着,您的 RelativeLayout 根据它们的 z 顺序绘制您的彩色圆圈(形成 api 级别 21,您可以使用 view.setZ(float) 指定它),默认情况下与它们出现在您的 xml 中相同,然后应用转型。这就是为什么您在旋转后仍然看到黄色的原因。

解决方法是调用

greenView.bringToFront() 

当旋转到90度时,使绿色最后绘制,从而可见。 See here

关于android - RelativeLayout 的旋转如何在 android 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30060297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com