动态设置线性布局背景

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

  1. 通过XML解析从Web URL获取图像,然后将该图像存储到SD卡中。

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

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

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

Solutions Collecting From Web of "动态设置线性布局背景"

用这个:

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

还要检查一下: 如何在Android中将Bitmap转换为Drawable?

我这样做了:

 private RelativeLayout relativeLayout; 

onCreate

 relativeLayout= (RelativeLayout)findViewById(R.id.relativeLayout); new LoadBackground("http://sofzh.miximages.com/android/androidfigure.jpg", "androidfigure").execute(); 

AsyncTask后台 加载图片:

 private class LoadBackground extends AsyncTask { 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); } } 

希望这会帮助你。

更简单的方法:

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

不推荐使用API​​,您可以使用以下代码

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

试着用这个:

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

使用@ Deimos的答案,但是像这样,因为现在有些方法已被弃用

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

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

 yourView.setBackgroundResource(R.drawable.FILENAME); 

将FILENAME设置为背景图像。