ImageLoader
ImageLoader在github上的地址:https://github.com/nostra13/Android-Universal-Image-Loader
配置:
1.在app的buildgradle中添加以来:
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
例如:
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:recyclerview-v7:26.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' compile 'org.greenrobot:greendao:3.2.2' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'}
2.重写application,并初始化配置
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();initImageLoader();}public void initImageLoader(){ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(getApplicationContext());config.threadPriority(Thread.NORM_PRIORITY - 2);config.denyCacheImageMultipleSizesInMemory();config.diskCacheFileNameGenerator(new Md5FileNameGenerator());config.diskCacheSize(50*1024*1024);config.tasksProcessingOrder(QueueProcessingType.LIFO);config.writeDebugLogs();ImageLoader.getInstance().init(config.build());} }
3.配置AndroidManifest
将application标签的name熟悉设置为.MyApplication; 添加权限
<application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
</application>
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4.应用实例:
public class MyImageListActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fr_image_list);ListView listView = findViewById(R.id.listview);listView.setAdapter(new ImageAdapter());listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Log.i("test","click "+i);}});}@Overrideprotected void onDestroy() {//回收缓存在内存中的图片 ImageLoader.getInstance().clearMemoryCache();super.onDestroy();}private class ImageAdapter extends BaseAdapter{private String[] IMAGES_URI = new String[]{"http://mowin.org/wp-content/uploads/2017/07/arborists-forestry.jpg","http://s1.1zoom.me/big0/506/Sky_Grasslands_Rainbow_502473.jpg",};// 创建DisplayImageOptions对象private DisplayImageOptions options;public ImageAdapter() {options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.dog) // 下载期间显示的图片.showImageForEmptyUri(R.drawable.dog)//Uri为空或是错误的时候显示的图片.showImageOnFail(R.drawable.ic_launcher_background)//发生错误显示的图片.cacheInMemory(true)//载的图片是否缓存在内存中.cacheOnDisk(true)//载的图片是否缓存在sdcard中.considerExifParams(true).displayer(new CircleBitmapDisplayer(Color.WHITE,5))//图片 .build();}@Overridepublic int getCount() {return IMAGES_URI.length;}@Overridepublic Object getItem(int i) {return IMAGES_URI[i];}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder;if(view == null){holder = new ViewHolder();view = LayoutInflater.from(MyImageListActivity.this).inflate(R.layout.item_list_image,null);holder.imageView = (ImageView)view.findViewById(R.id.item_image);holder.textView = (TextView)view.findViewById(R.id.item_name);view.setTag(holder);}else{holder = (ViewHolder)view.getTag();}holder.textView.setText("Item " + (i + 1));// ImageLoader.getInstance().displayImage(IMAGES_URI[i],holder.imageView,options);return view;}}static class ViewHolder{ImageView imageView;TextView textView;} }
可以使用的URI:
"http://site.com/image.png" // from Web "file:///mnt/sdcard/image.png" // from SD card "file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail) "content://media/external/images/media/13" // from content provider "content://media/external/video/media/13" // from content provider (video thumbnail) "assets://image.png" // from assets "drawable://" + R.drawable.img // from drawables (non-9patch images)
设置图片的显示方式
displayer(BitmapDisplayer displayer)
SimpleBitmapDisplayer() //默认 正常显示一张图片 CircleBitmapDisplayer(Color.WHITE,5)//圆形图片
RoundedBitmapDisplayer(20) //圆角图片,弧度20. 不推荐用
FadeInBitmapDisplayer(100)//加载图片后渐入的时间 FakeBitmapDisplayer()图片压缩质量参数bitmapConfig(Bitmap.Config.RGB_565)在android中的大图片一般都要经过压缩才能显示,不然容易发生oom,影响一个图片占用空间的有尺寸大小 色彩细节。
public static final Bitmap.Config ALPHA_8 public static final Bitmap.Config ARGB_4444 public static final Bitmap.Config ARGB_8888 public static final Bitmap.Config RGB_565
ARGB指的是一种色彩模式,A代表Alpha,R表示red,G表示green,B表示blue。所有的可见色都是由红绿蓝组成的,所以红绿蓝又称为三原色
ALPHA_8就是Alpha由8位组成--代表8位Alpha位图
ARGB_4444就是由4个4位组成即16位--代表16位ARGB位图
ARGB_8888就是由4个8位组成即32位--代表32位ARGB位图
RGB_565就是R为5位,G为6位,B为5位共16位--代表16位RGB位图
位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真。
bitmapConfig(Bitmap.Config.RGB_565) //使用RGB_565会比使用ARGB_8888少消耗2倍的内存
imageScaleType(ImageScaleType.IN_SAMPLE_INT) 或 imageScaleType(ImageScaleType.EXACTLY)
避免使用new RoundedBitmapDisplayer(int) //会创建新的ARGB_8888格式的Bitmap对象;
转载于:https://www.cnblogs.com/yuan1225/p/8426900.html
ImageLoader相关推荐
- Android开源框架ImageLoader的完美例子
要使用ImageLoader就要到这里下载jar包: https://github.com/nostra13/Android-Universal-Image-Loader 然后导入项目中去就行了 项目 ...
- 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...
- Android ImageLoader(Android-Universal-Image-Loader)【1】概述及使用简单介绍
Android ImageLoader(Android-Universal-Image-Loader)[1]概述及使用简单介绍 一,前言:为什么要引入Android-Universal-Imag ...
- Android -- ImageLoader本地缓存
传送门 <Android -- ImageLoader简析> http://www.cnblogs.com/yydcdut/p/4008097.html 本地缓存 在缓存文件时对文件名称 ...
- ImageLoader displayers 之CircleBitmapDisplayer
ImageLoader这个图片加载器是我经常使用额一个图片加载器(https://github.com/nostra13/Android-Universal-Image-Loader) 这个图片加载器 ...
- Ionic3 UI组件之 ImageLoader
ImageLoader:通过后台线程加载图片(异步)并缓存.类似于Glide或者Picasso. 组件特性: 后台线程下载图片,下载速度更快,不使用webview的资源: 缓存图像.图像将在您下次显示 ...
- android使用ImageLoader实现图片缓存(安卓开发必备)
相信大家在学习以及实际开发中基本都会与网络数据打交道,而这其中一个非常影响用户体验的就是图片的缓存了,若是没有弄好图片缓存,用户体验会大大下降,总会出现卡顿情况,而这个问题尤其容易出现在ListVie ...
- imageloader 的 java.security.cert.CertPathValidatorException
最近使用imageloader 发现ssl问题 (java.security.cert.CertPathValidatorException) 网上找了个方法,亲测通过,如下: universalim ...
- android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题
今天,简单讲讲android里再listview调用notifyDataSetChanged刷新界面时,Imageloader加载图片会闪烁的问题. 最近,发现app里的listview图片会出现闪烁 ...
- ImageLoader must be init with configuration before using 错误解决方法
最近开发过程中用到了开源项目Android-Universal-Image-Loader. 在程序开发之前在CSDN的文章里看到的有Android-Universal-Image-Loader这么个好 ...
最新文章
- fastjson又被发现漏洞,这次危害可导致服务瘫痪!
- 二叉树的层序遍历 II
- PHP中不用第三个变量交换两个变量的值
- D2 AJAX 封装策略
- CEO 赠书 |《跨越鸿沟》如何将梦想变为现实?
- 十九、Seaborn数据可视化
- 【Node.js】http-server 实现目录浏览服务
- ios添加设备真机测试,以及Undefined symbols for architecture x86_64:''错误
- [jQuery] ajax跨域处理方式
- 【linux系统编程】基础开发工具:yum
- Win10中的IIS10安装php manager和IIS URL Rewrite
- 六、瞰景Smart3D三维重建
- 联想微型计算机怎么恢复系统,联想一体机系统还原的方法 联想一体机如何还原系统...
- 区块链技术应用场景之政务链
- 【无机纳米材料科研制图——Visio 0309】使用任意多边形工具描边出小鼠简图
- 总说业务,到底业务常用的指标有哪些
- vuex入门到实战——实现一个todoList待办清单【学习记录】
- android自定义sidebar,Sidebar - WiFi、GPS、手电筒们都到这里来! - Android 应用 - 【最美应用】...
- 星光不问赶路人,时光不负有心人
- 阿里云 Serverless App Engine(SAE)助力升学在线从容应对流量高峰