时间:2021/04/07
之前公司不允许csdn,笔记写在其它地方。最近整理过来

问题描述:

原生壁纸设置壁纸之后,图片被拉伸。导出/data/system/users/0/wallpaper_info.xml

手机分辨率480854 壁纸被设置成2480 * 854

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<wp id="10" width="960" height="854" cropLeft="0" cropTop="0" cropRight="0" cropBottom="0" colorsCount="3" colorValue0="-13485218" colorValue1="-801681" colorValue2="-2239870" colorHints="4" name="" />

修复方案

1、壁纸代码中宽高计算
packages/apps/WallpaperPicker2/src/com/android/wallpaper/util/WallpaperCropUtils.java

public static Point getDefaultCropSurfaceSize(Resources resources, Display display, boolean scroll) {Point minDims = new Point();Point maxDims = new Point();display.getCurrentSizeRange(minDims, maxDims);int maxDim = Math.max(maxDims.x, maxDims.y);int minDim = Math.max(minDims.x, minDims.y);if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {Point realSize = new Point();display.getRealSize(realSize);maxDim = Math.max(realSize.x, realSize.y);minDim = Math.min(realSize.x, realSize.y);}final int defaultWidth, defaultHeight;if (resources.getConfiguration().smallestScreenWidthDp >= 720) {defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));defaultHeight = maxDim;} else {//这个值默认是2 WALLPAPER_SCREENS_SPAN 双屏壁纸defaultWidth = minDim;//scroll ? Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim) : minDim;defaultHeight = maxDim;}return new Point(defaultWidth, defaultHeight);
}

2、packages/apps/Launcher3/src/com/android/launcher3/Workspace.java中设置壁纸宽高

protected void setWallpaperDimension() {Executors.THREAD_POOL_EXECUTOR.execute(new Runnable() {@Overridepublic void run() {final Point size = LauncherAppState.getIDP(getContext()).defaultWallpaperSize;if (size.x != mWallpaperManager.getDesiredMinimumWidth()|| size.y != mWallpaperManager.getDesiredMinimumHeight()) {mWallpaperManager.suggestDesiredDimensions(size.x, size.y);}}});
}

3、frameworks/base/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java中根据显示大小计算壁纸宽高

loadSettingsLocked中:private void ensureSaneWallpaperDisplaySize(DisplayData wpdData, int displayId) {// We always want to have some reasonable width hint.final int baseSize = getMaximumSizeDimension(displayId);final int width = getMinimumSizeDimension(displayId);//我自己加的Slog.i(TAG, "baseSize:" + baseSize + " width: "+width);Slog.i(TAG, "wpdData.mWidth:" + wpdData.mWidth + " wpdData.mHeight: "+wpdData.mHeight);if (wpdData.mWidth < width) {wpdData.mWidth = width;}if (wpdData.mHeight < baseSize) {wpdData.mHeight = baseSize;}Slog.w(TAG, "wpdData.mWidth:" + wpdData.mWidth + " wpdData.mHeight: "+wpdData.mHeight);
}

以上修改android11上无效
4、frameworks/base/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java

@Override
public boolean shouldZoomOutWallpaper() {//修改这里的返回值,并且修改WallpaperCropUtils中的修改,可以解决缩放问题return !SPRD_STABLE_WALLPAPER;
}//默认会放大1.1倍
<!-- The max scale for the wallpaper when it's zoomed in -->
<item name="config_wallpaperMaxScale" format="float" type="dimen">1.10</item>

