我一直在使用复杂布局的应用程序.我最近意识到我需要使部分或全部的布局可以缩放.
我的一个主要的xml文件具有线性布局,其中嵌有多个布局以正确定位视图.有一个简单的方法来使这种线性布局和一切都在可缩放的范围内?还是使整个布局文件变得更容易?我有什么选择?
解决方法
首先用具体的观点来扩展该类
- public class MyImageView extends ImageView{
覆盖以下方法.
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.save();
- canvas.scale(mScaleFactor,mScaleFactor,midPoint.x,midPoint.y);
- if(appInitialized) {
- hsSide.draw(canvas);
- scaleA.draw(canvas);
- scaleB.draw(canvas);
- }
- canvas.restore();
- }
创建一个能够检测缩放对象大小的手势检测器,您可以限制以避免重叠.
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mScaleFactor *= detector.getScaleFactor();
- pivotX = detector.getFocusX();
- pivotY = detector.getFocusY();
- // Don't let the object get too small or too large.
- mScaleFactor = Math.max(0.8f,Math.min(mScaleFactor,2.0f));
- invalidate();
- return true;
- }
- }
最后初始化对象
- ScaleGestureDetector mScaleDetector;
- mScaleDetector = new ScaleGestureDetector(context,new ScaleListener());