gpt4 book ai didi

java - Android 动画 startOffset 损坏或错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:41 26 4
gpt4 key购买 nike

我直接从 android 文档中获取了一些动画 xml,并且作为据我所知,它在我的 2.1 update 1 模拟器或我的 2.1 更新 1 Galaxy S 设备。

具体来说,我正在尝试创建一个动画来使 View 脉动(即在一个动画中使其变小然后变大)这是非常简单的标记:

<?xml version="1.0" encoding="utf-8"?> 
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:fromXScale="1.0"
android:toXScale="0.5"
android:fromYScale="1.0"
android:toYScale="0.5"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000" />
<set android:startOffset="1000">
<scale
android:fromXScale="0.5"
android:toXScale="1.0"
android:fromYScale="0.5"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000" />
</set>
</set>

所以我想要实现的是将 View 的大小缩小到一秒钟内减半,然后将其恢复到原来的状态超过一秒钟的大小。因此,重新迭代,两秒钟后它应该从原始 -> 半尺寸 -> 原始。

实际发生的是它立即捕捉到 View 大小的一半(即使 fromX/YScale 为 1.0)然后在两秒内执行动画然后恢复到原始大小。

其他人可以快速尝试一下吗?如果其他人看到此行为我会把它作为一个错误提交。我简直不敢相信如此基本的东西可以被打破!?

此外,在“Tween Animation”标题下复制此动画本页http://developer.android.com/guide/topics/graphics/2d-graphics.html逐字逐句也不会按照页面上的说明进行动画处理。似乎以完全相同的方式被打破!

有人有什么想法吗?

谢谢!

安迪。

最佳答案

我最近发现并且对您的动画的不良行为负有部分责任的事实是 <set> 中使用了许多 XML 属性。标签不起作用!

在您的代码示例中,您有 <set android:startOffset="1000">

由于一个荒谬的错误/缺陷,Android 将忽略此属性,这将导致您的第二个 child <set>与您的 parent 同时开始的动画 <set>

更令人沮丧的是这个属性在代码中以编程方式工作,setStartOffset()但不是在 XML 中。

我花了几个令人沮丧的时间来弄清楚哪些属性在代码和 XML 中适用于 AnimationSet s 并在此处提交错误报告/问题:Issue 17662

总结:

setRepeatCount() / android:repeatCount

This attribute (as well as repeatMode) does not work in code or XML. This makes repeating an entire set of animations difficult.

setDuration()/android:持续时间

Setting this on an AnimationSet in code WORKS (overrides all durations of children animations), but not when included in the tag in XML

setFillAfter()/android:fillAfter

This works in both code and XML for the tag. Strangely I have gotten it to also work without the need to set fillEnabled to true.

setFillBefore()/android:fillBefore

Seems to have no effect/ignored in both code and XML

setFillEnabled()/android:fillEnabled

Seems to have no effect/ignored in both code and XML. I can still get fillAfter to work even without including fillEnabled or setting fillEnabled to false.

setStartOffset()/android:startOffset

This works only in code and not XML.

不用说,这会导致很多不必要的挫败感。

关于java - Android 动画 startOffset 损坏或错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014331/

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