Android学习笔记:Andorid网络请求框架Volley的使用(中)--网络图片加载

           对上一篇笔记《Android学习笔记:Andorid网络请求框架Volley的使用(上)》一个小补充:我们用Volley请求数据,不要忘记在AndroidManifest.xml中添加网络访问权限。今天学习的目标是实现网络图片的加载,Vollery中实现图片的加载有三种方式,我们可以根据实际情况来选择加载方式,加载方式直接上代码:

public class MyApplication extends Application {
private static RequestQueue requestQueues;

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
requestQueues = Volley.newRequestQueue(getApplicationContext());
}

public static RequestQueue getRequestQueues() {
return requestQueues;
}
}

记得把上面这个Myapplication注册到AndroidManifest.xml清单文件中,下面是主界面布局文件:

<LinearLayout 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"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/test_iv"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:contentDescription="@null"
        android:layout_marginTop="10dp"
        android:scaleType="fitXY" />

    <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/net_work_iv"
        android:layout_width="match_parent"
        android:layout_marginTop="20dp"
        android:layout_height="200dp"
        android:contentDescription="@null"
        android:scaleType="fitXY" >
    </com.android.volley.toolbox.NetworkImageView>

</LinearLayout>

接下来就是代码了:

public class MainActivity extends Activity {
private ImageView mImageView;
private NetworkImageView mNetworkImageView;
private static final String IMAGE_URL = "http://pic.qiantucdn.com/58pic/16/85/34/72K58PICjMU_1024.jpg";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewsById();
// getImgRequest();// 第一种加载 图片的方式
getImgByImageLoader();// 第二种加载 图片的方式
getNetworkImageView();// 第三种加载 图片的方式
}


private void findViewsById() {
this.mImageView = (ImageView) findViewById(R.id.test_iv);
this.mNetworkImageView = (NetworkImageView) findViewById(R.id.net_work_iv);
}


/**
* 第一种加载网络图片方式:通过ImageRequest来获取网络图片
* ImageRequest(String url, Listener<Bitmap> listener, int maxWidth, int maxHeight, Config decodeConfig, ErrorListener errorListener)
* 对应的参数分别是:
* url图片url
* listener下载成功监听 
* maxWidth:图片的宽度
* maxHeight:图片的高度
* decodeConfig是图片的颜色属性
* errorListener下载失败时监听
* @date 2015-8-26 下午1:24:04
*/
private void getImgRequest() {
ImageRequest mRequest = new ImageRequest(IMAGE_URL, new Listener<Bitmap>() {


@Override
public void onResponse(Bitmap arg0) {
mImageView.setImageBitmap(arg0);// 加载图片成功时展示
}
}, 0, 300, Config.RGB_565, new ErrorListener() {


@Override
public void onErrorResponse(VolleyError arg0) {
mImageView.setImageResource(R.drawable.ic_launcher);// 如果请求失败则设置默认图片
}
});
mRequest.setTag("imgTag");
MyApplication.getRequestQueues().add(mRequest);
}


/**
* 第二种试,通过Volley中的ImageLoader及ImageListener来实现网络图片
* ImageLoader.getImageListener(ImageView view, int defaultImageResId, int errorImageResId)
* 参数介绍:
* view指要加载图片的ImageView
* defaultImageResId是正在加载图片显示的默认图片
* errorImageResId是正在加载失败时显示的默认图片
* @date 2015-8-26 下午1:56:14
*/
private void getImgByImageLoader() {
ImageLoader loader = new ImageLoader(MyApplication.getRequestQueues(), new ImageCache() {


@Override
public void putBitmap(String paramString, Bitmap paramBitmap) {


}


@Override
public Bitmap getBitmap(String paramString) {
return null;
}
});
ImageListener listener = ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher, R.drawable.ic_launcher);
loader.get(IMAGE_URL, listener);
}


/**
* 第三种加载方式,直接用Volley提供 的图片加载控件NetworkImageView
* 使用方法和ImageView几乎一样的
* @date 2015-8-26 下午2:02:33
*/
private void getNetworkImageView() {
ImageLoader loader = new ImageLoader(MyApplication.getRequestQueues(), new ImageCache() {


@Override
public void putBitmap(String paramString, Bitmap paramBitmap) {


}


@Override
public Bitmap getBitmap(String paramString) {
return null;
}
});
mNetworkImageView.setDefaultImageResId(R.drawable.ic_launcher); // 设置加载中的默认图片
mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);// 设置加载失败的默认图片
mNetworkImageView.setImageUrl(IMAGE_URL, loader);// 传参数是图片的url及ImageLoader
}
}

效果图:

Android学习笔记:Andorid网络请求框架Volley的使用(中)--网络图片加载_第1张图片


你可能感兴趣的:(Android开发,图像处理,Volley框架)