首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >动态设置线性布局背景

动态设置线性布局背景
EN

Stack Overflow用户
提问于 2011-10-04 18:53:27
回答 7查看 53.6K关注 0票数 19

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

  1. 通过XML解析从web url获取图像,然后将该图像存储到SD卡。
  2. 现在将图像保存到SD卡。
  3. 将该图像设置为应用程序中的线性布局背景。

现在我被困在了第三步。有人能帮上忙吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-10-04 19:04:53

使用以下命令:

代码语言:javascript
复制
Bitmap bmImg = BitmapFactory.decodeStream(is);
BitmapDrawable background = new BitmapDrawable(bmImg);
linearLayout.setBackgroundDrawable(background);

还要检查一下:How to convert a Bitmap to Drawable in android?

票数 51
EN

Stack Overflow用户

发布于 2014-05-02 13:44:49

我已经这样做了:

代码语言:javascript
复制
private RelativeLayout relativeLayout;

onCreate

代码语言:javascript
复制
relativeLayout= (RelativeLayout)findViewById(R.id.relativeLayout);

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

AsyncTask to load image in background

代码语言:javascript
复制
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);
    }
}

希望这能对你有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2011-10-04 19:11:54

一种更简单的方法:

代码语言:javascript
复制
BitmapDrawable d = new BitmapDrawable("/sdcard/data/image.jpg");
linearLayout.setBackgroundDrawable(d);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7646766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档