android如何清除背景图像?
Posted
技术标签:
【中文标题】android如何清除背景图像?【英文标题】:android how can I clear the background image? 【发布时间】:2016-11-23 02:46:36 【问题描述】:我想在显示新的背景图像之前清除当前的背景图像。我也尝试过 setBackgroundResource(0) 和 setBackgroundColor(Color.TRANSPARENT) ,但它不起作用。
Java:
public void decideclick()
decidebutton = (Button) findViewById(R.id.decideimg);
resultview = (ImageView) findViewById(R.id.imageView);
resultview2 = (ImageView) findViewById(R.id.imageView2);
decidebutton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
resultview.setBackgroundResource(0);
resultview2.setBackgroundColor(Color.TRANSPARENT);
SystemClock.sleep(2000);
if(player_choose == 5)
resultview.setBackgroundResource(R.drawable.abc);
else if(player_choose == 2)
resultview.setBackgroundResource(R.drawable.edf);
else if(player_choose == 0)
resultview.setBackgroundResource(R.drawable.ghi);
);
结果是当前的imageView和imageView2没有消失,2秒后新的图片出来了。为什么 setBackgroundResource(0) 不起作用?
【问题讨论】:
可以用这个吗?view.setVisibility(View.GONE);
和 view.setVisibility(View.INVISIBLE);
主线程不要休眠
tachyonflux,我不明白。为什么我不应该让线程休眠?
我改变了 resultview.setBackgroundResource(0);进入 resultview.setBackgroundResource(R.drawable.testing); testing.jpg 没有出来。所以,我认为问题来自 SystemClock.sleep(2000);但为什么我不应该让线程休眠?以及如何在 2 秒后新的图像出现之前清除当前图像?
【参考方案1】:
这很可能是因为您在线程有机会重绘该视图之前处于休眠状态。在处理完此特定消息之后,您将不会看到更改,这会让 UI 有机会重绘。
试试这个:
resultview.setBackgroundResource(0);
new Handler().postDelayed(new Runnable()
public void run()
if(player_choose == 5)
resultview.setBackgroundResource(R.drawable.abc);
else if(player_choose == 2)
resultview.setBackgroundResource(R.drawable.edf);
else if(player_choose == 0)
resultview.setBackgroundResource(R.drawable.ghi);
, 2000);
【讨论】:
顺便说一句,public void run() 是多余的吗? 如果您使用 Lambda 兼容性(RetroLambda 或 Java 8)运行,您可以这样做postDelayed(() -> [code here], 2000)
以上是关于android如何清除背景图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何使带有自定义背景图像的按钮在Android中显示点击动画
android开发xml中如何设置背景图才能填充整个屏幕?代码如下