其实WallpaperManager从很早之前就提供了getWallpaperColors接口
我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、靖江ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的靖江网站制作公司
==Tip: LocalWallpaperColorConsumer是hide接口,非源码编译的Apk无法引用==
取出的数据都封装在WallpaperColors中,可通过以下接口获取到原始数据
框架中只是负责提取出原始颜色 ,但有些时候直接使用原始颜色,并不能达到最好的效果。
例如:PixelLauncher的插件实现颜色动态变化,除了从Wallpaper中拿到颜色,还进行了二次加工,使其更符合Material Desgin的风格,这也是符合“Monet”主题系统 中的一部分,目前是没有开源的。所以一方或三方若想使用该特性,可以按需进行选择和二次加工。
很可惜,Google并没有为动态壁纸提供默认的取色逻辑。
壁纸的取色,最终会调用到WallpaperService的onComputeColors中,但该方法是空实现,框架只是提供了最基本的获取接口而已。
所以在Android 12之前,无论是静态壁纸或是动态 壁纸,若想要其他模块能获取到壁纸颜色的话,需要壁纸提供方,在实现WallpaperService的Engine时,也一并实现onCompleteColors方法,然后在颜色变化时调用notifyColorsChanged。
如图:
壁纸其实是通过Palette接口进行颜色提取的,基本上都能取到至少一种颜色。当真的取出失败或取出的颜色如果不符合期望,需要采用另外一套默认颜色,这是由各个各个业务去处理的,比如Launcher中的LauncherAppWidgetHostView,重写了setColorResources方法
具体流程见下图:
PixelLauncher是通过LocalWallpaperColorsExtractor的实现类进行颜色提取,该类继承于LocalColorExtractor,该类存在于Launcher3中,是空实现。可以看出,Google专门将Monet算法部分折分隐藏,只公开框架部分。
而LocalWallpaperColorsExtractor是通过调用WallpaperManager.addOnColorsChangedListener接口,获取onColorsChanged(RectF rectF, WallpaperColors wallpaperColors)中的返回信息,然后再对WallpaperColors中的颜色信息进行二次加工处理。
可以,Android 12已经在secure表中预定义了theme_customization_overlay_packages字段,在其中配置了是否要根据主屏幕变色还是预置颜色,然后进行资源Overlay的。
我们可以直接使用或借鉴这套逻辑,预置几套色值,并设置为使用基本颜色。
Android开源游戏引擎是Android游戏开发的基础,选择一个好的Android游戏开发的引擎能让更好的来开发游戏,下面就简绍几个Android开源游戏引擎。
1、Angle
Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL
ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。
2、Rokon
rokon是一款Android
2D游戏引擎,基于OpenGL
ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,该项目最新版本为
2.0.3
(09/07/10)。总体来说,此引擎最大的优点在于其开发文档相当之完备,并且项目作者对反馈Bug的修正非常之神速,所以该框架的使用在目前也最为
广泛,有人干脆将它称为Cocos2d-iPhone引擎的Android版(业务逻辑和编码风格上也确实很像)。附带一提,国内某个需要注册会员才能下
载的Android游戏框架衍生于此框架,所以大家也不要刻板的认为收费便一定是好的,免费就一定不好,最低运行环境要求为Android
1.5。
3、LGame
LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,目前最高版本同为0.2.6(31/07/10)。其底
层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics
API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本
间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。
该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版
已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数
J2ME游戏平移到Android或PC版中。唯一遗憾的是,该项目作者是个极其懒惰的家伙,开发文档从去年说到今年依旧没有提供,只有游戏示例可供下
载。
4、jPCT
jPCT是一款基于OpenGL技术开发的3D图形引擎(PC环境为标准OpenGL,Android为OpenGL
ES),
以Java语言为基础的,拥有功能强大的Java
3D解决方案。该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC(J2SE)以及Android两个开发版本。
jPCT的最大优势之一,就在于它惊人的向下兼容性。在PC环境中,jPCT甚至可以运行在JVM1.1环境之中,因为jPCT内部提供的图形渲染接口完
全符合所有的Java
1.1规范(就连已经消失的Microsoft
VM乃至更古老的Netscape
4
VM也不例外)。
5、Catcake
Catcake是一款跨平台的Java
3D图形引擎,目前支持PC(J2SE)及Android环境运行(已有iPhone版规划)。该引擎在易用性和运行性能上皆有出色的表现,支持常见的游戏开发功能,诸如精灵动画,音频处理和视频播放等。
当然还有其他的Android开源游戏引擎,也许更好。
Google官方似乎没有提供比较好的排版引擎实现,Android目前也没有好的开源项目,个人知道的就有一个devilWwj/TextJustify-Android · GitHub,如果要做一个新闻客户端,排版引擎是核心之一,给有用户良好的阅读体验非常重要,有两种解决方案自己研发一套排版引擎,根据CMS的输出来进行解析 使用WebView来实现,类似微信内置浏览器这种说到体验上,自然是native的阅读体验是最好的,webView加载可能会有网络延迟。关于排版引擎我自己整理了一些实际开发可能涉及到的需求点:##基础需求 - 文本两端对齐 - 自动换行 - 图文混排 - 点击图片放大
- 查看图集,可以左右切换- 播放视频
- 点击全屏播放视频
##扩展需求 - 字号大小切换
- 黑夜/白天模式切换 - 文本复制 - 解析html
- 多栏布局 - 可以扩大缩小字距
- 可以扩大缩小行距如果各位有更多的功能点可以本问题发布回答。
作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存在。
常见的Android游戏引擎
Angle
Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。
Rokon
rokon是一款Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,该项目最新版本为 2.0.3 。
LGame
LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,目前最高版本同为0.2.6。
3D引擎:
• Unreal Development Kit (Unreal Engine 3)
• DX Studio
• Untity3D 3.0
• Airplay SDK 4.2
• ShiVa3D (Beta Version)
2D引擎:
• Corona Game Edition
• Cuttlefish Engine
• Rokon 2D Game Engine
• Google App Inventor
• AndEngine
• candroidengine
• Mages Engine
网页端引擎:
• Aves Engine
• Flash 10.1/Air
• jMonkeyEngine
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款