这个问题很简单,但我无法找到一个好的解决方案。我在我的活动中有一个LinearLayout。根据用户的操作,我需要使我的Layout的背景闪烁3次。这意味着它将背景颜色从透明改变为红色并向后改变3次。我给大家举一个例子:动画LinearLayout背景在Android中闪烁
- 用户收到的问题和2个按钮的答案
- 用户按下错误的答案。包含该按钮的布局会改变其背景(透明 - 红色,透明 - 红色,透明 - 红色 - 透明)三次。
我怎样才能使这个在Android的?谢谢。
这个问题很简单,但我无法找到一个好的解决方案。我在我的活动中有一个LinearLayout。根据用户的操作,我需要使我的Layout的背景闪烁3次。这意味着它将背景颜色从透明改变为红色并向后改变3次。我给大家举一个例子:动画LinearLayout背景在Android中闪烁
我怎样才能使这个在Android的?谢谢。
@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);
}
谢谢大家为你的时间。
使用ScheduledThreadPoolExecutor安排一个动作,使用View.setBackgroundColor(int color)
将背景颜色更改为红色/透明。
使用schedule(Runnable command, long delay, TimeUnit unit)
方法,你可以安排一次所有的颜色变化,他们稍后会以正确的顺序执行。
你可以使用一个处理程序与方法postDelayed。这将是这个样子:
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);
为了使颜色眨眼我记得有我们使用C++图形库设置,在大学生活的特定位。我也试图眨眼背景,但我不想为此目的奉献一条线索。
如果没有备用的一切,我会尽力把.gif图像与背景颜色交替。