pinchImageView是一个能够实现完美图片手势操作的框架,包括,捏合手势放大缩小,双击放大缩小,大图边界和小图回弹效果。里面为了防止发生抖动,采用了对象池的方式,感觉挺有意思,记录分析一下。
项目源码地址:https://github.com/boycy815/PinchImageView
对象池父类
private static abstract class ObjectsPool<T> {
private int mSize;
private Queue<T> mQueue;
public ObjectsPool(int size) {
mSize = size;
mQueue = new LinkedList<T>();
}
public T take() {
if (mQueue.size() == 0) {
return newInstance();
} else {
return resetInstance(mQueue.poll());
}
}
public void given(T obj) {
if (obj != null && mQueue.size() < mSize) {
mQueue.offer(obj);
}
}
abstract protected T newInstance();
abstract protected T resetInstance(T obj);
}
private static class MatrixPool extends ObjectsPool<Matrix> {
public MatrixPool(int size) {
super(size);
}
@Override
protected Matrix newInstance() {
return new Matrix();
}
@Override
protected Matrix resetInstance(Matrix obj) {
obj.reset();
return