Android利用Volley异步载入数据完整具体演示样例(二)
MainActivity例如以下:
- package cc.y;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.Bitmap.Config;
- import android.os.Bundle;
- import android.util.LruCache;
- import android.widget.ImageView;
- import com.android.volley.RequestQueue;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.ImageLoader;
- import com.android.volley.toolbox.ImageLoader.ImageCache;
- import com.android.volley.toolbox.ImageLoader.ImageListener;
- import com.android.volley.toolbox.ImageRequest;
- import com.android.volley.toolbox.NetworkImageView;
- import com.android.volley.toolbox.Volley;
- /**
- * Demo描写叙述:
- * 去年一个项目中简单的使用了Volley,參见:
- * http://blog.csdn.net/lfdfhl/article/details/12223345
- * 近期guolin写了几篇文章具体介绍Volley,所以在此比較系统地学习一下.
- * 在本演示样例中,主要包含:
- * 1 利用ImageRequest为ImageView载入网络图片
- * 2 利用ImageLoader为ImageView载入网络图片
- * 3 利用NetworkImageView为ImageView载入网络图片
- *
- * 注意事项:
- * 1 引入jar包volley.jar
- * 2 网络权限<uses-permission android:name="android.permission.INTERNET"/>
- * 3 Volley源代码分析,请參见:
- * http://blog.csdn.net/guolin_blog/article/details/17656437
- * 4 自己定义的XMLRequest和GsonRequest,请參见:
- * http://blog.csdn.net/guolin_blog/article/details/17612763
- *
- * 学习资料:
- * http://blog.csdn.net/guolin_blog/article/details/17482165
- * Thank you very much
- *
- */
- public class MainActivity extends Activity {
- private Context mContext;
- private RequestQueue mRequestQueue;
- private String mUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg";
- private ImageView mImageView;
- private ImageRequest mImageRequest;
- private ImageLoader mImageLoader;
- private ImageListener mImageListener;
- private NetworkImageView mNetworkImageView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- init();
- //volley_ImageRequest();
- //volley_ImageLoader();
- volley_NetworkImageView();
- }
- private void init(){
- mContext=this;
- mImageView=(ImageView) findViewById(R.id.imageView);
- mNetworkImageView=(NetworkImageView) findViewById(R.id.networkImageView);
- }
- //利用ImageRequest为ImageView载入网络图片
- private void volley_ImageRequest() {
- mRequestQueue = Volley.newRequestQueue(mContext);
- mImageRequest = new ImageRequest(
- mUrl,
- new Response.Listener<Bitmap>() {
- @Override
- public void onResponse(Bitmap response) {
- mImageView.setImageBitmap(response);
- }},
- 0,
- 0,
- Config.ARGB_8888,
- new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- System.out.println("获取图片失败,所以载入一个默认图片");
- mImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_launcher));
- }
- });
- mRequestQueue.add(mImageRequest);
- }
- //利用ImageLoader为ImageView载入网络图片
- private void volley_ImageLoader(){
- mRequestQueue = Volley.newRequestQueue(mContext);
- mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
- mImageListener=ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher, R.drawable.ic_launcher);
- mImageLoader.get(mUrl, mImageListener);
- //mImageLoader.get(mUrl, mImageListener,250,250);
- }
- //利用LruCache实现图片缓存机制
- //请參见:
- //http://blog.csdn.net/lfdfhl/article/details/18350601
- private class ImageCacheImpl implements ImageCache {
- private LruCache<String, Bitmap> mLruCache;
- public ImageCacheImpl() {
- int maxSize = 15 * 1024 * 1024;
- mLruCache = 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 mLruCache.get(url);
- }
- @Override
- public void putBitmap(String url, Bitmap bitmap) {
- mLruCache.put(url, bitmap);
- }
- }
- //利用NetworkImageView为ImageView载入网络图片
- private void volley_NetworkImageView(){
- mRequestQueue = Volley.newRequestQueue(mContext);
- mImageLoader=new ImageLoader(mRequestQueue, new ImageCacheImpl());
- mNetworkImageView.setDefaultImageResId(R.drawable.ic_launcher);
- mNetworkImageView.setErrorImageResId(R.drawable.ic_launcher);
- mNetworkImageView.setImageUrl(mUrl, mImageLoader);
- }
- }
main.xml例如以下:
- <?xml version="1.0" encoding="utf-8"?
- >
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="学习Volley(二)"
- android:layout_centerHorizontal="true"
- />
- <ImageView
- android:id="@+id/imageView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="50dip"
- />
- <com.android.volley.toolbox.NetworkImageView
- android:id="@+id/networkImageView"
- android:layout_width="120dip"
- android:layout_height="120dip"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="150dip"
- />
- </RelativeLayout>
Android利用Volley异步载入数据完整具体演示样例(二)的更多相关文章
- CountDownTimer完整具体演示样例
MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; import ...
- Android清理设备内存具体完整演示样例(二)
版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c; import j ...
- Android 编程之第三方开发 MaoZhuaWeiBo微博开发演示样例-1
在大学期间我做过非常多类似这种APP.这个是我们小组之前做的,我后期增加非常多新元素.完好了这个应用,由于为了加强 专业技术嘛.也是常常熬夜写些小东西,嘿嘿.只是还算不错.起码技术长进了不少嘛,还是非 ...
- Android - 使用Volley请求网络数据
Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...
- android中listview分页载入数据
前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...
- Android利用Fiddler进行网络数据抓包
最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- SpringMVC+Jquery -页面异步载入数据
背景: 做项目时涉及到页面.当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新.这都是几百年前使用的技术了.你用 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
随机推荐
- CF814B An express train to reveries
思路: 模拟,枚举. 实现: #include <iostream> using namespace std; ; int a[N], b[N], cnt[N], n, x, y; int ...
- P2668 斗地主 贪心+深搜
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- Beta冲刺提交-星期四
这个作业属于哪个课程 软件工程 这个作业要求在哪里 <作业要求的链接> 团队名称 唱跳RAP编程 这个作业的目标 1.进行每日例会,每个成员汇报自己今天完成 的工作,PM安排明天的 ...
- 以POST方式推送JSON数据,并接收返回的服务器消息
private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...
- MySQL:INSERT ... UPDATE
在 INSERT 语句末尾指定ON DUPLICATE KEY UPDATE时,如果插入的数据会导致表中的 UNIQUE 索引或 PRIMARY KEY 出现重复值,则会对导致重复的数据执行 UPDA ...
- Maven 项目debug调试时报Source not found.异常
正如异常描述,那么解决方法当然是指定源码. 测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32 异常信息: Source not found. 解决方法: 首先 ...
- 判断机型是否为iphoneX
判断机型是否为iphoneX isIPhoneX() { var u = navigator.userAgent; var isIOS ...
- C++ Primer(第4版)-学习笔记-第3部分:类和数据抽象
第12章 类 每个类可以没有成员,也可以定义多个成员,成员可以是数据.函数或类型别名. 成员函数必须在类内部声明,可以在类内部定义,也可以在类外部定义.如果在类内部定义,就默认是内联函数. ...
- ORACLE 查看当前用户信息(用户,表视图,索引,表空间,同义词,存储过程,约束条件)
1.用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select ...
- X shell 6下载安装和简单使用
①前言:昨天已经上线了的智能家居项目出现了一个BUG,需要重新写个html发布到服务器上,由于公司大佬都在忙别的项目,时间比较紧张,这种小事就落到了我这个小喽啰身上.其实,写个html我还是可以接受的 ...