gpt4 book ai didi

android - 在 LayerDrawable 中旋转单个 RotateDrawable

转载 作者:太空狗 更新时间:2023-10-29 12:53:45 27 4
gpt4 key购买 nike

我正在构建一个带有某种罗盘的应用程序,我想使用 LayerDrawable 来绘制罗盘并为其设置动画。 LayerDrawable 由用于罗盘背景的静态背景图像和用于旋转部分的 RotateDrawable 组成。这是我的可绘制资源的 XML 代码:

compass_text.xml:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/compasstext"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%" />

compass_layers.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/compassbackground" />
<item android:drawable="@drawable/compass_text" />
</layer-list>

LayerDrawable 显示得很好,但我该如何旋转它呢?这是我试过的代码:

compassText = (RotateDrawable)getResources().getDrawable(R.drawable.compass_text);
compassText.setLevel(5000);

这什么都不做。我做错了什么?

最佳答案

您需要确保在设置关卡之前获取已膨胀的特定 Drawable,而不是从资源中获取通用 Drawable 对象。试试这个:

ImageView iv = (ImageView) findViewById(R.id.xxx); ////where xxx is the id of your ImageView (or whatever other view you are using) in your xml layout file
LayerDrawable lv = (LayerDrawable) iv.getDrawable();
compassText = (RotateDrawable) lv.getDrawable(1); //1 should be the index of your compassText since it is the second element in your xml file

compassText.setLevel(5000);

关于android - 在 LayerDrawable 中旋转单个 RotateDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141695/

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