0

我必须从互联网上提取图像并将它们应用为 LinearLayout 的背景 - 有可能吗?我还没有看到任何合适的方法。

4

3 回答 3

0

只需使用BitmapFactory, 加载您的图像(如果需要,调整其大小),使用BitmapDrawable并应用它LinearLayout.setBackgroundDrawable()

于 2012-04-19T13:41:13.507 回答
0

将图像视图设置为线性布局的背景,即:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageView android:id="@+id/myimageview"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"/>
</LinearLayout>

然后,在您的 Java 中:

ImageView mImageView = (ImageView)findViewById(R.id.myimageview);

Bitmap bmImg;

URL myFileUrl = put in your url here;          
try {
       myFileUrl= new URL(fileUrl);
} catch (MalformedURLException e) {
     // TODO Auto-generated catch block
       e.printStackTrace();
}
try {
       HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
       conn.setDoInput(true);
       conn.connect();
       InputStream is = conn.getInputStream();

       bmImg = BitmapFactory.decodeStream(is);
       mImageView.setImageBitmap(bmImg);
} catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
}

希望这可以帮助。另外,请参阅此参考资料(我在其中获得了图像下载代码)。

于 2012-04-19T13:46:35.883 回答
0

当然。

只需获取图像的 InputStream:

InputStream is = (InputStream) new URL(url).getContent();

从流中获取 Drawable:

Drawable d = Drawable.createFromStream(is, "src name");

然后设置LinearLayout Background Drawable:

linearLayout.setBackgroundDrawable(d);

这实际上直接从流中设置图像。您可能想使用 ASyncTask 在后台拉下可绘制对象并在之后进行设置:http: //developer.android.com/reference/android/os/AsyncTask.html

您可能还想研究惰性加载器: http ://evancharlton.com/thoughts/lazy-loading-images-in-a-listview

于 2012-04-19T13:48:52.530 回答