如何在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中设置适合所有屏幕的壁纸,无需拉伸、缩放和裁剪 的相关文章

  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • Android Q:file.mkdirs() 返回 false

    我们有一个应用程序 使用外部存储来存储一些临时文件 图像 二进制数据 该代码已经运行了几年 直到最近才发生重大变化 在 Android Q 上它不起作用 File f new File Environment getExternalStor
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • Android应用程序组件销毁和重新创建的详细信息

    有人可以向我提供一些具体的 值得信赖的 最好是简洁的 信息 内容如下 系统销毁和 如果适用 重新创建组件的顺序 片段 活动 活动的线程 异步任务 计时器 静态数据 类何时卸载 其他类中的线程 异步任务 定时器 主机 TabActivity
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • Dialog.setTitle 不显示标题

    我正在尝试向我的对话框添加自定义标题 但是每当我运行我的应用程序时 它都不会显示标题 我创建对话框的代码是 final Dialog passwordDialog new Dialog this passwordDialog setCont
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Android Studio 与本地网络共享上的项目文件

    这是我的设置 Android Studio 项目文件位于 Ubuntu 14 10 盒子上的共享文件夹中 尝试在 Windows 8 机器上运行 Android Studio 1 0 2 并将 U 驱动器映射到包含项目文件的 Ubuntu
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • 在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒

    由于更新至 Android 5 0 MediaPlayer 在 Samsung Galaxy S5 上无法正常工作 启动音频流后加载时间超过 10 秒 示例代码 MediaPlayer mPlayer new MediaPlayer Str
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始

随机推荐

  • 通过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 要么根据设备在屏幕底部裁剪 以下代码适用于三星设备 但不适用于其他制造商的设备 我还尝试使用以