第一节:转载地址(http://www.cnblogs.com/lee0oo0/archive/2012/10/25/2738299.html)

// 必须实现AQuery这个类

AQuery aq = new AQuery(view); // 按顺序分析:取得xml对应控件id,设置图片,设置可以显示,点击事件(方法someMethod必须是public修饰)

aq.id(R.id.icon).image(R.drawable.icon).visible().clicked(this, "someMethod");  // 设置文字内容         aq.id(R.id.name).text(content.getPname());         aq.id(R.id.time).text(FormatUtility.relativeTime(System.currentTimeMillis(), content.getCreate())).visible();

aq.id(R.id.desc).text(content.getDesc()).visible();

AQuery也支持Fragment:

@Override     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {                 View view = inflater.inflate(getContainerView(), container, false);                                     aq = new AQuery(getActivity(), view);         return view;   }             

第二节: 使用AQuery异步加载图片

2.1 从网上读取图片

aq.id(R.id.image1).image(“图片URL”);

2.2 缓存控制:  图片过大的话,避免记忆缓存

boolean memCache =false;

     boolean fileCache = true;     aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png", memCache, fileCache);
2.3 当下载太多图片的时候需要降低图片采样率,第四个参数为了保证图片质量,一般范围时200-399aq.id(R.id.image1).image(imageUrl, true, true, 200, 0);
2.4 如果下载图片失败,处理的方法:1. 设置一个预定的图片  2. 使imageview不可见或者是goneaq.id(R.id.image1).image(imageUrl, true, true, 0, R.drawable.default_image);
     aq.id(R.id.image1).image(imageUrl, true, true, 0, AQuery.INVISIBLE);aq.id(R.id.image1).image(imageUrl, true, true, 0, AQuery.GONE);2.5 图片预加载// 从之前的url取得小图片String thumbnail = "http://farm6.static.flickr.com/5035/5802797131_a729dac808_s.jpg";   Bitmap preset = aq.getCachedImage(thumbnail);
    // 加载大图片前先显示小图片String imageUrl = "http://farm6.static.flickr.com/5035/5802797131_a729dac808_b.jpg";
    aq.id(R.id.image).image(imageUrl, false, false, 0, 0, preset, AQuery.FADE_IN);
2.6 在加载图片的时候显示进度条,progress里面传入idString imageUrl = "http://farm6.static.flickr.com/5035/5802797131_a729dac808_b.jpg";
     aq.id(R.id.image).progress(R.id.progress).image(imageUrl, false, false);
2.7 图片圆角显示,不支持大图片ImageOptions options = new ImageOptions();options.round = 15;aq.id(R.id.image).image(url, options);
2.8 图片长宽比例    // 保留原图片比例
    aq.id(R.id.image).image(imageUrl, true, true, 0, 0, null, AQuery.FADE_IN, AQuery.RATIO_PRESERVE);
    // 自定义图片比例//1:1, a square aq.id(R.id.image2).image(imageUrl, true, true, 0, 0, null, 0, 1.0f / 1.0f);
    aq.id(R.id.image3).image(imageUrl, true, true, 0, 0, null, 0, 1.5f / 1.0f);     //16:9, a video thumbnailaq.id(R.id.image4).image(imageUrl, true, true, 0, 0, null, 0, 9.0f / 16.0f);
    aq.id(R.id.image5).image(imageUrl, true, true, 0, 0, null, 0, 3.0f / 4.0f);
2.9 图片描点,如果图片过高,描点可用来描述图片的哪一部分用于显示
Anchor values:1.0 : Display top of the image
0 : Display the center of the image
-1.0 : Display bottom of the image
AQuery.ANCHOR_DYNAMIC : Display image with a top bias for photos.
=======================================================ImageOptions options =newImageOptions();options.ratio =1;options.anchor =1.0;aq.id(R.id.image1).image(imageUrl, options);
2.10 自定义图片加载后的处理aq.id(R.id.image1).image(imageUrl,true,true,0,0,newBitmapAjaxCallback(){});
2.11 异步从文件加载图片,建议使用降低采样率避免oomFile file =newFile(path);//load image from file, down sample to target width of 300 pixels
aq.id(R.id.avatar).image(file,300);//load image from file with callback
aq.id(R.id.avatar).image(file,false,300,newBitmapAjaxCallback(){
@Override
publicvoid callback(String url,ImageView iv,Bitmap bm,AjaxStatus status){iv.setImageBitmap(bm);
}
});
2.12 如果之前image("url")已经成功,之后的都可以直接使用而不需要重新访问网络,也就是说之后可以离线访问此图像资源
2.13 文件中获取缓冲图片File file = aq.getCachedFile(url);
2.14 除了imageview,webview也可以用来放图片aq.id(R.id.web).progress(R.id.progress).webImage(url);
2.15 延迟图片加载,帮助你是否加载正在快速滚动的listview,详情参考文档使用
2.16 图片不使用缓存aq.id(R.id.image).image(url, false, false);
2.17 缓存配置,缓存一般是保存在内部文件系统,但也可以保存在SDCard里面File ext = Environment.getExternalStorageDirectory();File cacheDir = new File(ext, "myapp"); AQUtility.setCacheDir(cacheDir);
2.18 共享图片,为了与其他程序共享图片,你需要把文件放在SDCard,makeSharedFile方法创建缓存地址的一个副本File file = aq.makeSharedFile(url, "android.png");if(file != null){Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("image/jpeg");intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));startActivityForResult(Intent.createChooser(intent, "Share via:"), SEND_REQUEST);
        }
