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 实现图片的手势缩放相关推荐

  1. android 图片 居中 手势缩放 设置缩放比例,ImageView通过matrix实现手势缩放

    关于ImageView的手势缩放,有很多种方法,绝大多数开源自定义缩放都是修改了ondraw函数来实现的.但是ImageView本身有scaleType属性,通过设置android:scaleType ...

  2. Android 图片随着手势缩放,平移,并且支持多点触控

    效果图: 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 想要做到图片支持多点触控,自由的进行 ...

  3. js实现移动端图片预览:手势缩放, 手势拖动,双击放大...

    原文:js实现移动端图片预览:手势缩放, 手势拖动,双击放大... 前言 本文将介绍如何通过js实现移动端图片预览,包括图片的 预览模式,手势缩放,手势拖动,双击放大等基本功能: 扫码查看示例效果: ...

  4. 在c 语言里如何制作滑动图片大小,[教程]教你在微信小程序中实现手势缩放图片...

    在小程序中,image 组件的 mode 有 12 种,其中只有三种是缩放模式.而在这三种之中,只有 aspectFit 模式可以等比例缩放图片,并显示完整的图片.此模式是保证图片长边完整地显示出来, ...

  5. Android之GestureDetector-简单手势操作及通过手势缩放图片,我离职后面试收割小米等大厂offer

    Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDete ...

  6. html img 手势缩放,微信小程序中利用image组件实现图片手势缩放

    微信小程序中利用image组件实现图片手势缩放,前端大神严灏的牛文,讲解了微信小程序中image组件的三种是缩放模式,三种之中,只有 aspectFit 模式可以等比例缩放图片,并显示完整的图片. 原 ...

  7. 安卓开发仿微信图片拖拽_Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动)...

    [实例简介] Android仿微信朋友圈图片浏览器(支持图片手势缩放,拖动) [实例截图] [核心代码] ImageDemo-2014-02-18 └── ImageDemo-2014-02-18 ├ ...

  8. html手机端点击图片放大并根据手势缩放

    手机端实现点击图片放大根据手势放大缩小 效果如下 进入页面 背景是白色的 点击图片后放大并居中背景变为黑色 效果如下 可以根据手势缩放 演示完毕,上代码 需要先引入一个js文件 网盘链接: https ...

  9. Opencv项目实战:15 手势缩放图片

    目录 0.项目介绍 1.项目展示 2.项目搭建 3.项目的代码与讲解 4.项目资源 5.项目总结 0.项目介绍 本篇将会以HandTrackingModule为模块,这里的模块与之前的有所不同,请按照 ...

最新文章

  1. c# 文件及目录操作类
  2. Bytes int java_Java Bytes.readInt方法代码示例
  3. zimbra xxe+ssrf 导致 getshell
  4. layui 日期重置_日期时间插件--日期时间组件文档 - layui.laydate
  5. LeetCode刷题(2)
  6. 在构造函数中使用new时应注意的事项
  7. en 2014-12-31
  8. 微信小程序官方开发文档
  9. 高等数学:第九章 重积分(1)二重积分的概念、计算法和应用
  10. 怎么设置服务器共享文件夹在哪里设置密码,共享文件夹怎么设置密码
  11. IDEA maven process terminated
  12. Entity Framework Code First 学习日记(4)
  13. odoo12:上传图片,默认显示图标
  14. GBase 8c基础操作
  15. P3654 First Step (ファーストステップ)——暴力枚举
  16. 不要写死!天猫App的动态化配置中心实践
  17. mac系统ionic开发ios app从安装到打包
  18. 嵌入式:ARM指令集分类及编码
  19. SOLIDWORKS Composer关键帧-制作动画的利器
  20. 试用了8款微信群裂变营销工具!这里给你推荐1款!

热门文章

  1. python tornado异步_python tornado异步性能测试
  2. 记录极致cms当前位置间隔符号替换
  3. 51单片机控制的收音机(带串口,遥控,芯片89S52+LC72131+LA1845N)
  4. arduino学习笔记二十二--模拟交通信号灯
  5. spring 自带的定时器task
  6. 正常计算机的c盘空间多大,电脑C盘应该留多大空间?
  7. BSN-DDC基础网络的DID功能设计
  8. HTML表单、表格制作个人简历
  9. keil5编译报错问题
  10. 猿如意|程序员的如意神器之【chat GPT】测评。