Fresco使用PhotoDraweeView 实现图片的手势缩放
1.gradle引入Fresco
compile 'com.facebook.fresco:fresco:0.11.0+'
2.在application中初始化Fresco
Fresco.initialize(this, ImagePipelineConfigFactory.getImagePipelineConfig(this));
3.PhotoDraweeView的下载地址
https://github.com/ongakuer/PhotoDraweeView
4.PhotoDraweeView结构
5.添加PhotoDraweeView控件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:fresco="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><me.relex.photodraweeview.PhotoDraweeViewandroid:id="@+id/pv_picture"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>
6.实现
PipelineDraweeControllerBuilder controller = Fresco.newDraweeControllerBuilder(); controller.setUri( Uri.parse(photopath)); controller.setOldController(pv_picture.getController()); controller.setControllerListener(new BaseControllerListener<ImageInfo>() {@Overridepublic void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {super.onFinalImageSet(id, imageInfo, animatable);if (imageInfo == null) {return;}pv_picture.update(imageInfo.getWidth(), imageInfo.getHeight());} }); pv_picture.setController(controller.build());
7.在PhotoDraweeView下面的方法里。可以使用Matrix对象修改图片显示属性
@Override protected void onDraw( Canvas canvas) {int saveCount = canvas.save();//这里改显示比例canvas.concat(mAttacher.getDrawMatrix());super.onDraw(canvas);canvas.restoreToCount(saveCount); }
8.上面第二点ImagePipelineConfigFactory,是关于Fresco的初始化配置的,代码如下:
import android.content.Context; import com.facebook.cache.disk.DiskCacheConfig; import com.facebook.common.internal.Supplier; import com.facebook.imagepipeline.cache.MemoryCacheParams; import com.facebook.imagepipeline.core.ImagePipelineConfig;/*** Creates ImagePipeline configuration for the sample app*/ public class ImagePipelineConfigFactory {private static final String IMAGE_PIPELINE_CACHE_DIR = "imagepipeline_cache";private static ImagePipelineConfig sImagePipelineConfig;/*** Creates config using android http stack as network backend.*/public static ImagePipelineConfig getImagePipelineConfig(Context context) {if (sImagePipelineConfig == null) {ImagePipelineConfig.Builder configBuilder = ImagePipelineConfig.newBuilder(context);configureCaches(configBuilder, context);sImagePipelineConfig = configBuilder.build();}return sImagePipelineConfig;}/*** Configures disk and memory cache not to exceed common limits*/private static void configureCaches(ImagePipelineConfig.Builder configBuilder,Context context) {//内存缓存配置final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(ConfigConstants.MAX_MEMORY_CACHE_SIZE, // Max total size of elements in the cacheConfigConstants.MAX_CACHE, // Max entries in the cacheConfigConstants.MAX_MEMORY_CACHE_SIZE, // Max total size of elements in eviction queueConfigConstants.MAX_CACHE, // Max length of eviction queueConfigConstants.MAX_CACHE); // Max cache entry sizeconfigBuilder//内存图片缓存数量.setBitmapMemoryCacheParamsSupplier(new Supplier<MemoryCacheParams>() {@Overridepublic MemoryCacheParams get() {return bitmapCacheParams;}}).setMainDiskCacheConfig(//磁盘缓存设置DiskCacheConfig.newBuilder().setBaseDirectoryPath(context.getApplicationContext().getCacheDir()) //基本路径名.setBaseDirectoryName(IMAGE_PIPELINE_CACHE_DIR) //基本路径名名称.setMaxCacheSize(ConfigConstants.MAX_DISK_CACHE_SIZE)//磁盘缓存的最大大小.build());}}
Fresco使用PhotoDraweeView 实现图片的手势缩放相关推荐
- android 图片 居中 手势缩放 设置缩放比例,ImageView通过matrix实现手势缩放
关于ImageView的手势缩放,有很多种方法,绝大多数开源自定义缩放都是修改了ondraw函数来实现的.但是ImageView本身有scaleType属性,通过设置android:scaleType ...
- Android 图片随着手势缩放,平移,并且支持多点触控
效果图: 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 想要做到图片支持多点触控,自由的进行 ...
- js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
原文:js实现移动端图片预览:手势缩放, 手势拖动,双击放大... 前言 本文将介绍如何通过js实现移动端图片预览,包括图片的 预览模式,手势缩放,手势拖动,双击放大等基本功能: 扫码查看示例效果: ...
- 在c 语言里如何制作滑动图片大小,[教程]教你在微信小程序中实现手势缩放图片...
在小程序中,image 组件的 mode 有 12 种,其中只有三种是缩放模式.而在这三种之中,只有 aspectFit 模式可以等比例缩放图片,并显示完整的图片.此模式是保证图片长边完整地显示出来, ...
- Android之GestureDetector-简单手势操作及通过手势缩放图片,我离职后面试收割小米等大厂offer
Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDete ...
- html img 手势缩放,微信小程序中利用image组件实现图片手势缩放
微信小程序中利用image组件实现图片手势缩放,前端大神严灏的牛文,讲解了微信小程序中image组件的三种是缩放模式,三种之中,只有 aspectFit 模式可以等比例缩放图片,并显示完整的图片. 原 ...
- 安卓开发仿微信图片拖拽_Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动)...
[实例简介] Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动) [实例截图] [核心代码] ImageDemo-2014-02-18 └── ImageDemo-2014-02-18 ├ ...
- html手机端点击图片放大并根据手势缩放
手机端实现点击图片放大根据手势放大缩小 效果如下 进入页面 背景是白色的 点击图片后放大并居中背景变为黑色 效果如下 可以根据手势缩放 演示完毕,上代码 需要先引入一个js文件 网盘链接: https ...
- Opencv项目实战:15 手势缩放图片
目录 0.项目介绍 1.项目展示 2.项目搭建 3.项目的代码与讲解 4.项目资源 5.项目总结 0.项目介绍 本篇将会以HandTrackingModule为模块,这里的模块与之前的有所不同,请按照 ...
最新文章
- c# 文件及目录操作类
- Bytes int java_Java Bytes.readInt方法代码示例
- zimbra xxe+ssrf 导致 getshell
- layui 日期重置_日期时间插件--日期时间组件文档 - layui.laydate
- LeetCode刷题(2)
- 在构造函数中使用new时应注意的事项
- en 2014-12-31
- 微信小程序官方开发文档
- 高等数学:第九章 重积分(1)二重积分的概念、计算法和应用
- 怎么设置服务器共享文件夹在哪里设置密码,共享文件夹怎么设置密码
- IDEA maven process terminated
- Entity Framework Code First 学习日记(4)
- odoo12:上传图片,默认显示图标
- GBase 8c基础操作
- P3654 First Step (ファーストステップ)——暴力枚举
- 不要写死!天猫App的动态化配置中心实践
- mac系统ionic开发ios app从安装到打包
- 嵌入式:ARM指令集分类及编码
- SOLIDWORKS Composer关键帧-制作动画的利器
- 试用了8款微信群裂变营销工具!这里给你推荐1款!