从网络url读取图片加载到imageview

来源:互联网 发布:java nio列子 编辑:程序博客网 时间:2024/06/05 02:44

首先涉及到几点:

1.从url读取图片代码(asyncTask)

2.生成图片drawable并加载到imageview


首先,一个大大的imageview是必不可少的啦

<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="com.example.read_image_from_url.MainActivity" >    <ImageView        android:id="@+id/imageview"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </ImageView></RelativeLayout>


我们先写好生成图片drawable的方法

Drawable LoadImageFromWebOperations(String url) {InputStream is = null;Drawable d = null;try {is = (InputStream) new URL(url).getContent();d = Drawable.createFromStream(is, "src name");return d;} catch (Exception e) {return null;}}

以 http://www.123raw.com/includes/templates/custom/images/123raw_mainpic_01.jpg 为例子,点击打开链接,查看网页源代码看到的内容就是getcontent()得到的信息。

我们通过drawable.createFromStream便可将jpg生成drawable,将它返回到结果。

由于google不允许在主线程中访问网络,我们必须用到thread或者AsyncTask访问网络,而对于像图片这样的小case,还是用轻量级的asyncTask比较高效率。

class load_image extends AsyncTask<String, Void, Drawable> {@Overrideprotected Drawable doInBackground(String... params) {Drawable drawable = LoadImageFromWebOperations(params[0]);return drawable;}@Overrideprotected void onPostExecute(Drawable result) {super.onPostExecute(result);ImageView imageView = (ImageView) findViewById(R.id.imageview);imageView.setImageDrawable(result);}}

在这里我们将url的地址以String的方式传入,在AsyncTask中调用LoadImageFromWebOperation生成drawable。

由于AsyncTask中doInBackground的return方式传递的值是交给onPostExecute的,而onPostExecute则是将异步处理得到的结果通知给主线程的,所以我们将drawable传递给后者,在里面声明imageview并加载drawable。

当然,写好这些之后,记得要在调用创建AsyncTask并启动

new load_image().execute("http://www.123raw.com/includes/templates/custom/image/123raw_mainpic_01.jpg");
微笑希望对大家有帮助

0 0
原创粉丝点击