如何在android中设置适合所有屏幕的壁纸,无需拉伸、缩放和裁剪

2024-01-01

注意:请不要将其标记为重复,因为几年前就曾提出过同样的问题,这在当时可能有效,但现在不起作用。

使用下面的代码,我的壁纸要么拉伸到屏幕 2 和 3,要么根据设备在屏幕底部裁剪。以下代码适用于三星设备,但不适用于其他制造商的设备。

我还尝试使用以下方法来获取高度和宽度,但这不起作用(壁纸缩放并拉伸到其他屏幕)。 getWallpaperDesiredMinimumHeight() 和 getWallpaperDesiredMinimumWidth()

public void setWallpaper() {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

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

    WallpaperManager wm = WallpaperManager.getInstance(this);
    Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.myPicture);
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmap, width, height, true);
    wm.setWallpaperOffsetSteps(1, 1);
    wm.suggestDesiredDimensions(width, height);
    try {
        wm.setBitmap(scaledBitmap);
       } catch (IOException e) {

    }

}

制造商有不同的设置壁纸的方式,将壁纸设置为可移动或将壁纸设置为固定。

在Android上壁纸是缩放的,当我们从主屏幕顶部拖动时,您可以看到壁纸被缩小。因此,我如下缩放了壁纸的高度和宽度,这帮助我在设备上正确设置壁纸。 以下是更新后的代码。

