【发布时间】:2013-10-17 16:01:15
【问题描述】:
有一个线性布局,最后想“addView(linearlayout)”,现在我想缩放布局,我应该怎么做? 我已经搜索了这个类似的问题,并得到了一个解决方案,它提供了一个 jar,但它只能在我在我添加的布局上绘制一些东西之前缩放布局,它的问题是它每次显示两个视图,一个是原始视图,一个可以像我说的那样缩放,这是链接,我该如何解决?谢谢
【问题讨论】:
有一个线性布局,最后想“addView(linearlayout)”,现在我想缩放布局,我应该怎么做? 我已经搜索了这个类似的问题,并得到了一个解决方案,它提供了一个 jar,但它只能在我在我添加的布局上绘制一些东西之前缩放布局,它的问题是它每次显示两个视图,一个是原始视图,一个可以像我说的那样缩放,这是链接,我该如何解决?谢谢
【问题讨论】:
尝试在布局上执行缩放动画?
首先创建以下实例变量:
private float mScale = 1f;
private ScaleGestureDetector mScaleDetector;
使用 ScaleAnimation 启动您的比例手势检测器:
mScaleDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.SimpleOnScaleGestureListener()
{
@Override
public boolean onScale(ScaleGestureDetector detector)
{
float scale = 1 - detector.getScaleFactor();
float prevScale = mScale;
mScale += scale;
if (mScale < 0.1f) // Minimum scale condition:
mScale = 0.1f;
if (mScale > 10f) // Maximum scale condition:
mScale = 10f;
ScaleAnimation scaleAnimation = new ScaleAnimation(1f / prevScale, 1f / mScale, 1f / prevScale, 1f / mScale, detector.getFocusX(), detector.getFocusY());
scaleAnimation.setDuration(0);
scaleAnimation.setFillAfter(true);
myContainer.startAnimation(scaleAnimation);
return true;
}
});
最后,覆盖 Activity 中的 onTouch 方法,将其连接到比例检测器:
@Override
public boolean onTouchEvent(MotionEvent event)
{
mScaleDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
您可能需要对其进行更多调整才能获得所需的确切解决方案,但这应该有助于您入门:)
希望这会有所帮助:)
【讨论】: