Android 动态壁纸缩放

2024-02-08

我正在学习如何制作动态壁纸,但我有一个困境,我相信所有刚开始的人也有这样的困境。

有这么多分辨率的屏幕尺寸,我怎样才能使一组艺术品在代码中为所有版本重新缩放?我知道它已经完成了,因为我看到了很多应用程序中的图像,并且它们被重新缩放。

如果只是一张不需要任何定位的图像,那就很容易了,但我的问题是我必须重新调整背景图像以适合所有设备,我还有适合该背景上某个 x 和 y 位置的动画图像适合到位,这样看起来整个背景都在动画化,但只有部分背景是动画化的(我的方式是远离 300 张逐帧动态壁纸图像)。

因此,背景图像需要重新缩放,动画也需要重新缩放到与背景图像相同的百分比,并且它们需要位于特定的 x 和 y 位置。

任何帮助将不胜感激,以便我能够继续下去。


我厌倦了一些事情,想我会为所有事情制作一个缩放器,例如:int scaler;然后在onSurfaceChanged中scaler = width /1024; //如果更大的图像是1024。这将为我提供一个可以在任何地方使用的比率。然后使用scaleBitmap进行相应缩放,方法是将缩放器乘以图像高度和宽度,并使用相同的缩放器来定位示例图像x,假设图像x为50,使用相同的东西缩放它x =缩放器* 50;应该负责缩放和定位,下一课就是如何将所有这些转换为 java,因为我是 java 新手,我曾经为 flash 和 php 编程,但这有很大不同,需要一些时间来适应。接下来的事情是如何平移宽度,当您将屏幕从一侧移动到另一侧时,如何使图像显示是我想出的下一个难题。现在,无论如何,即使宽度是表面显示的宽度的两倍,它也只显示相同的宽度。如果您得到答案或在某个地方我可以找到有关此问题的信息,我将不胜感激。


嗯,嗯,我只能说“欢迎来到现实世界”。您可以通过 onSurfaceChanged 将屏幕尺寸传递给您,是的,您的工作就是弄清楚如何根据此数据缩放所有内容。这就是为什么他们付给我们大笔钱。 :-) 您需要确保您的资源足够大,可以容纳您打算支持的最大显示器,因此您将始终缩小事物(这比扩展事物造成的扭曲要小得多)。

建议从此处的“屏幕独立性最佳实践”开始:http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/guide/practices/screens_support.html

关于您寻求更多帮助的请求的附加评论...

  1. 您不能(必然)仅使用宽度来缩放图稿,因为您需要支持多种纵横比。如果屏幕比例与您的作品不匹配,您必须决定是否要扭曲您的作品、留下空白等。
  2. 我不知道如何解释你在屏幕尺寸上遇到的麻烦。我们大多数人将所有活动代码放在一个引擎类中,因此我们的方法可以通过私有变量共享数据。例如,在SDK中的Cube壁纸中,onSurfaceChanged()设置mCenterX以便稍后在drawCube()中使用。我建议从类似的简单方法开始。
  3. 处理滚动需要一些“智能”并仔细评估通过 onOffsetsChanged() 收到的数据。 xStep 指示您的启动器支持的屏幕数量。通常 xStep 为 0.25,表示 5 个屏幕(即 xOffset = 0、0.25、0.5、0.75 或 1),但它可以是 0 到 1 之间的任何值; 0.5 表示 3 个屏幕。 xPixels 可让您了解启动器“希望”您根据您所在的屏幕移动图像的程度;通常你应该尊重这一点。在我的手机上,启动器“需要”具有两倍于物理屏幕像素的虚拟壁纸,因此每个滚动应该仅移动屏幕像素的四分之一。所有这些以及更多内容都记录在http://developer.android.com/reference/android/app/WallpaperManager.html http://developer.android.com/reference/android/app/WallpaperManager.html这不是“简单”的编码——应用程序比壁纸更容易。 :-)

祝你好运...乔治

附:我还要再补充一件事:在某个地方,您可能想要检索启动器所需的壁纸的“所需最小宽度”,这样您就可以明确地理解 xPixels 中隐含的虚拟化。例如,在我的引擎构造函数中,我有

mContext = getApplicationContext();
mWM = WallpaperManager.getInstance(mContext);
mDW = mWM.getDesiredMinimumWidth();

我的设备宽度为 320 像素;我得到 mDW = 640;当我从一个屏幕滚动到另一个屏幕时,xPixels 每次都会改变 80...因为四个滚动(跨五个屏幕)应该使显示的艺术品数量加倍(这种效果称为“视差滚动”)。最右边的部分 xPixels 等于 0;中心(五个)部分的 xPixels = -160 等。

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

