我一直在使用复杂布局的应用程序.我最近意识到我需要使部分或全部的布局可以缩放.
我的一个主要的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());