android 图片 居中 手势缩放 设置缩放比例,自定义View利用手势检测实现图片放大缩小...

但现在还存在一些问题:

1、缩放的中心点,我们设置是固定的,只在屏幕中间

2、放大后,无法移动图片

下面就解决这些问题

设置缩放中心

1、单纯的设置缩放中心

仅仅是设置中心很简单,直接在onScale中修改下中心点 :

mScaleMatrix.postScale(scaleFactor, scaleFactor,                       detector.getFocusX(), detector.getFocusX());               setImageMatrix(mScaleMatrix);

但是,随意的中心点放大、缩小,会导致图片的位置的变化,最终导致,图片宽高大于屏幕时,图片与屏幕间出现白边;图片小于屏幕,但是不居中。

2、控制缩放时图片显示的范围

所以我们在缩放的时候需要手动控制下范围:

private void checkBorder() {

RectF rect = getMatrixRectF();

float deltaX = 0;

float deltaY = 0;

int width = getWidth();

int height = getHeight();

// 如果宽或高大于屏幕,则控制范围

if (rect.width() >= width) {

if (rect.left > 0) {

deltaX = -rect.left;

}

if (rect.right

deltaX = width - rect.right;

}

}

if (rect.height() >= height) {

if (rect.top > 0) {

deltaY = -rect.top;

}

if (rect.bottom

deltaY = height - rect.bottom;

}

}

// 如果宽或高小于屏幕,则让其居中

if (rect.width()

deltaX = width * 0.5f - rect.right + 0.5f * rect.width();

}

if (rect.height()

deltaY = height * 0.5f - rect.bottom + 0.5f * rect.height();

}

mScaleMatrix.postTranslate(deltaX, deltaY);

}

现在图片缩放的功能就实现了

源代码

参考:

http://blog.csdn.net/flash129/article/details/8234599

http://www.360doc.com/content/14/0610/21/16623487_385518125.shtml

http://www.cnblogs.com/pen-ink/archive/2013/06/05/3118289.html

http://blog.csdn.net/liguangzhenghi/article/details/8076121

http://blog.csdn.net/lmj623565791/article/details/39474553

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值