问题很简单,但我无法找到一个好的解决方案。我的活动中有一个LinearLayout。根据用户的操作,我需要使布局的背景闪烁3次。这意味着它会将背景颜色从透明变为红色并向后变换3次。让我举个例子:
如何在Android中制作此功能?谢谢。
答案 0 :(得分:3)
您可以使用带有postDelayed方法的Handler。这看起来像这样:
Handler h = new Handler();
int count = 0;
Runnable r=new Runnable()
{
public void run()
{
if(count < 6){
if(count % 2 == 0){
count++;
layout.setBackground(RED);
h.postDelayed(r,500);
}else{
count++;
layout.setBackground(TRANSPARENT);
h.postDelayed(r,500);
}
}
}
};
h.post(r);
答案 1 :(得分:3)
@vidstige:我已经尝试了你的建议,但背景变化不流畅,有时它有时只有一半有时它没有
@Tim:你的解决方案看起来非常好,但我遇到了一些问题,因为它让我的工作变得有效,因为我不太擅长放弃java。
有效的解决方案是两个答案原则的组合。我不确定它是否是最好的,但在我的情况下效果非常好
Handler blinkHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
lay1.setBackgroundColor(Color.RED);
break;
case 1:
lay1.setBackgroundColor(Color.TRANSPARENT);
break;
}
super.handleMessage(msg);
}
};
for (int i=0; i<6; i++)
{
Message msg = new Message();
if(i % 2 == 0){
msg.what = 0;
}
else{
msg.what=1;
}
blinkHandler.sendMessageDelayed(msg, i*300);
}
谢谢大家的时间。
答案 2 :(得分:1)
使用ScheduledThreadPoolExecutor安排一项操作,使用View.setBackgroundColor(int color)
更改背景颜色为红色/透明。
使用schedule(Runnable command, long delay, TimeUnit unit)
方法,您可以一次安排所有颜色更改,稍后将按照正确的顺序执行这些更改。
答案 3 :(得分:0)
要使颜色闪烁,我记得在大学时代我们曾经在C ++图形库中设置了一个特定的位。我也试图眨眼背景,但我不想为此目的专门用一个线程。
如果根本没有备用,我会尝试在背景中放置一个交替颜色的.gif图像。