通过代码动态更改活动背景

时间:2013-08-02 09:28:06

标签: java android

我需要在一些USER ACTIOn之后更改当前活动的背景

跟随id我编写的代码

Drawable d = new BitmapDrawable(getResources(),readBitmap(Uri.fromFile(new File(getFilesDir(), imageName))));
this.findViewById(android.R.id.content).setBackground(d);
this.findViewById(android.R.id.content).refreshDrawableState();
public Bitmap readBitmap(Uri selectedImage) {
    Bitmap bm = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 1; // reduce quality
    ParcelFileDescriptor pFileDescriptor = null;
    try {
        //fileDescriptor = this.getContentResolver().openAssetFileDescriptor(selectedImage, "r");
        pFileDescriptor = this.getContentResolver().openFileDescriptor(selectedImage, "r");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        try {
            bm = BitmapFactory.decodeFileDescriptor(pFileDescriptor.getFileDescriptor(), null, options);
            pFileDescriptor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return bm;
}

这是content.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_img_body"
    tools:context=".MainActivity" >

此外,如果我删除XML中设置的背景,它工作得很好!! 我很困惑

MOdified XML(Working)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".MainActivity" >

任何人都可以建议。

谢谢是提前

2 个答案:

答案 0 :(得分:1)

尝试this.findViewById(android.R.id.content).setBackgroundDrawable(d);

答案 1 :(得分:0)

首先为您的布局提供ID

第二个findviewbyid那个布局

第三个layout.setBackgroundResource(getResources()。getDrawable(R.drawable.ready));

问题解决!!!