【问题标题】:How to zoom a dynamic layout?如何缩放动态布局?
【发布时间】:2013-10-17 16:01:15
【问题描述】:

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

enter link description here

【问题讨论】:

    标签: android layout zooming


    【解决方案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;
        }
    });
    

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

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

    您可能需要对其进行更多调整才能获得所需的确切解决方案,但这应该有助于您入门:)

    希望这会有所帮助:)

    【讨论】:

    • 我想用手指缩放布局,就像多点缩放一样,谢谢你的回答:)
    • 我为你添加了一个更完整的解决方案:
    • 谢谢,我明白了,它可以工作,但不是很稳定,也许应该稍微调整一下,但性能是相对于全屏显示的,
    • 太好了,很高兴我能提供帮助。如果这篇文章对你有帮助,请随时接受答案:)
    • 很抱歉,最后的评论不完整,它没有完全满足我的要求。我希望比例相对于全屏,缩放时视图的边缘仍然沿着屏幕,但不是像一幅画,移动到屏幕的中心或其他地方。个人认为这种表现可以用画布绘制,但具体细节不清楚。:)
    猜你喜欢
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多