当我单击其中一个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"));
}
}
}
答案 0 :(得分: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
更改其他视图的颜色。