volley框架的应用

今天学习的目标是实现网络图片的加载,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
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值