android - 如何在多点触控上缩放整个 Activity ?

标签 android android-activity zooming

问题:

缩放图像和 WebView 很容易。但我想放大整个 Activity 。我该怎么做?

这里,我提供线框:

Wire-Frame-Of-Activity

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

请求

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

最佳答案

您可以通过缩放根 Activity View 来模拟放大和缩小。下面是一些入门代码:

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

请注意, Activity 将在单击时放大,而不是在双击时放大。此外,您可能想要为缩放设置动画。查找 Property Animation有关如何完成此操作的详细信息。

[编辑] 对于较旧的 API 级别,您可以使用 ScaleAnimation。您还可以设置动画的持续时间。然而,一个主要的警告是它只修改了 View 的外观,而实际的 View 并没有改变。

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;

关于android - 如何在多点触控上缩放整个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14806618/

相关文章:

android - 如何登录linkedin发送访问 token 到服务器端

android - 错误 :Failed to resolve: com. google.firebase :firebase-core:11. 0.0

java - 返回 Activity 时的媒体播放器

Android:从互联网读取、处理和显示文本文件

swift - ViewController 动画,如缩放

android - 如何修改 TouchImageView 双击放大缩小?

java - 添加额外类时找不到 Android 源

android - 你如何在 android 中调用 web 服务,即使 Activity 在后台,它也会继续等待响应?

android - 如何在 slide_left 动画期间开始新 Activity 之间删除黑色背景?

c# - ZedGraph如何检测放大或缩小?