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