如何为每个 ListView 项目中的视图设置动画?

How to animate views within each ListView items?

如果您在 Android 上使用过 Google+ 应用程序,您一定已经注意到帖子上的评论是动态的,使用 淡入淡出 每个 ListView 项目上的动画。

我想在我的每个 ListView 项目中为某些视图(如 TextView 等)实现这种类型的动画。

我可以实现 fadeIn 和 fadeOut 动画部分,但问题是我在哪里放置它的动画代码每个膨胀的 ListView 项目独立工作

如有任何帮助,我们将不胜感激。提前致谢。

请使用 BaseAdapter 并将必要的动画代码放入您的 getView() 方法中。

只需膨胀视图并在视图第一次膨胀时启动动画。 (提示 - 当 convertView == null

使用 ViewHolder 模式来唯一地保存单个列表项的每个元素,并启动每个列表项中不需要的任何 View 动画。

要启动动画,请在 XML 中创建一个动画并像这样启动动画,

                Animation anim = AnimationUtils.loadAnimation(this, R.anim.slide_up);
                anim.setInterpolator(new DecelerateInterpolator());
                anim.setDuration(500);
                anim.setStartOffset(100);
                anim.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        progress.setVisibility(View.INVISIBLE);
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });

                progress.startAnimation(anim);

让您了解如何在 XML、

中创建动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <alpha
        android:duration="200"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

    <translate
        android:duration="200"
        android:fromYDelta="0%p"
        android:toYDelta="5%p" />
</set>

您可以使用动画集将多个动画组合在一起并同时播放。

还请更详细地探索 Animation API,您会发现 setRepeatMode()setRepeatCount() 等有用的方法,它们会对您有所帮助达到预期的效果。

此外,您不需要两个单独的 TextView,您可以使用一个。正确使用动画监听器即可。

希望对您有所帮助。