Android 动态壁纸缩放 的相关文章

  • OPENGL ES 不工作:无当前上下文

    我尝试了 OpenGL ES2 for Android 一书中所示的程序 但它不起作用 我已经在Odroid E 三星s3 三星y 三星star上进行了测试 the gl version suported returns 2 but i g
  • 添加动态数据时 footable 出现问题

    我需要 jQuery Mobile 方面的一些帮助富表 http css tricks com footable a jquery plugin for responsive data tables 我正在表中动态添加数据 HTML tab
  • Android向后兼容技术

    我现在在开发基于最新 API 15 ICS 的 15 项活动 Android 应用程序方面取得了进展 现在我发现应用程序的主要功能主义者即使支持 android v4 也不向后兼容 例如 1 fragment事务动画 2 将StringSe
  • 如何将 Android Instrumentation 测试推送到模拟器/设备?

    我正在尝试使用 Ubuntu 9 04 中的命令行 shell 在 Android 模拟器上运行 Webkit 布局测试 adb s emulator 5554 shell am instrument w com android dumpr
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • Android ListView 自定义适配器 ImageButton

    这可能不是正确的方法 如果有更好的方法请告诉我 我创建了一个自定义适配器类 在我的 getView 方法中我膨胀了我想要使用的视图 public View getView int position View convertView View
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 多语言 Android 应用程序:在电子邮件和密码字段中显示英文键盘

    我们正在开发一款多语言 Android 应用程序 针对英语和阿拉伯语 面临的问题是在登录和注册屏幕中 我们希望仅以英文文本输入用户名和密码字段 从而显示英文键盘 无论设备区域设置语言如何 已尝试在 edittext 中设置 inputtyp
  • Android 谷歌地图 V2 已停止

    我正在尝试构建地图应用程序并关注这个链接 https blog emildesign rhcloud com p 435一步步 我在这里找到了类似的主题 但对我没有帮助 我想显示地图 但是当我运行它时 它返回强制关闭和我的 Android
  • 在后台服务中持续获取位置更新

    我正在开发需要在后台服务中持续获取位置更新的应用程序 我已经使用了它正在使用的后台粘性服务 但是 即使我添加了启动广播并在那里启动了服务 启动完成后服务也没有启动 服务启动并立即被杀死 另外 这不适用于奥利奥 服务在应用程序关闭几分钟后停止
  • 如何在android中画一条曲线?

    我是 Android 新手 正在开发一个关于绘制线条的示例项目 我想画一条连接两点的曲线或高架线 x1 y1 and x2 y2 我试过canvas drawArc 方法 但是RectF内的值drawArc方法只是圆的 x y 中心点 它在
  • 使用 UPI url 调用 PSP 应用程序

    我正在尝试创建一个商家应用程序 它将根据 NPCI 的指南生成一个 url 此 url 将作为意图共享 并且 PSP 应用程序 任何注册的银行应用程序 应该能够侦听该 url 并被调用 我已经形成了这样的网址 upi pay pa icic
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 在 android 中,第一次单击时按钮侦听器未注册

    因为我是 Android 新手 所以我遇到了按钮监听器的问题 我正在使用 OnClickListener 来处理胸像 但它第一次点击后不执行一旦我单击多个 它就会表现良好 但如何使其在第一次单击时成为可能 这是我的代码 public cla
  • 如何在 kotlin 中检查 lambda 空值

    在 Kotlin 中如何检查 lambda 是否为空 例如 我有这样的签名 onError Throwable gt Unit 我如何区分它的默认值是应用于主体还是应用于此函数的值 您无法测试 lambda 的主体是否为空 因此它不包含源代
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 如何在 onDraw() 方法中定义与像素无关的高度

    我扩展了 View 来构建自定义小部件 我想用独立的像素单位定义小部件的高度 我认为可以通过将像素密度乘以所需的高度来完成 但我不知道该怎么做 到目前为止我所拥有的 最小化 public class Timeline extends Vie
  • Android 4.2 - Environment.getExternalStorageDirectory().getPath() 行为

    我一直在开发一个android应用程序 在上次更新到4 2之前 我使用 Environment getExternalStorageDirectory getPath 它返回了我 storage sdcard0 但自从更新后我现在得到了 s
  • 使用 RecyclerView.Adapter 在 onBindViewHolder() 内设置 onItemClickListener

    我有一个自定义对象 学生班 public class Student private String name private String age public String getName return name public void
  • 制作弹跳动画

    我想做图层的弹跳动画 我已经完成了该图层从右到中心的操作 现在我想将其向后移动一点 然后回到中心 这会产生反弹效果 我想我可以用这样的翻译来做到这一点

