Android Volley框架使用方法詳解
本文主要從兩個(gè)方面對(duì)Android Volley框架的使用方法進(jìn)行講解,具體內(nèi)容如下
一、網(wǎng)絡(luò)請(qǐng)求
1.get方式請(qǐng)求數(shù)據(jù)
// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 2 創(chuàng)建一個(gè)請(qǐ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)建的請(qǐng)求添加到請(qǐng)求隊(duì)列中 requestQueue.add(stringRequest);
2.post方式請(qǐng)求數(shù)據(jù)
// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 2 創(chuàng)建一個(gè)post請(qǐng)求 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("請(qǐng)求失敗" + 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請(qǐng)求添加到隊(duì)列中 requestQueue.add(stringRequest);
3.請(qǐng)求Json數(shù)據(jù)
// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 2 創(chuàng)建一個(gè)請(qǐ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("請(qǐng)求失敗" + volleyError); } }); // 3 將創(chuàng)建的請(qǐng)求添加到請(qǐng)求隊(duì)列中 requestQueue.add(jsonObjectRequest);
二、圖片加載
1.ImageRequest加載圖片
// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 2 創(chuàng)建一個(gè)圖片的請(qǐ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 將請(qǐng)求添加到請(qǐng)求隊(duì)列中 requestQueue.add(imageRequest);
2.Imageloader加載圖片
// 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列 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)建一個(gè)請(qǐng)求隊(duì)列 RequestQueue requestQueue = Volley.newRequestQueue(VolleyActivity.this); // 創(chuàng)建一個(gè)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);
- Android 中Volley二次封裝并實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求緩存
- Android中volley封裝實(shí)踐記錄
- Android Volley框架全面解析
- Android的HTTP類庫Volley入門學(xué)習(xí)教程
- Android Volley框架使用源碼分享
- Android中Volley框架下保持會(huì)話方法
- Android 開發(fā)中Volley詳解及實(shí)例
- android 網(wǎng)絡(luò)請(qǐng)求庫volley方法詳解
- Android 網(wǎng)絡(luò)請(qǐng)求框架Volley實(shí)例詳解
- Android中volley封裝實(shí)踐記錄(二)
相關(guān)文章
Android編程之Application設(shè)置全局變量及傳值用法實(shí)例分析
這篇文章主要介紹了Android編程之Application設(shè)置全局變量及傳值用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了全局變量及傳值的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12Android自定義ViewGroup實(shí)現(xiàn)可滾動(dòng)的橫向布局(2)
這篇文章主要介紹了Android自定義ViewGroup實(shí)現(xiàn)可滾動(dòng)的橫向布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12實(shí)現(xiàn)一個(gè)Android鎖屏App功能的難點(diǎn)總結(jié)
這篇文章主要介紹了實(shí)現(xiàn)一個(gè)Android鎖屏App功能的難點(diǎn)總結(jié),可以有效的解決鎖屏開發(fā)的問題,有需要的可以參考一下。2016-11-11Android?Compose狀態(tài)改變動(dòng)畫animateXxxAsState使用詳解
這篇文章主要為大家介紹了Android?Compose狀態(tài)改變動(dòng)畫animateXxxAsState使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11flutter?material?widget組件之信息展示組件使用詳解
這篇文章主要為大家詳細(xì)介紹了flutter?material?widget組件之信息展示組件的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Android平臺(tái)生成二維碼并實(shí)現(xiàn)掃描 & 識(shí)別功能
這篇文章主要介紹了Android平臺(tái)生成二維碼并實(shí)現(xiàn)掃描 & 識(shí)別功能的相關(guān)資料,需要的朋友可以參考下2016-06-06Android使用TextView實(shí)現(xiàn)無下劃線超鏈接的方法
這篇文章主要介紹了Android使用TextView實(shí)現(xiàn)無下劃線超鏈接的方法,結(jié)合實(shí)例形式分析了Android中TextView超鏈接去除下劃線的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2016-08-08android使用service和activity獲取屏幕尺寸的方法
這篇文章主要介紹了android使用service和activity獲取屏幕尺寸的方法,實(shí)例分析了基于service和activity兩種方法獲取屏幕尺寸的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下2015-08-08Android使用NestedScrollView?內(nèi)嵌RecycleView滑動(dòng)沖突問題解決
這篇文章主要介紹了Android使用NestedScrollView?內(nèi)嵌RecycleView滑動(dòng)沖突問題解決,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06