Android开发中,载入网络server的图片是非经常常使用的。当然我们能够自己写server接口去实现,只是要做到server性能
优越的话,开发起来比較麻烦点。所以本博客要介绍Volley框架进行网络图片载入的demo!
Volley框架集成了
AsyncHttpClient和Universal-Image-Loader的长处。开发起来很的方便了。并且性能也不错!
我们能够去下载Volley.jar,这个是我在网上找的:点击打开链接
能够去下载这个我在网上找的哦!
注意:这些网络请求的。首先都要开启权限,我们打开AndroidManifest.xml
然后定义一个全局变量Context context;
增加代码:
<!-- 配置网络连接须要的属性 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
方法一:通过ImageRequest,进行载入
public void imageRequest(){ context = this; imageView = (ImageView)findViewById(R.id.imageView1); //创建一个RequestQueue对象 RequestQueue requestQueue = Volley.newRequestQueue(context); //创建ImageRequest对象 ImageRequest imageRequest = new ImageRequest( "http://c.csdnimg.cn/public/favicon.ico",//url new Response.Listener<Bitmap>() {//监听器Listener @Override public void onResponse(Bitmap response) { imageView.setImageBitmap(response); } //參数3、4表示图片宽高,Bitmap.Config.ARGB_8888表示图片每一个像素占领4个字节大小 }, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {//图片载入请求失败的回调Listener @Override public void onErrorResponse(VolleyError error) { imageView.setImageResource(R.drawable.ic_normal_pic); } }); //将ImageRequest载入到Queue requestQueue.add(imageRequest); }
方法二:通过ImageLoader。进行载入
介绍一下imageLoader,imageLoader不是继承ImageRequest。不是内部实现还是通过ImageRequest的,
ImageLoader来实现的优点是能够过滤反复的url,这样就提高了性能
public void imageLoad(){ context = this; imageView = (ImageView)findViewById(R.id.imageView1); //创建一个RequestQueue对象 RequestQueue requestQueue = Volley.newRequestQueue(context); //创建一个ImageLoader ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() { @Override public void putBitmap(String url, Bitmap bitmap) { } @Override public Bitmap getBitmap(String url) { return null; } }); //ImageListener ImageListener listener = ImageLoader.getImageListener(imageView, R.drawable.ic_normal_pic, R.drawable.ic_normal_pic); //url、listener、maxWidth、maxHeight imageLoader.get("http://c.csdnimg.cn/public/favicon.ico", listener, 200, 200); }
方法三:通过NetworkImageLoader
继承自ImageView的。具备ImageView控件的全部功能,而且在原生的基础之上增加了载入网络图片的功能。也就是
Volley框架提供的View
public void networkImageLoad(){ context = this; //创建一个RequestQueue对象 RequestQueue requestQueue = Volley.newRequestQueue(context); //创建一个ImageLoader ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() { @Override public void putBitmap(String url, Bitmap bitmap) { } @Override public Bitmap getBitmap(String url) { return null; } }); //NetworkImageView networkImageView = (NetworkImageView) findViewById(R.id.network_image_view); networkImageView.setDefaultImageResId(R.drawable.ic_normal_pic); networkImageView.setErrorImageResId(R.drawable.ic_normal_pic); //设置url和ImageLoader对象 networkImageView.setImageUrl("http://c.csdnimg.cn/public/favicon.ico", imageLoader); }
Layout:
<com.android.volley.toolbox.NetworkImageView android:id="@+id/network_image_view" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center_horizontal" />
Demo代码下载:点击打开链接
时间: 2024-10-11 05:12:59