Android 重新启动后调整壁纸大小

Android 重新启动后调整壁纸大小,android,launcher,wallpaper,android-launcher,android-wallpaper,Android,Launcher,Wallpaper,Android Launcher,Android Wallpaper,我为安卓4.4.2构建了我的自定义启动器,但壁纸有一些问题。当我设置新的墙纸时,一切都很好,图像适合屏幕,但在重新加载设备后,墙纸会被缩放,我只看到中间部分,即使默认情况下屏幕大小和图像大小相同。 我想这是因为多屏模式,但我不确定。现在我每次都会在ACTION_启动事件中使用广播接收器重置墙纸,但它提供了一些延迟,看起来不是一个优雅的解决方案。 我使用此类设置并重新加载墙纸: public class WallpaperUtils { public static final String PR

我为安卓4.4.2构建了我的自定义启动器,但壁纸有一些问题。当我设置新的墙纸时,一切都很好,图像适合屏幕,但在重新加载设备后,墙纸会被缩放,我只看到中间部分,即使默认情况下屏幕大小和图像大小相同。 我想这是因为多屏模式,但我不确定。现在我每次都会在ACTION_启动事件中使用广播接收器重置墙纸,但它提供了一些延迟,看起来不是一个优雅的解决方案。 我使用此类设置并重新加载墙纸:

public class WallpaperUtils {

public static final String PREF_CUSTOM_WALLPAPER = "PREF_CUSTOM_WALLPAPER";
public static final String PREF_WALLPAPER_RES = "PREF_WALLPAPER_RES";

public static void reloadWallpaper(Context context) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    boolean isCustomWallpaper = prefs.getBoolean(PREF_CUSTOM_WALLPAPER, false);

    if (isCustomWallpaper) {
        int wallRes = prefs.getInt(PREF_WALLPAPER_RES, 0);
        setWallpaper(context, wallRes);
    }


}

public static void setWallpaper(Context context, int wallRes) {

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

    WindowManager window = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

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

    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

    Bitmap tempBitmap = BitmapFactory.decodeResource(context.getResources(), wallRes);
    Bitmap bitmap = Bitmap.createScaledBitmap(tempBitmap, width, height, true);

    manager.setWallpaperOffsetSteps(1, 1);
    manager.suggestDesiredDimensions(width, height);

    try {
        manager.setBitmap(bitmap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

在AndroidManifest中,主屏幕如下所示:

    <activity
        android:name=".ui.main.MainActivity"
        android:launchMode="singleTask"
        android:screenOrientation="landscape"
        android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


在默认启动程序中,墙纸也会缩放,所以我认为风格没有问题,但我找不到问题出在哪里

在研究了安卓主题和风格之后,我会明白到底出了什么问题

@android:风格/主题

已弃用,不建议在API 11之后使用


因此,我只需通过墙纸管理器在onStart回调中获取主屏幕中的墙纸活动,并将其设置为主布局的背景。

在研究了android主题和样式后,我将了解出了什么问题

@android:风格/主题

已弃用,不建议在API 11之后使用

因此,我只是通过墙纸管理器在onStart回调中获取主屏幕中的墙纸活动,并将其设置为主布局的背景