Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据设备类型缩放壁纸图像_Android_Wallpaper - Fatal编程技术网

Android 如何根据设备类型缩放壁纸图像

Android 如何根据设备类型缩放壁纸图像,android,wallpaper,Android,Wallpaper,我正在开发一个应用程序,在这个应用程序中,设备的壁纸图像应该以固定的间隔进行更改。我把这些图像保存在可绘制的文件夹中。我正在使用墙纸管理器将这些图像设置为墙纸 为了确保该应用程序在各种设备上运行良好,我在res目录中的各种文件夹(如drawable small、drawable xlarge文件夹)中保存了不同大小图像的多个副本。但是,这些并不能在每台设备上正确缩放 我的问题是如何确保墙纸图像能够很好地安装在每台设备上。我必须以编程的方式来做吗?任何示例代码都会有巨大的帮助。谢谢 这是我使用的代

我正在开发一个应用程序,在这个应用程序中,设备的壁纸图像应该以固定的间隔进行更改。我把这些图像保存在可绘制的文件夹中。我正在使用墙纸管理器将这些图像设置为墙纸

为了确保该应用程序在各种设备上运行良好,我在res目录中的各种文件夹(如drawable small、drawable xlarge文件夹)中保存了不同大小图像的多个副本。但是,这些并不能在每台设备上正确缩放

我的问题是如何确保墙纸图像能够很好地安装在每台设备上。我必须以编程的方式来做吗?任何示例代码都会有巨大的帮助。谢谢

这是我使用的代码

Drawable drawable;
WallpaperManager wpm;

@Override
    public void onCreate() {
        super.onCreate();
        wpm=WallpaperManager.getInstance(WallAlarm.this);
        drawable = getResources().getDrawable(R.drawable.two);
    }

     Bitmap wallpaper=((BitmapDrawable)drawable).getBitmap();
     ImageView iv=new ImageView(this);
     iv.setImageDrawable(drawable);
     iv.setScaleType(ScaleType.FIT_XY);

     try {
            wpm.setBitmap(wallpaper);
     } catch (IOException e) {
            e.printStackTrace();
     }

}

}
你可以用

Display display = Activity.getWindowManager().GetDefaultDisplay();
display.getHeight();
display.getWidth();
根据屏幕比例选择图像

或者使用

尝试使用类似的方法,并根据显示缩放/裁剪图像:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

metrics.heightPixels;
metrics.widthPixels;
或使用或:


谢谢。我正在尝试使用display.getHeight。但不知何故,这些图像在较小的设备上不断被裁剪。此外,我不知道如何通过可绘制图像文件使用墙纸图像的scaleType选项。请帮助。您的壁纸图像是ImageView吗?所以你可以这样做:iv.setImageBitmapbitmap;或iv.setImageDrawable iv.setScaleTypeScaleType.FIT_CENTER;再次感谢。我尝试在代码中使用imageview。但我仍然不确定如何将imageview与我的壁纸相关联。我已经编辑了我的原始问题并输入了一些代码。如果可能的话,请检查一下并帮助我。对不起,我对Android有点陌生,所以我有点困惑。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;