Picasso:
导入依赖:
compile 'com.squareup.picasso:picasso:2.5.2'
MainActivity布局:
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.mrzhao.day14picassoglideimgaeloaderproject.MainActivity"> android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> android:id="@+id/showIv" android:layout_width="wrap_content" android:layout_height="wrap_content" />
MainActivity代码:
/** * Picasso 图片加下载和缓存 框架 * Square公司出产的 美国的一家高科技公司 主要做 移动支付的 * * *1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。 *2.使用复杂的图片压缩转换来尽可能的减少内存消耗 *3.自带内存和硬盘二级缓存功能 * 底层的缓存功能使用的是LruCache类. 缓存路径默认是放在应用目录的cache/picasso-cache/ */ public class MainActivity extends AppCompatActivity { private ImageView showIv; private String path = "http://img3.imgtn.bdimg.com/it/u=1783000275,3379371754&fm=27&gp=0.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 展示图片的视图 showIv = (ImageView) findViewById(R.id.showIv); // 图片加载框 一步完成 图片下载的 过程 // with的参数是 上下文对象 返回值是 一个Picasso 对象 // load的参数是 图片下载的地址 // into的参数是 显示图片的 视图 // Picasso.with(this).load(path).into(showIv); } public void onClick(View view) { switch (view.getId()) { case R.id.res_bt: //从 res/mipmap文件夹下的图片 Picasso.with(this).load(R.mipmap.respic) .config(Bitmap.Config.RGB_565)// 设置图片的格式 推荐RGB_565 Picasso 默认的是 ARGB8888 .resize(500, 500)// 重新定义 图片的大小 .centerInside()//等比例压缩到可显示 .rotate(345)//旋转 .noFade()//默认情况下 图片的出现和消失是有一个 淡入淡出的 效果的 该属性表示取消这个过程 // .centerCrop()// 剧中裁剪方式 // .fit() //自适应 需要ImageView 的 宽高是固定的 .into(showIv); break; case R.id.asset_bt: //Assets 文件夹 加载图片 Picasso.with(this).load("file:///android_asset/assetspic.jpg").into(showIv); break; case R.id.net_bt: //从网络下载图片 Picasso.with(this).load(path) .placeholder(R.mipmap.loadingpic)// 占位图 图片下载过程中显示的图片 .error(R.mipmap.errorpic)//图片下载错误的时候 显示的图片 // .transform(new RoundTransformation())// 自定义图形转换 // .memoryPolicy(MemoryPolicy.NO_CACHE)// 缓存方面的处理 MemoryPolicy.NO_CACHE 不去缓存中查找 NO_STORE不去存储中查找 .into(showIv); break; case R.id.sd_bt: //从SD卡里面读取文件 //w我们还没有学 SD 卡 Picasso.with(this).load(new File("sd卡的路径")).into(showIv); break; } } // 正方形的转换 class MyTransformation implements Transformation{ @Override public Bitmap transform(Bitmap source) { int size = Math.min(source.getWidth(),source.getHeight());// 获取最小值 Bitmap map = Bitmap.createBitmap(source,0,0,size,size);//正方形 source.recycle(); return map; } @Override public String key() { return "zhengfangxing"; } } // 改成 椭圆了 class RoundTransformation implements Transformation{ @Override public Bitmap transform(Bitmap source) { final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); canvas.drawRoundRect(new RectF(0, 0, source.getWidth() - 0, source.getHeight() - 0), source.getWidth()/2, source.getWidth()/2, paint); if (source != output) { source.recycle(); } return output; } @Override public String key() { return "yuanxing"; } } }
MyApp:
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); /** * * 我们可以 在这个地方针对 我们的 Picasso 做一个 统一的 改变 */ //构建一个 Picasso 对象 Picasso picasso = new Picasso.Builder(this) .defaultBitmapConfig(Bitmap.Config.RGB_565)//设置默认图片格式 RGB 565 .memoryCache(new LruCache(this))// 设置缓存类型 //红色表示图片来自网络 //蓝色表示来自磁盘 //绿色表示来自 内存 .indicatorsEnabled(true)//开启图片测试的 效果 // .downloader()// 表示的是使用什么下载器来去下载图片 .build(); // 设置 构建好的 自定义Picasso对象为单利模式 // 然后其他地方调用的Picasso.with 方法返回的对象就是 构建好的Picasso对象了 Picasso.setSingletonInstance(picasso); } }
清单文件:
android:name="android.permission.INTERNET"> android:name=".MyApp"
Glide:
导入依赖:
implementation 'com.github.bumptech.glide:glide:4.5.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'
MainActivity文件:
public class MainActivity extends AppCompatActivity { private String path ="http://pic28.photophoto.cn/20130827/0005018362405048_b.jpg"; private ImageView showIv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showIv = (ImageView) findViewById(R.id.showIv); } public void onClick(View view) { // 加载图片 剪切成为 圆形 Glide.with(this).load(path) .apply(new RequestOptions().circleCrop()) .into(showIv); } }
UniversalImageLoader:
导入依赖:
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
MainActivity:
public class MainActivity extends AppCompatActivity { private static final String TAG = "TAG"; private ImageView showIv; private String path ="http://h.hiphotos.baidu.com/zhidao/pic/item/09fa513d269759ee7206b59fb6fb43166d22df14.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 只调用一次即可 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); showIv = (ImageView) findViewById(R.id.showIv); } public void onClick(View view) { ImageLoader loader = ImageLoader.getInstance(); // 展示图片 // loader.displayImage(path, showIv); // 带监听器 loader.displayImage(path, showIv, new DisplayImageOptions.Builder().build(), new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { Log.d(TAG, "onLoadingStarted: 图片开始下载"); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { Log.d(TAG, "onLoadingFailed: 图片下载失败"); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { Log.d(TAG, "onLoadingComplete: 图片下载完成"); } @Override public void onLoadingCancelled(String imageUri, View view) { Log.d(TAG, "onLoadingCancelled: 图片取消下载"); } }, new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { Log.d(TAG, "onProgressUpdate: "+current+ "-------"+total); } }); } }