动画列表视图布局时遇到问题

Chr*_*rry 13 layout animation android listview

我希望listview中的项目从左到右一次一个地滑动.我在res/anim/slide_right.xml中有以下内容

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" />
</set>
Run Code Online (Sandbox Code Playgroud)

在我的ListActivity中的 onCreate方法中,我有:

LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.slide_right);
mList.setLayoutAnimation(controller);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到一个RuntimeException引起的Unknown layout animation name: set

我究竟做错了什么?

a2r*_*nus 34

我有同样的问题,我似乎解决了它.我认为这个问题与此类似:http://groups.google.com/group/android-developers/browse_thread/thread/2266e171b9b0cf17

我也在这里发布了我的答案(有一些编辑).您必须定义第二个XML文件,其中包含layoutAnimation元素:

"如果你想使用android:layoutAnimation(或使用loadLayoutAnimation)来应用动画,你似乎必须定义一个引用你的动画的额外XML文件(缩放,设置,翻译等......).你可以找到这里有一个例子:http://developerlife.com/tutorials/?p = 343.

例如,你的第二个xml文件看起来像这样(我们称之为example.xml):

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:delay="10%"
    android:animation="@anim/slide_right"
/>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在布局文件中引用此动画:

android:layoutAnimation="@anim/example"
Run Code Online (Sandbox Code Playgroud)

(或使用loadLayoutAnimation在您的代码中)

"

希望这可以帮助.

再见!


use*_*241 5

我不确定你是否已经找到了解决方案,但让我告诉你我找到解决方案的方式.

在你的动画文件夹中制作另一个Android xml.让它成为list_layout_controller.xml,如下所示

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:delay="20%"
        android:animationOrder="normal"
        android:animation="@anim/slide_right">
</layoutAnimation>
Run Code Online (Sandbox Code Playgroud)

现在,将list_layout_controller.xml(使用@anim表示法)设置为如下动画并运行:

LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.list_layout_controller); 
mList.setLayoutAnimation(controller); 
Run Code Online (Sandbox Code Playgroud)