照片浏览器--支持缩放和双击缩放(一)

(首先声明这是来自github的内容,本人只是搬运工。他在github中提供了工程,介绍了一个复用的控件:PhotoView,然后给了2个应用实例)


这个工程具有以下功能

  • 通过多点触摸或者双击实现图片缩放
  • 实现平滑快速滑动(fling)的卷动
  • 可以完美运行在可滑动的父控件(比如ViewPager)上
  • 当显示的矩阵发生改变时,应用程序可以得到通知。这点对需要通过当前的放缩/滑动的位置来更新UI非常有用。
  • 当点击触摸图片时,应用程序可以得到通知。
        

附件文件中有2个工程,一个是这边文章介绍的主题:phoview,这个工程是library形式存在的,如下图。


另一个是对PhotoView的实例应用:对单张图片的缩放,对多个图片的应用(应用性很强)。下面就介绍下工程的结构。

     Library工程:

        

       工程有7个java文件组成,之所以有这么多文件是因为工程考虑Android的效率,根据SDK版本的不同使用不同的实现,当使用高版本的SDK时,会使用高版本的API,这样的好处是高版本的API要比低版本的同样的API执行效率要高。

首先我们先看Compat.java和SDK16.java两个文件,这两个是相关的文件。

public class Compat {
	
	private static final int SIXTY_FPS_INTERVAL = 1000 / 60;
	
	public static void postOnAnimation(View view, Runnable runnable) {
		if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
			SDK16.postOnAnimation(view, runnable);
		} else {
			view.postDelayed(runnable, SIXTY_FPS_INTERVAL);
		}
	}

}
@TargetApi(16)
public class SDK16 {

	public static void postOnAnimation(View view, Runnable r) {
		view.postOnAnimation(r);
	}
	
}
观察不难发现这2个类的就是对view对象添加一个 runable消息队列中,不同之处在于在sdk>16,即版本高于4.1的使用的时View.postOnAnimation方法,低于16时使用View.postDelayed()。
       我们可以将ScrollerProxy.java和VesionedGestureDetector.java规成一类,他们的作用就是针对sdk不同的版本对相同的接口实现不同实例化。SrollerProxy.java的两个实现话的分割点是sdk = 9(2.3版本),在早于2.3使用的时Scroller类,2.3之后使用OverScroller类,通过观察API我们发现OverScroller类的对用就是替代的Scroller类。VersionedGestureDetector.java同样类似,大家可以通过下载源码观察。

       IPhoneView.java是一个接口类。
工程下载URL



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值