You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio开发壁纸应用设置后分辨率下降无法全屏问题

解决方案

1. 修复传参不匹配问题

你在Adapter跳转壁纸设置页时传入的Extra键为"image",但setwallpaper页面取值用的是"portrait",会导致拿到空的图片链接,Glide加载异常后得到的低分辨率占位图会直接导致壁纸模糊放大,先把两处的Extra键统一即可。

2. 不要从ImageView取Bitmap,直接加载匹配屏幕尺寸的原图

你当前从ImageView获取的Bitmap是Glide为适配ImageView大小压缩后的低分辨率版本,并非原图,要先获取设备真实屏幕分辨率,直接加载对应尺寸的原图设置壁纸:

// 先获取设备真实屏幕分辨率(适配挖孔/刘海屏)
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Point realSize = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    windowManager.getCurrentWindowMetrics().getBounds();
}
windowManager.getDefaultDisplay().getRealSize(realSize);
int screenWidth = realSize.x;
int screenHeight = realSize.y;

// 设置壁纸按钮逻辑替换为直接加载原图
set.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Glide.with(setwallpaper.this)
                .asBitmap()
                .load(url)
                // 强制加载到屏幕真实尺寸,避免Glide自动压缩
                .override(screenWidth, screenHeight)
                .into(new CustomTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                        try {
                            WallpaperManager wallpaperManager = WallpaperManager.getInstance(setwallpaper.this);
                            // 提前告诉系统所需壁纸尺寸,避免华为系统自动放大
                            wallpaperManager.suggestDesiredDimensions(screenWidth, screenHeight);
                            // 适配安卓版本指定全屏显示
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                                wallpaperManager.setBitmap(resource, null, true, WallpaperManager.FLAG_SYSTEM);
                            } else {
                                wallpaperManager.setBitmap(resource);
                            }
                            Toast.makeText(setwallpaper.this,"设置成功",Toast.LENGTH_SHORT).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                            Toast.makeText(setwallpaper.this,"设置失败",Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onLoadCleared(@Nullable Drawable placeholder) {
                    }
                });
    }
});

3. 检查权限配置

确认AndroidManifest.xml中已添加壁纸设置权限:

<uses-permission android:name="android.permission.SET_WALLPAPER" />

4. 忽略无关系统报错

你贴出的报错E/ResMng NATIVE_MSG_FILTER: endActivityTransaction: margin state not match是华为系统资源管理模块的内部日志,和你的壁纸设置逻辑无关,不需要处理。


内容的提问来源于stack exchange,提问作者Perseus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:57:01