fresco -> FrescoView
来源:互联网 发布:java软件工程师考试 编辑:程序博客网 时间:2024/06/07 22:30
基于facebook出品的fresco( 强大的图片加载组件 https://www.fresco-cn.org )进行二次开发的 更易于开发者使用的库.
如要了解功能实现,请运行app程序查看控制台日志和源代码!
* 源代码 : AcmenXD/FrescoView
* apk下载路径 : FrescoView.apk
依赖
- AndroidStudio
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
compile 'com.github.AcmenXD:FrescoView:1.2'
混淆
#FrescoView默认使用okhttp3,所以要加入此配置 -dontwarn okhttp3.** -dontwarn okio.** -dontwarn com.squareup.okhttp3.** #fresco的混淆配置 -keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip -keep @com.facebook.common.internal.DoNotStrip class * -keepclassmembers class * { @com.facebook.common.internal.DoNotStrip *; } -keepclassmembers class * { native <methods>; } -dontwarn okio.** -dontwarn com.squareup.okhttp.** -dontwarn okhttp3.** -dontwarn javax.annotation.** -dontwarn com.android.volley.toolbox.**
功能
- 支持fresco所支持的大多数功能
- 支持JPEG / PNG / GIF / WebP 格式
- 支持加载网络 / res资源 / 本地资源
- 支持低分辨率&高分辨率加载 / 缩略图式加载 > 渐进式加载
- 支持监听加载进度,加载成功和失败回调
- 支持多层构图, 占位图 -> 背景图 -> 覆盖图 -> 加载失败图 -> 失败重试图 -> 进度条图
- 支持加载失败后,点击再次加载
- 支持加载过程中显示加载动画
- 支持圆角 / 圆形 / 边框 处理,并可设置颜色
- 支持图片渐显动画
- 支持控制gif动画的播放和停止
- 支持函数链式调用,方便使用
- 更多功能请查看项目根目录下frescoview/src/main/java/com/acmenxd/frescoview/FrescoViewDoc.java文件,有xml或代码中每个函数的具体含义
配置
在Application中配置
/** * 初始化 * context必须设置 */FrescoManager.setContext(this);/** * 设置Log开关 & 等级 * * 默认为 开 & Log.VERBOSE */FrescoManager.setOpen(true, Log.VERBOSE);/** * 设置缓存图片的存放路径 * * Environment.getExternalStorageDirectory().getAbsolutePath() + "/FrescoView/" * * @param cachePath 路径:默认为SD卡根目录FrescoView下 (此路径非直接存储图片的路径,还需要以下目录设置) * @param mainCacheDir 大图片存放目录:默认为MainCache目录 * @param smallCacheDir 小图片存放目录:默认为SmallCache目录 (如不想区分大小图片,可设置为null或者"",表示大小图片都放在mainCacheDir目录下) */FrescoManager.setCachePath(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Image/", "MainCache", "SmallCache");/** * 设置缓存磁盘大小 * * @param mainCacheSize 大图片磁盘大小(MB) 默认为50MB * @param smallCacheSize 小图片磁盘大小(MB) 默认为20MB */FrescoManager.setCacheSize(50, 20);/** * 初始化 -> 配置完成后必须调用此函数生效 */FrescoManager.init();
使用 -> 以下代码 注释很详细、很重要很重要很重要!!!
<!-- xml布局中定义FrescoView, 请查看FrescoViewDoc.java,有详细的参数解释 --><com.acmenxd.frescoview.FrescoView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="200dp" fresco:actualImageScaleType="focusCrop" fresco:backgroundImage="@color/colorPrimaryDark" fresco:fadeDuration="1000" fresco:failureImage="@mipmap/ic_launcher" fresco:failureImageScaleType="centerInside" fresco:overlayImage="@mipmap/ic_launcher" fresco:placeholderImage="@color/colorPrimary" fresco:placeholderImageScaleType="fitCenter" fresco:pressedStateOverlayImage="@color/colorAccent" fresco:progressBarAutoRotateInterval="1000" fresco:progressBarImage="@mipmap/ic_launcher" fresco:progressBarImageScaleType="centerInside" fresco:retryImage="@color/colorAccent" fresco:retryImageScaleType="centerCrop" fresco:roundAsCircle="false" fresco:roundBottomLeft="false" fresco:roundBottomRight="true" fresco:roundTopLeft="true" fresco:roundTopRight="false" fresco:roundWithOverlayColor="@color/colorAccent" fresco:roundedCornerRadius="30dp" fresco:roundingBorderColor="@color/colorAccent" fresco:roundingBorderWidth="10dp" />
// ** 请查看FrescoViewDoc.java,有详细的参数解释FrescoView iv = (FrescoView) findViewById(R.id.imageView1);/** * 加载回调 */FrescoCallback callback = new FrescoCallback() { @Override public void succeed(String id, ImageInfo imageInfo, Animatable animatable) { super.succeed(id, imageInfo, animatable); Log.e("AcmenXD", "onSuccess"); if (imageInfo != null) { QualityInfo qualityInfo = imageInfo.getQualityInfo(); Log.e("AcmenXD", appendStrs("Size: ", imageInfo.getWidth(), " x ", imageInfo.getHeight())); Log.e("AcmenXD", appendStrs("Quality level: ", qualityInfo.getQuality())); Log.e("AcmenXD", appendStrs("good enough: ", qualityInfo.isOfGoodEnoughQuality())); Log.e("AcmenXD", appendStrs("full quality: ", qualityInfo.isOfFullQuality())); } if (animatable != null) { animatable.start(); } } @Override public void failed(String id, Throwable throwable) { super.failed(id, throwable); Log.e("AcmenXD", "onFailure"); }};iv.image() .setImageURI(R.color.colorAccent) .setImageURI(R.mipmap.ic_launcher) .setImageURI("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1854928198,1677845423&fm=23&gp=0.jpg") //gif|webp格式 .setBackgroundImage(getResources().getDrawable(R.color.colorPrimary)) .setPlaceholderImage(R.color.colorAccent) .setProgressBarImage(R.mipmap.ic_launcher) .setFailureImage(R.color.colorAccent) .setRetryImage(R.mipmap.ic_launcher) .setProgressBarImage(R.color.colorAccent) .setLocalThumbnailPreviewsEnabled(true) .setProgressiveRenderingEnabled(true) .setAutoPlayAnimations(true) .setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER) .setRoundingParams(30, Color.BLACK, 0, 0, false) .setFadeDuration(0) .setControllerListener(callback)// .setFirstAvailableImageURIs(// "http://image52.360doc.com/DownloadImg/2012/06/0316/24581213_7.jpg",// "http://image52.360doc.com/DownloadImg/2012/06/0316/24581213_6.jpg")// .setAspectRatio(10, 3)// .setPressedStateOverlay(getResources().getDrawable(R.mipmap.ic_launcher)) .commit();
打个小广告^_^
gitHub : https://github.com/AcmenXD 如对您有帮助,欢迎点Star支持,谢谢~
技术博客 : http://blog.csdn.net/wxd_beijing
END
0 0
- fresco -> FrescoView
- Fresco
- Fresco
- Fresco
- fresco
- Fresco
- fresco
- Fresco
- Fresco
- Fresco
- Fresco
- Fresco
- Fresco
- fresco
- Fresco
- Fresco
- Fresco
- Fresco
- 移动虚拟现实的五种主要的运动机制
- E: 无法获得锁 /var/lib/dpkg/lock
- linux进程详解
- 数据库隔离级别
- freeMark中遍历list集合
- fresco -> FrescoView
- 使用maevn项目的mybatis基础配置及使用
- android 图片加载库 Glide 的使用介绍
- reverse-nodes-in-k-group
- yii 框架
- 【数论】[CQOI2017]小 Q 的表格
- iOS开发 Xcode8中遇到的问题及改动
- JavaScript之Screen对象(BOM)
- 遍历ResultSet结果集的列信息