随机推荐

  • 为 iPhone 本地化货币

    我希望我的 iPhone 应用程序允许用户使用适当的符号 等 输入 显示和存储货币金额 NSNumberFormatter 会做我需要的一切吗 当用户切换其区域设置并且这些金额 美元 日元等 存储为 NSDecimalNumbers 时会发
  • Java 中 HTML 字符编码的转换

    我们正在尝试下载网页源代码 但是由于字符编码的原因 我们无法正确看到某些特定字符 例如 我们尝试了以下代码来转换字符串 text 变量 的编码 byte xyz text getBytes text new String xyz windo
  • React:搜索和过滤功能存在问题

    我正在开发一个组件 它应该能够 按输入搜索 使用输入字段 在触发 onBlur 事件后将调用一个函数 之后onBlur事件开始寻找 方法将运行 按所选流派过滤 用户可以从其他组件中从流派列表中选择流派 之后onClick事件启动过滤器 方法
  • 使用 Facebook 图表来获取粉丝页面的粉丝?

    我有一个粉丝页面 位于http www facebook com shop4tronix http www facebook com shop4tronix 我可以通过以下方式访问此页面上的信息 http graph facebook co
  • 文本区域 onresize 不起作用

    根据w3schools
  • 返回主菜单不断循环菜单

    当程序第一次启动时 我可以成功地从主菜单中选择任何选项 但是 当我从任何子菜单中选择 返回主菜单 选项时 它都会返回主菜单 但无论我之后再次按哪个选项 它都会继续循环该菜单 只允许我选择返回主菜单选项 如何将选择重置到不会继续循环的位置 我
  • GDB源路径

    如何让gdb使用不同的目录来查找源文件 例如 我在编译期间的源文件位于目录中 home foo bar c 接下来 我将其移动到目录中 tmp debug home foo bar c 如何强制gdb在该目录中搜索 根据这个网站 https
  • 基于有序对多关系对描述符进行排序

    我的核心数据模型的描述 项目和问题实体 项目有一个有序的一对多关系至已命名问题的问题 问题与名为parentProject 的项目具有一对一的关系 这是我获取问题的代码 let fetchRequest NSFetchRequest ent
  • 如何编写混淆矩阵

    我用Python写了一个混淆矩阵计算代码 def conf mat prob arr input arr confusion matrix conf arr 0 0 0 0 for i in range len prob arr if in
  • 如果没有 firebug 断点,jquery ajax 将无法工作

    我使用以下方法来调用 php function validateEmaiAjax email val null warning load https localhost Continental 20Tourism register ajax
  • 如何在 Cordova 中从 CDVPlugin 显示 ViewController?

    我已经为此苦苦挣扎了几天 但无法让它发挥作用 也找不到其他人似乎已经解决了这个问题 希望有人可以提供帮助 我有一个简单的 ViewController 在 Swift 的故事板中有 2 个视图 我试图通过 Cordova 插件打开它 And
  • 是否可以在 TypeScript 中的元组上使用 Array.prototype.map(),同时保留返回类型中的元组长度?

    我希望如果我使用内置的map在 TypeScript 中对长度为 N 的元组执行函数 则返回类型也将是长度为 N 的元组 元素的类型可能不同 具体取决于传递给的函数 map 相反 返回类型只是回调函数返回的任何类型的标准可变长度数组 元组的
  • 如何在打字稿中扩展 Array

    在帖子中 打字稿扩展字符串静态 https stackoverflow com questions 17843215 typescript extend string static 我得到了一些我们可以扩展打字稿现有基类的内容 例如添加新方
  • 提交按钮在 asp.net mvc 中不起作用

    我有一个模型 public class FormCreateModel public FormModel formInfo get set public FieldModel fieldInfo get set public Institu
  • JQuery Fancybox - 多个内联实例

    我试图调用多个内联项目 当我单击它们时 它只显示第一个项目的内容 我正在拔头发 请帮忙 我的 JavaScript 调用 My HTML div class atrack img src images albumcovers Italian
  • 我可以从旧版 C 回调中抛出 C++ 异常吗?

    我有使用一些 C 库的 C 代码 C 库采用 C 语言回调 我在 C 代码中编写了一个回调 现在我需要以某种方式报告它的错误 但它返回 void 我想知道是否可以从 C 代码中使用的 C 回调抛出异常 这对我来说很难理解 谢谢 博达 西多
  • 如何获取 VBA For Each 循环中的索引(使用 Excel 编程)?

    我正在使用 EXCEL VBA 处理一些数据 这就是我想要做的 在此工作表中 我想创建一个函数 GetDebutDate 它可以自动计算该行具有值的第一个日期 例如 在 Mark 行中 第一次获取值是Aug 05 编号为 4 我对 VBA
  • 如何将 retryWhen 与返回布尔值的函数一起使用?

    这是我的代码 this http post this url get extension headers headers map res gt res body retryWhen errors gt return responseErro
  • Golang:TCP客户端/服务器数据分隔符

    不确定如何提出这个问题 以及它是否真的只与 go 语言相关 但我想做的是拥有一个 tcp 服务器和客户端 在它们之间交换数据 基本上客户端会将大量数据流式传输到较小的数据中当数据块发送到服务器时 服务器将等待读取每个数据块 然后回复一个状态
  • Android 动态壁纸缩放

    我正在学习如何制作动态壁纸 但我有一个困境 我相信所有刚开始的人也有这样的困境 有这么多分辨率的屏幕尺寸 我怎样才能使一组艺术品在代码中为所有版本重新缩放 我知道它已经完成了 因为我看到了很多应用程序中的图像 并且它们被重新缩放 如果只是一