web-dev-qa-db-ja.com

マルチタッチでアクティビティ全体をズームするにはどうすればよいですか?

Problem:

画像やウェブビューをズームするのは簡単です。しかし、私はアクティビティ全体をズームしたいと思います。これどうやってするの?

Here, I provide wire-frame:

Wire-Frame-Of-Activity

これから、私が何をしたいのか理解できます。

Request

これに対する解決策があれば、共有してください。
ありがとうございました。

35
Darshak

ルートアクティビティビューを拡大縮小することで、ズームインとズームアウトをシミュレートできます。スターターコードは次のとおりです。

View v = findViewById(Android.R.id.content); // get reference to root activity view
v.setOnClickListener(new OnClickListener() {
    float zoomFactor = 1.5f;
    boolean zoomedOut = false;

    @Override
    public void onClick(View v) {
        if(zoomedOut) { 
            // now zoom in
            v.setScaleX(1);
            v.setScaleY(1);
            zoomedOut = false;
        }
        else {
            v.setScaleX(zoomFactor);
            v.setScaleY(zoomFactor);
            zoomedOut = true;
        }
    }
});

アクティビティは、ダブルタップでズームするのではなく、シングルクリックでズームすることに注意してください。また、ズームをアニメーション化することもできます。これを実現する方法の詳細については、 プロパティアニメーション を参照してください。

[編集]古いAPIレベルの場合、ScaleAnimationを使用できます。アニメーションの長さを設定することもできます。ただし、主な注意点は、ビューの外観を変更するだけで、実際のビューは変更されないことです。

if(zoomedOut) { // zoom in
    ScaleAnimation anim = new ScaleAnimation(1f, 1.5f, 1f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    anim.setDuration(500);
    anim.setFillAfter(true);
    v.startAnimation(anim);
    zoomedOut = false;
}
else {
    ScaleAnimation anim = new ScaleAnimation(1.5f, 1f, 1.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    anim.setDuration(500);
    anim.setFillAfter(true);
    v.startAnimation(anim);
    zoomedOut = true;
16
Barney

setScaleXおよびsetScaleYを使用して、完全なアクティビティビューをズームできます。

次に、setPivotXsetPivotYを使用してピボットポイントを設定する必要があります。

マルチタッチによるアクティビティズーム全体の詳細を含む良い例:

1) MultiTouch アクティビティ全体。

2) ズーム 完全に表示します。

1
My God