gpt4 book ai didi

android - 如何获得与具有 2 个旋转圆圈的 ICS 相同的未定义 ProgressBar?

转载 作者:IT老高 更新时间:2023-10-28 22:03:27 24 4
gpt4 key购买 nike

我目前正在编写一个开源项目,旨在将著名的 Holo 主题移植到以前的 Android 版本(自 1,6 起!!!)

一切正常,我为自己的工作感到非常自豪,但我现在面临的问题是让 ProgressBar 看起来完全像 ICS 一样。

我使用的xml代码与Android源码相同:(progress_medium_holo.xml)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/spinner_48_outer_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="1080" />
</item>
<item>
<rotate
android:drawable="@drawable/spinner_48_inner_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="720"
android:toDegrees="0" />
</item>
</layer-list>

使用相同的png:

spinner_76_outer_holo.png 和 spinner_76_inner_holo.png

enter image description here白色图片 => enter image description here

但不幸的是,我只得到一个圈......

如果您不明白我的意思,您可以在 ICS 之前的设备上试用此应用:

https://play.google.com/store/apps/details?id=com.WazaBe.HoloDemo

完整来源:https://github.com/ChristopheVersieux/HoloEverywhere

非常感谢您的帮助

enter image description here

最佳答案

刚刚在这里找到了答案!

https://stackoverflow.com/a/8697806/327402

非常有用的帖子!

确实存在平台限制,尽管可能不是您想的那样。问题是在 API11 之前的 RotateDrawable 中有一些粗略的代码,要求动画通过检查 toDegrees 是否大于 fromDegrees 来顺时针旋转>;如果不是,则两者被迫相等。如果您修改示例以使第二个项目向前移动(从 0 到 720,甚至从 -720 到 0),则两个图像在所有平台上都可以正常动画;尽管我意识到这违背了您的目标。

看看 Google Codesearch 的 RotateDrawable.inflate() 的缓存版本,它是用于将 XML 转换为对象的方法的 2.3 版本,你会看到什么我是说。

RotateDrawable.java ...违规代码在第 235 行附近...

    float fromDegrees = a.getFloat(
com.android.internal.R.styleable.RotateDrawable_fromDegrees, 0.0f);
float toDegrees = a.getFloat(
com.android.internal.R.styleable.RotateDrawable_toDegrees, 360.0f);

toDegrees = Math.max(fromDegrees, toDegrees); //<--There's the culprit

这需要一个 XML block ,就像您在那里的第二个项目一样,并将其转换为一个 RotateDrawable 最终得到相同的 fromDegrees 值toDegrees (在您的情况下为 720),导致图像静止不动。您可以通过将起始值设置为某个值而不是 360 的倍数(如 765)来进行可视化测试。您会看到图像仍然没有动画,而是旋转到初始坐标。

Honeycomb/ICS 源代码中删除了这个尴尬的检查,这就是为什么您可以在这些平台上进行向后旋转。此外,看起来没有办法从 Java 代码中设置这些值,因此您的 future 可能会使用自定义 RotateDrawableCompat :)

HTH

关于android - 如何获得与具有 2 个旋转圆圈的 ICS 相同的未定义 ProgressBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722168/

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