Android 壁纸图像未在所有设备上以正确的大小显示

Android 壁纸图像未在所有设备上以正确的大小显示,android,image,scale,android-wallpaper,Android,Image,Scale,Android Wallpaper,我做了一个应用程序,在定时间隔内使用几个png图像设置壁纸。屏幕上显示的壁纸尺寸并非所有设备都正确。在9.7的平板电脑上,尺寸完美,有足够的空间左右滚动。然而,在手机上,只能看到每个图像的一小部分。看起来像是放大了 我需要什么编码来告诉Android在所有设备上以正确的大小显示图像 我以为是墙纸管理员做的,但似乎我还不知道如何使用它 下面是我如何更改墙纸的: myWallpaperManager.setResource(R.drawable.muzdalifah); 编辑显示用于更改墙纸的所有

我做了一个应用程序,在定时间隔内使用几个png图像设置壁纸。屏幕上显示的壁纸尺寸并非所有设备都正确。在9.7的平板电脑上,尺寸完美,有足够的空间左右滚动。然而,在手机上,只能看到每个图像的一小部分。看起来像是放大了

我需要什么编码来告诉Android在所有设备上以正确的大小显示图像

我以为是墙纸管理员做的,但似乎我还不知道如何使用它

下面是我如何更改墙纸的:

myWallpaperManager.setResource(R.drawable.muzdalifah);
编辑显示用于更改墙纸的所有代码:

public class AlarmReceiverChangeImage extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    /*
     * Make the settings available from the settings xml file.
     */
    SharedPreferences mySettings = PreferenceManager
            .getDefaultSharedPreferences(context);

    /*
     * Allow editing.
     */
    SharedPreferences.Editor editor = mySettings.edit();

    /*
     * Get the settings into variables.
     */
    boolean bln_checkbox_changing_is_activated = mySettings.getBoolean(
            "checkbox_changing_is_activated", false);

    String myCurrentImageName = mySettings.getString("current_image",
            "kabanight1");

    WallpaperManager myWallpaperManager = WallpaperManager
            .getInstance(context.getApplicationContext());

    if (bln_checkbox_changing_is_activated == true) {

        if (myCurrentImageName.equals("tentcity")) {

            try {

                myWallpaperManager.setResource(R.drawable.kabacloseup);
                myCurrentImageName = "kabacloseup";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("kabacloseup")) {
            try {

                myWallpaperManager.setResource(R.drawable.kabanight1);
                myCurrentImageName = "kabanight1";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("kabanight1")) {
            try {

                myWallpaperManager.setResource(R.drawable.madina1);
                myCurrentImageName = "madina1";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("madina1")) {
            try {

                myWallpaperManager.setResource(R.drawable.madina2);
                myCurrentImageName = "madina2";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("madina2")) {
            try {

                myWallpaperManager.setResource(R.drawable.kabaday1);
                myCurrentImageName = "kabaday1";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("kabaday1")) {
            try {

                myWallpaperManager.setResource(R.drawable.uhud1);
                myCurrentImageName = "uhud1";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("uhud1")) {
            try {

                myWallpaperManager.setResource(R.drawable.bus);
                myCurrentImageName = "bus";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("bus")) {
            try {

                myWallpaperManager.setResource(R.drawable.muzdalifah);
                myCurrentImageName = "muzdalifah";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (myCurrentImageName.equals("muzdalifah")) {
            try {

                myWallpaperManager.setResource(R.drawable.tentcity);
                myCurrentImageName = "tentcity";

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else {

            try {
                myWallpaperManager.setResource(R.drawable.madina1);
                myCurrentImageName = "madina1";

            } catch (IOException e) {
                e.printStackTrace();
            }
        } // End if myCurrentImageName.equals("kabaday1").
    } // End if bln_checkbox_changing_is_activated == true.

    editor.putString("current_image", myCurrentImageName); // value to store
    editor.commit();
} // End method onReceive.

图像的渲染取决于以下内容:

屏幕大小

屏幕密度

决议

您最好完整阅读以下文档,以了解如何处理这种情况:

MyWallperManager此图像视图应为填充父视图。RU是否为该文件提供了固定大小?

添加以显示此权限

我阅读了链接中的文档,但它非常混乱,但我确实看到了一些关于9-patch png文件的内容,因此我将尝试一下,看看图像是否自动调整大小。我发现9-patch不支持作为壁纸,所以我想我我需要另一种方法。Android附带了这个应用程序,允许你导入图像并从中创建壁纸。我希望我能更新他们用来使其工作的秘密,因为他们的应用程序将图像缩放到正确的大小。没有固定的大小,但我会编辑代码部分,以便您可以看到我用于更改壁纸的所有代码。