0

linearlayout があり、最後に「addView(linearlayout)」したいのですが、レイアウトをズームしたいのですが、どうすればよいですか? 私はこの同様の質問を検索し、解決策を得ました.jarを提供しましたが、追加したレイアウトに何かを描画する前にレイアウトをズームすることしかできず、毎回2つのビューが表示されるという問題があります.元のビューは、私が言ったようにズームできます。これはリンクです。どうすれば修正できますか? ありがとう

ここにリンクの説明を入力

4

1 に答える 1

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

必要な正確なソリューションを得るには、おそらくもう少し微調整する必要がありますが、これは始めるのに役立つはずです:)

お役に立てれば :)

于 2013-10-10T03:36:47.287 に答える