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

时间:2015-07-12 08:14:54

标签: android android-listview android-animation

Google+ app screenshot

如果您在Android上使用过Google+应用,则必须注意到对帖子的评论是动画的,以便在每个ListView项目上使用 fadeIn和fadeOut 动画逐个显示评论。

我希望在每个ListView项目中为TextView等某些视图实现此类动画。

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

任何帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:1)

请使用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>

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

请更详细地浏览动画API ,您会找到有用的方法,例如setRepeatMode()setRepeatCount(),它们可以帮助您获得所需的结果。

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

希望它有所帮助。