Android 手势检测实战 打造支持缩放平移的图片预览效果(上)

文章详细描述了如何在Android应用中使用ScaleGestureDetector实现图片的缩放功能,包括缩放范围控制、中心点设置以及在屏幕尺寸变化时的图片调整。作者还讨论了解决缩放中心点问题和保持图片显示范围的技巧。
摘要由CSDN通过智能技术生成

super.setScaleType(ScaleType.MATRIX);

mScaleGestureDetector = new ScaleGestureDetector(context, this);

this.setOnTouchListener(this);

}

@Override

public boolean onScale(ScaleGestureDetector detector)

{

float scale = getScale();

float scaleFactor = detector.getScaleFactor();

if (getDrawable() == null)

return true;

/**

  • 缩放的范围控制

*/

if ((scale < SCALE_MAX && scaleFactor > 1.0f)

|| (scale > initScale && scaleFactor < 1.0f))

{

/**

  • 最大值最小值判断

*/

if (scaleFactor * scale < initScale)

{

scaleFactor = initScale / scale;

}

if (scaleFactor * scale > SCALE_MAX)

{

scaleFactor = SCALE_MAX / scale;

}

/**

  • 设置缩放比例

*/

mScaleMatrix.postScale(scaleFactor, scaleFactor, getWidth() / 2,

getHeight() / 2);

setImageMatrix(mScaleMatrix);

}

return true;

}

@Override

public boolean onScaleBegin(ScaleGestureDetector detector)

{

return true;

}

@Override

public void onScaleEnd(ScaleGestureDetector detector)

{

}

@Override

public boolean onTouch(View v, MotionEvent event)

{

return mScaleGestureDetector.onTouchEvent(event);

}

/**

  • 获得当前的缩放比例

  • @return

*/

public final float getScale()

{

mScaleMatrix.getValues(matrixValues);

return matrixValues[Matrix.MSCALE_X];

}

@Override

protected void onAttachedToWindow()

{

super.onAttachedToWindow();

getViewTreeObserver().addOnGlobalLayoutListener(this);

}

@SuppressWarnings(“deprecation”)

@Override

protected void onDetachedFromWindow()

{

super.onDetachedFromWindow();

getViewTreeObserver().removeGlobalOnLayoutListener(this);

}

@Override

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值