如何缩放动态布局?

时间:2013-10-10 03:22:21

标签: android layout zoom

有一个linearlayout,并希望在最后“addView(linearlayout)”,现在我想缩放布局,我该怎么做? 我已经搜索了这个类似的问题,并得到了一个解决方案,它提供了一个jar,但它只能在我添加的布局上绘制内容之前缩放布局,并且它有一个问题是它每次显示两个视图,一个是原始视图,一个可以像我说的那样放大,这是链接,我该如何解决?感谢

enter link description here

1 个答案:

答案 0 :(得分:1)

尝试在布局上执行缩放动画?

首先创建以下实例变量:

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;
    }
});

最后,覆盖活动中的onTouch方法,将其连接到比例检测器:

@Override
public boolean onTouchEvent(MotionEvent event) 
{
    mScaleDetector.onTouchEvent(event);
    return super.onTouchEvent(event);
}

您可能需要稍微调整一下以获得您想要的确切解决方案,但这应该有助于您入门:)

希望这会有所帮助:)