2.19 配置,最好把配置写在application的onCreate方法,详细参考文档
2.20 程序退出时候需要把缓存清除  if(isTaskRoot()){
  AQUtility.cleanCacheAsync(this);
}
或者: if(isTaskRoot()){
//clean the file cache with advance option         long triggerSize = 3000000; //大于3M时候开始清除         long targetSize = 2000000;      //直到少于2M         AQUtility.cleanCacheAsync(this, triggerSize, targetSize);         }
2.21 低内存处理publicclassMainApplicationextendsApplication{
@Override
         public void onLowMemory(){  //clear all memory cached images when system is in low memory
        //note that you can configure the max image cache count, see CONFIGURATION
         BitmapAjaxCallback.clearCache();
}
}

转载于:https://www.cnblogs.com/androidxufeng/p/3665418.html

Android之使用Android-AQuery异步加载图片(一)相关推荐

  1. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

  2. android开发小技巧:实现listview异步加载图片

    2019独角兽企业重金招聘Python工程师标准>>> 针对listview异步加载图片这个问题,麦子学院android开发老师讲了一种非常实用的方法,麦子学院android开发老师 ...

  3. Android 开发笔记 ListView异步加载图片

    当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...

  4. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  5. android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...

    众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...

  6. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  7. Android实现ListView异步加载图片总结

    参考自http://blog.csdn.net/wanglong0537/article/details/6334005# http://www.cnblogs.com/slider/archive/ ...

  8. Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片

    一.问题描述 使用LruCache.AsyncTask实现批量图片的加载并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)加载图片,并放入缓存中 2.及时移除 ...

  9. 又优化了一下 Android ListView 异步加载图片

    写这篇文章并不是教大家怎么样用listview异步加载图片,因为这样的文章在网上已经有很多了,比如这位仁兄写的就很好: http://www.iteye.com/topic/685986 我也是因为看 ...

最新文章

  1. Markdown上下标内容多于一项
  2. Mybatis 基础 定义别名,属性配置
  3. c语言枚举变量自增报错,C_数据结构与算法(1):C语言基础
  4. es6 includes(), startsWith(), endsWith()
  5. 真香定律!Android动态换肤实现原理解析,吐血整理
  6. 【linux】学习6
  7. php5.4.41 绿色_编译安装PHP5.4.41
  8. 测试 MathJax 排版功效
  9. 能源路由器入门必读:面向能源互联网的架构和功能
  10. 嵌入式开发的基础知识大揭秘
  11. Android隐藏app桌面图标
  12. 【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务
  13. chm文件打不开的原因
  14. 张云雷的《探清水河》登上央视,为什么蔡国庆可以随心所欲地唱
  15. 通信使用matlab三元码实验报告,Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验...
  16. idea创建三种应用程序的方法:springboot,控制台程序,windows服务程序
  17. 软件著作权申请时间是多久?
  18. 学习OpenCV3:在空白图片上画虚线
  19. RadioButton设置默认选中后无法取消,可选中多个的问题
  20. abort()函数使用

热门文章

  1. mysql第四章表单查询样题_查询mysql表单中前10条,然后在li中循环输出。
  2. csv python 逐行读取_从 Excel 到 Python
  3. java和ffmpeg使用内存转码_FFMPEG基于内存的转码实例
  4. 怎么自定义linux登录界面?
  5. 如何基于 K8s 构建下一代 DevOps 平台?
  6. 一元建站-基于函数计算 wordpress 构建 serverless 网站
  7. 上海2021年高考成绩排位查询,2021年上海各高中高考成绩排名及放榜最新消息
  8. cpu飙升 死循环_java排查一个线上死循环cpu暴涨的过程分析
  9. 开始位置 环状图_消防泵房内设备、管网、阀门的设置及系统图
  10. 简易mysql优化_优化 MySQL:简单三个技巧