【问题标题】:Animation during onClick() on ListView itemListView 项上 onClick() 期间的动画
【发布时间】:2015-10-02 17:56:11
【问题描述】:

当我单击我的 ListView 元素之一时,TextView 会显示(或消失),并且元素中四个组件的背景颜色会发生变化。

我的问题是它发生得非常快。有没有办法让这更顺畅?比如动画什么的。

我的 OnCLickListener 类:

private class TextViewOnClick implements TextView.OnClickListener {

    private TextView answerView;
    private TextView questionView;
    private Button tickButton;
    private Button crossButton;

    public TextViewOnClick(TextView answerView, TextView questionView, Button tick, Button cross) {
        this.answerView = answerView;
        this.questionView = questionView;
        this.tickButton = tick;
        this.crossButton = cross;
    }
    @Override
    public void onClick(View v) {
        if(answerView.getVisibility() == TextView.GONE) {
            answerView.setVisibility(TextView.VISIBLE);

            questionView.setBackgroundColor(Color.parseColor("#A6E7FF"));
            answerView.setBackgroundColor(Color.parseColor("#A6E7FF"));
            tickButton.setBackgroundColor(Color.parseColor("#A6E7FF"));
            crossButton.setBackgroundColor(Color.parseColor("#A6E7FF"));
        }
        else {
            answerView.setVisibility(TextView.GONE);

            questionView.setBackgroundColor(Color.parseColor("#FFFFFF"));
            answerView.setBackgroundColor(Color.parseColor("#FFFFFF"));
            tickButton.setBackgroundColor(Color.parseColor("#FFFFFF"));
            crossButton.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    }
}

【问题讨论】:

  • recyclerview 更好,尤其是在动画方面 - 在这里更好地使用 recyclerview

标签: android listview animation


【解决方案1】:

虽然您不能让颜色变化变慢,但您可以将视图的消失/显示变慢。

查看ViewPropertyAnimator 类: http://developer.android.com/reference/android/view/ViewPropertyAnimator.html

你会像这样使用它:

    if(answerView.getVisibility() == TextView.GONE) {
        answerView.setAlpha(0);
        answerView.setVisibility(TextView.VISIBLE);
        answerView.animate().alpha(1).setDuration(500).withEndAction(new Runnable(){
            @Override
            public void run(){
                 questionView.setBackgroundColor(Color.parseColor("#A6E7FF"));
                 answerView.setBackgroundColor(Color.parseColor("#A6E7FF"));
                 tickButton.setBackgroundColor(Color.parseColor("#A6E7FF"));
                 crossButton.setBackgroundColor(Color.parseColor("#A6E7FF"));
            }
        );
    }
    else { 
     ...//follow the template above
    }

它的作用(一步一步)是:

- 将视图设置为可见,但 alpha 为 0。这使组件对应用可见,但对用户不可见。

- 使视图动画化以使其对用户可见。 alpha(1) 表示该视图在动画结束时将完全不透明,setDuration(500) 表示动画将花费 500 毫秒(当然您可以更改此值)。

-在动画结束时,这使用withEndAction 来更改其他视图的颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多