【问题标题】:android how can I clear the background image?android如何清除背景图像?
【发布时间】: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 秒后新的图像出现之前清除当前图像?

标签: android


【解决方案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)
猜你喜欢
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2018-04-08
  • 2012-11-13
  • 1970-01-01
  • 2011-01-09
  • 2012-06-06
  • 2015-10-18
相关资源
最近更新 更多