美文网首页
支持手势photoview源码分析记录

支持手势photoview源码分析记录

作者: 辣公公 | 来源:发表于2017-01-10 18:25 被阅读79次

工程结构

这里是做记录的,废话不多说先上项目图大体上分为四个部分

  • gestures包 与手势相关的操作
  • log包 日志相关
  • scrollerproxy包 与滚动相关
  • 剩下的就是核心代码 (图片的缩放)


    工程结构

gestures包

  1. UML类图


    类图
  2. 接口
  • GestureDetector
 public interface GestureDetector {
  //处理Imageview的OnTouchListener,详情见PhotoViewAttacher 类
  boolean onTouchEvent(MotionEvent ev);
  //是否真正缩放
  boolean isScaling();
 //是否正在拖拽,也就是手指没有离开Imagview 
  boolean isDragging();
  //将一些手指状态返回,外部做处理
  void setOnGestureListener(OnGestureListener listener);
}
public interface OnGestureListener {
    //拖拽时调用  dx 水平方向发生的位置 dy 竖直方向发生的位移
    void onDrag(float dx, float dy);
    //快速滑动离开ImageView时调用,startX startY手指离开时的X,Y 坐标
    //velocityX 水平方向的速度,velocityY 竖直方向的速度
    void onFling(float startX, float startY, float velocityX,float velocityY);
  //缩放时调用 缩放比例 手指点击的地方的X Y 坐标
    void onScale(float scaleFactor, float focusX, float focusY);
}
  • 工具类 VersionedGestureDetector
public final class VersionedGestureDetector {
      //根据版本生成一个 GestureDetector 对象
    public static GestureDetector newInstance(Context context,
                                              OnGestureListener listener) {
        final int sdkVersion = Build.VERSION.SDK_INT;
        GestureDetector detector;
        if (sdkVersion < Build.VERSION_CODES.ECLAIR) {
            detector = new CupcakeGestureDetector(context);
        } else if (sdkVersion < Build.VERSION_CODES.FROYO) {
            detector = new EclairGestureDetector(context);
        } else {
            detector = new FroyoGestureDetector(context);
        }
        detector.setOnGestureListener(listener);
        return detector;
    }
}

相关文章

  • 支持手势photoview源码分析记录

    工程结构 这里是做记录的,废话不多说先上项目图大体上分为四个部分 gestures包 与手势相关的操作 log包 ...

  • ViewDragHelper解析以及侧滑控件实现

    在前一篇文章从PhotoView看Android手势监听实践中,介绍了PhotoView这一控件的手势控制的分析,...

  • 图片预览组件PhotoView

    图片预览组件PhotoView PhotoView是一款图片预览组件,广泛应用于大图的查看。该组件支持图片手势缩放...

  • PhotoView源码分析

    最近打算学习一下图片相关的处理知识,首先学习缩放显示,而这个控件是我了解到比较好的,果断学习之。 源码版本是:2....

  • 图片

    手势图片控件 PinchImageView 点击图片框架 photoView packagecom.example...

  • 开源项目photoview获取图片大小以及偏移量并还原

    因为需要一个支持手势缩放和平移的控件,所以上github找到了这个直接拿来用了photoview 我是需要定时网络...

  • 从PhotoView看Android手势监听实践

    PhotoView 在做图片缩放的组件或者有类似的需求功能时提供了极大的便利,自身功能也是十分强大。比如 支持手势...

  • 一个不错的手势返回组件

    SJFullscreenPopGesture 可以支持边沿手势返回和全屏手势返回源码库地址 集成使用简便 Inst...

  • Android之PhotoView使用

    文章大纲 一、什么是PhotoView二、代码实战三、项目源码下载 一、什么是PhotoView   一款 Ima...

  • NT 技术周刊-0909

    ReactNative 大图手势浏览技术分析[原创] 摘要 支持通用的手势缩放,手势跟随,多图翻页作者 黄子毅推...

网友评论

      本文标题:支持手势photoview源码分析记录

      本文链接:https://www.haomeiwen.com/subject/jpakbttx.html