wallpaper设置壁纸图片被拉伸相关推荐

  1. android 壁纸服务,Android开发学习之WallPaper设置壁纸详细介绍与实例

    今天和大家分享的是关于在android中设置壁纸的方法,在android中设置壁纸的方法有三种,分别是: 1.使用wallpapermanager的setresource(int resourceid ...

  2. ubuntu下命令行设置壁纸

    1. 设置壁纸 gsettings set org.gnome.desktop.background picture-uri "file:/home/leon/pic/111.jpg&quo ...

  3. 计算机桌面壁纸怎样拉伸,win7系统可以做动态壁纸吗-win7旗舰版怎么设置壁纸默认是拉伸状态?...

    win7系统怎么在桌面右下角放一个会动GIF? 我也在找这种方法 无果后决定自己使用steam的动态壁纸软件wallpaper engine看看能不能做一个 结果发现非常简单. 首先准备想要的壁纸图和 ...

  4. Android Wallpaper之设置壁纸流程

    What? 什么是壁纸? android wallpaper包括锁屏壁纸和桌面壁纸,壁纸又区分静态和动态两种.我们每天使用手机第一眼看到的就是壁纸,好看的壁纸对于手机的颜值也有大大的提升(滑稽),就让 ...

  5. Android 天气APP(二十九)壁纸设置、图片查看、图片保存

    上一篇:Android 天气APP(二十八)地图搜索定位 效果图 开发流程 一.前情提要 二.正式开发 1. 列表数据填充 2. 浮动按钮的交互 3. 其他优化 4. 运行效果图 三.文末 一.前情提 ...

  6. html img和背景图处理图片不拉伸_css如何设置背景图片拉伸不重复?

    css可以使用background-size属性设置背景图片拉伸,此属性规定背景图像的尺寸.使用background-repeat属性设置背景图片不重复,此属性设置是否及如何重复背景图像. css设置 ...

  7. Android 设置壁纸被拉伸(固定壁纸 )

    做一个设置壁纸的功能,漂漂亮亮的壁纸一设置就被拉伸得超级难看.有图有真相: 壁纸是这样的: 设置后就这样这样了: 修改代码后就这样这样了: 代码修改如下: 具体的宽和高可以根据需求修改 Wallpap ...

  8. android+如何设置单屏壁纸,安卓手机如何设置全屏壁纸,再也不用为设置壁纸裁剪图片而烦恼【赖崇飞博客】...

    小编文笔不好,还望见谅 小编使用的手机是华为 C8650,屏幕分辨率:480x320,安卓2.33,已获取root权限(与本教程无关) 小编之前使用安卓手机发现安卓机设置壁纸要时要裁剪自己心爱的图片, ...

  9. android设置背景图片不填充整个_Android应用开发之android解决背景图片平铺拉伸问题...

    本文将带你了解Android应用开发之android解决背景图片平铺拉伸问题,希望本文对大家学Android有所帮助 最近开发时遇到一个问题: 使用一条图片(1200x128)平铺作为背景,测试机型是 ...

最新文章

  1. VB.NET 调用外部程序
  2. python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据
  3. HDU4302(map的用法)
  4. JDK 8 新特性 之 方法引用
  5. java 工程新建ivy文件_Hadoop学习之路(八)在eclispe上搭建Hadoop开发环境
  6. NYOJ324 - 猴子吃桃问题
  7. “第八期央企CIO论坛”成功举办
  8. MAPZONE GIS SDK接入Openlayers3之二——空间参考扩展
  9. uniapp分销商城源码开发
  10. 关于java8 List转map 分组顺序重排问题
  11. was升级jdk版本_was升级jdk1.7
  12. UVA 10066 The Twin Towers
  13. 这几个图片格式转换工具可以收藏
  14. Glide异步加载图片,设置默认图片和错误图片
  15. pip安装pandas失败的问题
  16. 医疗行业容灾备份解决方案
  17. 再谈异常处理try-catch-finally
  18. PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))
  19. 广东水利电力计算机系宿舍图,广东水利电力职业技术学院宿舍条件怎么样宿舍图片内景...
  20. 忘了BIOS密码不用慌 多种方法可解决

热门文章

  1. Pyinstaller打包eel和pygame需要注意的坑
  2. python学习(25) BeautifulSoup介绍和实战
  3. 智能科普:VR、AR、MR的区别
  4. PHP前一页 后一页 切换
  5. 强化练习200题(二) 本卷共200道试题作答时间为240分钟,总分200分,120分及格
  6. VC中的所有WM消息
  7. 异地北京办理居住证详细材料
  8. 硬盘磁头坏数据有办法恢复吗?硬盘开盘数据恢复
  9. debian linux fcitx 小鹤双拼
  10. 概括几种项目类型使用的技术路线