如何在多点触控上缩放整个活动?

时间:2013-02-11 05:51:15

标签: android android-activity zooming

Problem:

可以轻松缩放图像和Web视图。但我想缩放整个活动。我怎么能这样做?

Here, I provide wire-frame:

Wire-Frame-Of-Activity

从中你可以理解,我想做什么。

Request

如果您有任何解决方案,请分享。
谢谢。

2 个答案:

答案 0 :(得分:16)

您可以通过缩放根活动视图来模拟放大和缩小。这是一些入门代码:

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

注意,活动将缩放单击,而不是双击时缩放。此外,您可能希望为缩放设置动画。查看Property Animation了解如何完成此操作的详细信息。

[编辑] 对于较旧的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;

答案 1 :(得分:0)

您可以使用setScaleXsetScaleY缩放完整活动视图

然后,您需要使用setPivotXsetPivotY设置轴心点。

有关整个活动细节的优秀示例使用多点触控进行缩放:

1)MultiTouch用于整个活动。

2)Zooming完全查看。