逐个淡出ListViews itemRows的动画

时间:2015-11-21 17:43:36

标签: android listview animation fadeout listitem

我有一个listView,6 itemRows淡入(动画)onStart。

我希望它们能够逐渐消失,但作为一个新手最终会像这样做。 Timer和handler方法似乎还可以,但是在200ms的时间间隔之后无法分别完成六个视图。

请有人建议更好的方法。

private void doLVAnimIndicator() {

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {

                        mLevelslist.getChildAt(0).setBackgroundResource(R.drawable.indicator_bg_btn);
                        mLevelslist.getChildAt(1).setBackgroundResource(R.drawable.indicator_bg_btn);
                        mLevelslist.getChildAt(2).setBackgroundResource(R.drawable.indicator_bg_btn);
                        mLevelslist.getChildAt(3).setBackgroundResource(R.drawable.indicator_bg_btn);
                        mLevelslist.getChildAt(4).setBackgroundResource(R.drawable.indicator_bg_btn);
                        mLevelslist.getChildAt(5).setBackgroundResource(R.drawable.indicator_bg_btn); 
                    }
                }, 160);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                 mLevelslist.getChildAt(5).setBackgroundResource(R.color.outline);   
                    }
                }, 1300);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                        mLevelslist.getChildAt(4).setBackgroundResource(R.color.outline);
                    }
                }, 1375);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                        mLevelslist.getChildAt(3).setBackgroundResource(R.color.outline);
                    }
                }, 1450);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                        mLevelslist.getChildAt(2).setBackgroundResource(R.color.outline);
                    }
                }, 1525);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                        mLevelslist.getChildAt(1).setBackgroundResource(R.color.outline);
                    }
                }, 1600);

                mLevelslist.postDelayed(new Runnable() {
                    public void run() {
                        mLevelslist.getChildAt(0).setBackgroundResource(R.color.outline);
                    }
                }, 1675);

         return;
}

1 个答案:

答案 0 :(得分:0)

使用AlphaAnimation和View.startAnimation方法为视图设置动画。

for (int i = 0; i < 6; i++) {
    AlphaAnimation a = new AlphaAnimation(1, 0);
    a.setDuration(<duration>)
    a.setStartOffset(i * duration + i * offset);
    mLevelslist.getChildAt(i).startAnimation(a);
}