动画列表视图中的特定行

时间:2011-12-16 12:16:20

标签: android listview animation

我的应用程序中有一个listView,在执行期间的某个时刻,我想突出显示一个特定的行。我找到了一些例子,但我一直在收到错误。这是我的代码:

public void animate(int pos){ //pos:position of the row in the list
    lv1=(ListView)findViewById(R.id.listView1);
    Animation animation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.scale);
    ((View)lv1.getItemAtPosition(pos)).startAnimation(animation);
}

和scale.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
</set>

如果有人可以帮助我,我会非常感激。

编辑:我想提供一些我刚发现的其他信息。我运行代码时遇到NullPointerException。以下行导致异常

((View)lv1.getItemAtPosition(pos))

我无法获取listView中的项目。我改变了我的程序如下:

public void animate(int pos){ //pos:position of the row in the list
    lv1=(ListView)findViewById(R.id.listView1);
    View v=lv1.getChildAt(pos);
    Toast.makeText(getBaseContext(),Boolean.toString((v==null)),Toast.LENGTH_SHORT).show();
}

它始终显示“true”。我不明白问题出在哪里。

1 个答案:

答案 0 :(得分:1)

我不确定这对你有什么帮助,但我发现你的代码对我有用,可以解决我的问题。我使用以下代码获得了相同类型的效果:

//Animation swipe to the right
View view = lv.getChildAt(pos);
Animation animation = AnimationUtils.loadAnimation(TaskMain.this, R.anim.slideright);
view.startAnimation(animation);

然后我想把它激活在我的区域。特别是对于我自己,我在手势上激活了。