Android Volley框架使用方法詳解
本文主要從兩個方面對Android Volley框架的使用方法進(jìn)行講解,具體內(nèi)容如下
一、網(wǎng)絡(luò)請求
1.get方式請求數(shù)據(jù)
// 1 創(chuàng)建一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);
// 2 創(chuàng)建一個請求
String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
// 正確接收數(shù)據(jù)回調(diào)
@Override
public void onResponse(String s) {
tv_volley_result.setText(s);
}
}, new Response.ErrorListener() {// 發(fā)生異常后的監(jiān)聽回調(diào)
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("加載失敗" + volleyError);
}
});
// 3 將創(chuàng)建的請求添加到請求隊列中
requestQueue.add(stringRequest);
2.post方式請求數(shù)據(jù)
// 1 創(chuàng)建一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);
// 2 創(chuàng)建一個post請求
String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
tv_volley_result.setText(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("請求失敗" + volleyError);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
// map.put("value1","param1");
return map;
}
};
// 3 將post請求添加到隊列中
requestQueue.add(stringRequest);
3.請求Json數(shù)據(jù)
// 1 創(chuàng)建一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);
// 2 創(chuàng)建一個請求
String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
tv_volley_result.setText(jsonObject.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("請求失敗" + volleyError);
}
});
// 3 將創(chuàng)建的請求添加到請求隊列中
requestQueue.add(jsonObjectRequest);
二、圖片加載
1.ImageRequest加載圖片
// 1 創(chuàng)建一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this);
// 2 創(chuàng)建一個圖片的請求
String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg";
ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
// 正確接收到圖片
iv_volley_result.setImageBitmap(bitmap);
}
}, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
iv_volley_result.setImageResource(R.drawable.atguigu_logo);
}
});
// 3 將請求添加到請求隊列中
requestQueue.add(imageRequest);
2.Imageloader加載圖片
// 創(chuàng)建一個請求隊列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache()); // 加載圖片 String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg"; ImageLoader.ImageListener imageListener = imageLoader.getImageListener(iv_volley_result, R.drawable.atguigu_logo, R.drawable.atguigu_logo); imageLoader.get(url, imageListener);
BitmapCache.java
public class BitmapCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;// 10m
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}
3.NetworkImageView加載圖片
<com.android.volley.toolbox.NetworkImageView android:id="@+id/iv_volley_networkimagview" android:layout_width="200dp" android:layout_height="200dp" android:visibility="gone"> </com.android.volley.toolbox.NetworkImageView>
// 創(chuàng)建一個請求隊列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 創(chuàng)建一個Imageloader ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache()); // 默認(rèn)圖片和異常圖片設(shè)置 iv_volley_networkimagview.setDefaultImageResId(R.drawable.atguigu_logo); iv_volley_networkimagview.setErrorImageResId(R.drawable.atguigu_logo); // 加載圖片 String url = "http://img5.mtime.cn/mg/2016/10/11/160347.30270341.jpg"; iv_volley_networkimagview.setImageUrl(url, imageLoader);
相關(guān)文章
Android IPC機制ACtivity綁定Service通信代碼實例
這篇文章主要介紹了Android IPC機制ACtivity綁定Service通信代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
Kotlin 高階函數(shù)與Lambda表達(dá)式示例詳解
這篇文章主要為大家介紹了Kotlin 高階函數(shù)與Lambda表達(dá)式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android開發(fā)之DatePickerDialog、TimePickerDialog時間日期對話框用法示例
這篇文章主要介紹了Android開發(fā)之DatePickerDialog、TimePickerDialog時間日期對話框用法,結(jié)合實例形式分析了Android使用DatePickerDialog、TimePickerDialog顯示日期時間相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
Android編程實現(xiàn)二級下拉菜單及快速搜索的方法
這篇文章主要介紹了Android編程實現(xiàn)二級下拉菜單及快速搜索的方法,以實例形式較為詳細(xì)的分析了Android實現(xiàn)二級下拉菜單及快速搜索的布局與功能實現(xiàn)技巧,需要的朋友可以參考下2015-11-11
Android React-Native通信數(shù)據(jù)模型分析
這篇文章主要介紹了Android React-Native通信數(shù)據(jù)模型分析的相關(guān)資料,需要的朋友可以參考下2016-10-10

