How to zoom whole activity on multi touch?

被刻印的时光 ゝ 提交于 2019-11-29 22:54:22

You can simulate zooming in and out by scaling the root activity view. Here's some starter code:

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

Note, the activity will zoom on single clicks as opposed to zooming upon double tap. Also, you probably want to animate the zooming. Look up Property Animation for details how to accomplish this.

[EDIT] For older API levels, you can use ScaleAnimation. You can also set the duration of the animation. However, a major caveat is that it only modifies the look of the view, but the actual view doesn't change.

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;
My God

You can use setScaleX and setScaleY to zoom the complete activity view.

Then you need to set the pivot point with setPivotX and setPivotY.

The good examples with details for the whole activity zoom with multitouch:

1) MultiTouch for whole activity.

2) Zooming view completely.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!