public void setWallpaper() {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    int height = displayMetrics.heightPixels;
    int width = displayMetrics.widthPixels;
        height = (int) (height * (95.0f / 100.0f));
        width = (int) (width * (85.0f / 100.0f));

    WallpaperManager wm = WallpaperManager.getInstance(this);
    Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.myPicture);
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmap, width, height, true);
    wm.setWallpaperOffsetSteps(1, 1);
    wm.suggestDesiredDimensions(width, height);
    try {
        wm.setBitmap(scaledBitmap);
       } catch (IOException e) {

    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android中设置适合所有屏幕的壁纸,无需拉伸、缩放和裁剪 的相关文章

  • 模拟器上的Environment.getExternalStorageDirectory()

    我想在我的应用程序中读取图像并将其写入外部存储 根据我的阅读 以下是获取目录句柄的正确方法 File externalStorageDir Environment getExternalStorageDirectory File pictu
  • Android 中的“ffmpeg 有文本重定位”错误

    我正在构建一个 Android 视频发送应用程序 我需要在上传之前对视频进行压缩 在本例中 我选择使用 FFmpeg 的 Android 包装器 https github com hiteshsondhi88 ffmpeg android
  • 如何在preferenceActivity中设置导航抽屉

    在我的应用程序中 我的每个活动都带有抽屉 但是当我在我的首选项活动中设置抽屉时 我的活动工作正常 但抽屉没有出现 这是我的代码 public class SettingActivity extends PreferenceActivity
  • Android 和 Java Uuid

    我想为我的应用程序生成一个uuid 我尝试了很多东西 例如wifi mac地址 获取android id 序列号 从设备创建伪uuidandroid os Build特性 我还知道java本身有Uuid创建者类java util UUID
  • 毕加索不在磁盘上缓存图像

    我必须使用自定义 OkHttpClient 以便我可以向图像请求添加标头 问题是毕加索不会因此而在磁盘上缓存任何图像 我用过setIndicatorsEnabled true 检查缓存 我只看到红色指示器 当我使用默认的 OkHttpDow
  • Facebook Like 按钮重定向到 Android 中的 Facebook 网站

    我正在开发类似 facebook 的按钮来与我的应用程序集成 这是从开发人员 facebook com 复制的 html 代码 div div
  • android java.lang.OutOfMemoryError 错误

    当我从网站下载大数据时 我收到以下错误信息 I global 20094 Default buffer size used in BufferedInputStream constructor It would be better to b
  • Android AsyncTask 启动另一个 AsyncTask

    我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作 其中NewTask is not当前正在执行的任务 private class OlderTask extends AsyncTask
  • Android ListView:当内容发生变化时,如何保持ListView位于顶部?

    我有一个视图 其中包含绑定到游标适配器的 ListView 当光标内容更改时 我想将 ListView 保留在顶部 然后在我的自定义光标适配器中添加 Override protected void onContentChanged myLi
  • 将 html 内容呈现为动态“页面”

    我正在为 Android 构建一个电子书阅读器 电子书的内容通常分为 html 文件 epub 其中包含一个或多个章节 我计划构建一个电子书阅读器 将这些文件的内容划分为不同的 页面 问题是要知道一页上 适合 多少文本并计算正确的页数 因为
  • 在 webview 片段中实现后退按钮

    我想在我的应用程序中实现后退按钮 我正在使用每个片段显示不同的网络视图 现在 如果我按后退按钮 无论我在哪里 它都会关闭应用程序 我希望它能像浏览器一样返回 我有我的MainActivity java fragment1 java等直到fr
  • 如何同时运行两个FOR循环

    我正在使用加速度计 第一个代码是振动检测器 代码1 if sensor SensorManager SENSOR ACCELEROMETER long curTime System currentTimeMillis long now Sy
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • 使用 ADB 更改 Android 壁纸?

    我想知道是否可以使用我的笔记本电脑从 ADB 更改 Android 壁纸 我不知道是否存在任何命令 或者我是否需要将图片复制到文件夹或编辑文本文件 如果可以的话 我需要通过 ADB 解决这个问题 谢谢大家 您只需要启动正确的壁纸设置意图 由
  • 发布 apk 中的“来源不明”

    我的调试 APK 中的所有内容都运行良好 但是 当我导出 APK 并安装它时 一切正常 直到我调用引用的库 E AndroidRuntime 32571 at com znood znoodapp ShowResultsActivity a
  • 在 Jetpack compose 中使用 ModalDrawer 从右向左打开导航抽屉

    我一直在尝试在 Jetpack compose 中实现导航抽屉 以下代码显示了一种简单的方法 Composable fun ModalDrawerSample val drawerState rememberDrawerState Draw
  • 权限拒绝:开放提供商

    我创建了一个自定义内容提供程序 更多应用程序将访问该内容提供程序 我已在提供程序 AndroidManifest xml 文件中包含了权限标签 在第二个应用程序中 我包含了 use permissions 标签 但没有成功 Logcat 向
  • 如何在 Android Q 上将照片广播到图库

    我使用这些代码拍照并将照片广播到画廊 它有效 我发现我的广播功能使用MediaStore Images ImageColumns DATA and Intent ACTION MEDIA SCANNER SCAN FILE 并且这些已被弃用
  • PopupWindow 在 Android API 28 的自定义键盘上被剪切

    我做了一个定制键盘 当您长按某个键时 会出现PopupWindow在按键上方显示一些额外的选项 问题在于 在 API 28 中 此弹出窗口被剪切 甚至顶行完全隐藏 我已经为 API with https stackoverflow com
  • 当用户从android后台删除应用程序时如何检测事件?

    当用户从后台删除我的应用程序时 我需要重置通知 所以我需要一个从后台删除应用程序的事件 请帮帮我 建议表示赞赏 谢谢 亲切的问候 官方安卓文档 Activity onDestroy 您的活动被销毁之前收到的最后一个电话 发生这种情况的原因可

随机推荐

  • 通过Spark SQL进行批量数据迁移

    我目前正在尝试通过 Spark SQL 将非常大的 MySQL 表的内容批量迁移到 parquet 文件中 但这样做时 即使将驱动程序的内存限制设置得更高 我在本地模式下使用 Spark 我也会很快耗尽内存 示例代码 Dataset
  • 如何在 Dart 中使用正则表达式?

    在 Flutter 应用程序中 我需要检查字符串是否与特定的正则表达式匹配 但是 我从应用程序的 JavaScript 版本复制的正则表达式always在 Flutter 应用程序中返回 false 我验证了regexr https reg
  • 尾随返回类型语法因 noexcept 说明符而失败?

    此代码按预期工作 void f noexcept 但在 GCC 4 7 2 中 以下操作会失败并出现错误 auto f gt void noexcept error expected initializer before noexcept
  • 在 C++ 中使用 std::bind 和 std::function 时出错[重复]

    这个问题在这里已经有答案了 我尝试在多元函数上尝试牛顿法的片段并使用std bind and std function 但我陷入了一个错误 错误 从 std Bind helper int gt type aka 进行转换 std Bind
  • NetworkOnMainThreadException android 活动[重复]

    这个问题在这里已经有答案了 我正在使用此代码来检索 android 活动中的网站数据 它抛出 android os networkonmainthreadexception try URL url new URL https enigmat
  • jQuery 中的内容文档

    我有以下 js 脚本来访问对象内的元素 SVG jQuery document ready function window load function var a document getElementById alphasvg var s
  • “未设置对象引用”错误

    我收到错误 对象引用未设置到对象的实例 关于下一个方法 private void alSave Click object sender EventArgs e alRecord WriteXml alRecord xml XmlWriteM
  • 当值更改时,获取 QTableWidget 中的 QComboBox 的先前值

    说我有一个QTableWidget每行都有一个QComboBox and a QSpinBox 考虑到我存储它们的值是QMap
  • 从彭博终端抓取新闻源

    我可以访问并开始学习如何使用彭博终端 我当前的项目要求我抓取彭博终端上与给定搜索条件相关的所有新闻标题和内容 例如 NI微软 我已经查看过 Bloomberg API 但它似乎只提供对股票 债券报价等市场数据的访问 而不是新闻文章 我现在很
  • Powershell:命令行参数中的冒号

    需要冒号的 Powershell commandlet 开关参数是怎么回事 考虑 Exchange 2010 管理 shell cmdlet移动ActiveMailbox数据库 http technet microsoft com en u
  • Windows 上的 GitLab 运行程序并处理 &%ERRORLEVEL%

    在我的 gitlab ci yml 中 我尝试使用 findstr 命令 findstr c SOLUTION DIR gitlab dif gt founded ref 如果 gitlab dif 中没有匹配 SOLUTION DIR 此
  • MOQ 错误 预期对模拟调用一次,但实际调用次数为 0 次

    我是最小起订量新手 我已阅读快速入门here https github com Moq moq4 wiki Quickstart 我使用的是最小起订量 v4 2 1402 2112 我正在尝试创建一个单元测试来更新人员对象 这UpdateP
  • 如何为Alamofire请求功能编写单元测试?

    我有一个项目 我正在发送 GET 请求以从服务器获取数据 为此我使用 Alamofire 和 SwiftyJSON 例如 我有文件 链接 请求 和我的视图控制器 链接 swift var getAllData String return h
  • 集合上最小、最大的时间复杂度

    min max 的时间复杂度为 O N 因为它们必须循环给定的列表 字符串并检查每个索引以找到最小值 最大值 但我想知道如果在集合上使用 min max 的时间复杂度是多少 例如 s 1 2 3 4 s is a set 使用最小 最大我们
  • 在Python(最好是py3k)上使用sscanf?

    我见过这个问题 https stackoverflow com q 2175080 309483 但我遇到了问题顶级解决方案 https hkn eecs berkeley edu dyoo python scanf 例如 gt gt gt
  • 如何在 Laravel 中将变量传递给服务提供者?

    我想在侧边栏中生成一个动态菜单并与 Laravel 5 1 中的所有视图共享 like Marks Module Langosh Topic Content 1 Content 2 Nitzsche Topic Content 3 Rolf
  • 我怎样才能制作一个水平选择器?

    我想为我的应用程序制作一个水平选择器 但我对这一切还很陌生 有人可以提供一个易于遵循的指南来指导我如何做到这一点吗 最好的方法是伪造你自己的使用UIScrollView启用分页 实际上相当简单 将滚动视图与您自己的自定义图形视图重叠
  • 用最顶层的括号分割字符串

    我有一个如下所示的字符串 1 2 3 我想对其进行正则表达式以获得以下数组 1 2 3 另一个例子 asd dfg asd bdfg asdf asd gt asd dfg asd bdfg asdf asd 我试图搜索如何执行这样的正则表
  • Javascript Uncaught Reference 错误 函数未定义

    检查小提琴 http jsfiddle net vSHQD 查看故障发生情况 当我将数据 即使我将其留空 添加到文本框并尝试单击 添加 时 它不会执行任何操作 打开 Chrome 和 Firefox 控制台都会给我同样的错误 它说 chan
  • 如何在android中设置适合所有屏幕的壁纸,无需拉伸、缩放和裁剪

    注意 请不要将其标记为重复 因为几年前就曾提出过同样的问题 这在当时可能有效 但现在不起作用 使用下面的代码 我的壁纸要么拉伸到屏幕 2 和 3 要么根据设备在屏幕底部裁剪 以下代码适用于三星设备 但不适用于其他制造商的设备 我还尝试使用以