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中如何设置背景图才能填充整个屏幕?代码如下

Android - 如何创建具有圆角和平铺图像背景的视图?

如何更改 Android Leanback 库以支持背景视频而不是背景图像

Android自动旋转对话框但不是背景图像