动态设置线性布局背景

时间:2011-10-04 10:53:27

标签: android android-layout android-widget

我想以下列方式动态设置线性布局背景:

  1. 通过XML解析从网址获取图片,然后将该图片存储到SD卡中。

  2. 现在图像保存到SD卡中。

  3. 在应用程序中将该图像设置为线性布局背景。

  4. 现在我陷入了第三步。有人可以帮忙吗?

7 个答案:

答案 0 :(得分:47)

使用此:

Bitmap bmImg = BitmapFactory.decodeStream(is);
BitmapDrawable background = new BitmapDrawable(bmImg);
linearLayout.setBackgroundDrawable(background);

同时检查:How to convert a Bitmap to Drawable in android?

答案 1 :(得分:4)

我这样做了:

private RelativeLayout relativeLayout;

<强>的onCreate

relativeLayout= (RelativeLayout)findViewById(R.id.relativeLayout);

new LoadBackground("http://www.tmonews.com/wp-content/uploads/2012/10/androidfigure.jpg",
            "androidfigure").execute();
后台

AsyncTask 加载图片:

private class LoadBackground extends AsyncTask<String, Void, Drawable> {

    private String imageUrl , imageName;

    public LoadBackground(String url, String file_name) {
        this.imageUrl = url;
        this.imageName = file_name;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Drawable doInBackground(String... urls) {

        try {
            InputStream is = (InputStream) this.fetch(this.imageUrl);
            Drawable d = Drawable.createFromStream(is, this.imageName);
            return d;
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
    private Object fetch(String address) throws MalformedURLException,IOException {
        URL url = new URL(address);
        Object content = url.getContent();
        return content;
    }

    @Override
    protected void onPostExecute(Drawable result) {
        super.onPostExecute(result);
        relativeLayout.setBackgroundDrawable(result);
    }
}

希望这会对你有所帮助。

答案 2 :(得分:4)

API已弃用,您可以使用以下代码

BitmapDrawable background = new BitmapDrawable(getResources(), bitmapImage);
linearLayout.setBackground(background);

答案 3 :(得分:3)

更简单的方法:

BitmapDrawable d = new BitmapDrawable("/sdcard/data/image.jpg");
linearLayout.setBackgroundDrawable(d);

答案 4 :(得分:0)

尝试使用它:

Bitmap bmpOriginal = BitmapFactory.decodeResource(getResources(), R.drawable.img);
BitmapDrawable bmpBackground = new BitmapDrawable(getResources(), bmpOriginal)

答案 5 :(得分:0)

使用@ Deimos的答案,但是像这样,因为现在不推荐使用某些方法

Bitmap bmImg = BitmapFactory.decodeStream(is);
BitmapDrawable background = new BitmapDrawable(context.getResources(), bmImg);
linearLayout.setBackground(background);

答案 6 :(得分:-1)

您还可以从drawable文件夹中设置图像。

yourView.setBackgroundResource(R.drawable.FILENAME);

将FILENAME设置为背景图像。