文档章节

墨迹天气桌面挂件换肤分析

z
 zhiliubai
发布于 2017/03/18 12:38
字数 761
阅读 38
收藏 0

该篇文章需要准备如下工具:

1、墨迹皮肤文件下载地址

 

Andorid换肤在网上搜索出来的结果,大概有三种:

1、应用本身带有写好的布局

优点:开发难度低

缺点:灵活性低,用户不能自定义皮肤。

2、使用APK的方式

优点:程序员可以拿出来炫耀自己的技术。

缺点,开发难度中,而且容易出现问题,实现方式和第一种一样,只是获得资源方式不同罢了。

3、使用皮肤文件

优点:用户可定制,灵活性高。

缺点:开发难度中,需要编写大量的代码,这方面资料的介绍很少。

网上能看到详细介绍并作示范的只有前面两种,第三种方案大概就是吹一吹,并没有具体描述其实现的流程和思想。

经分析其流程如下:

1、墨迹天气会首先从服务器中获得皮肤文件,该文件其实是一个ZIP压缩文件,感谢墨迹没有对这方面做加密处理。

2、解压皮肤文件,里面只有两类文件,分别是图片资源文件(PNG)和皮肤绘制描述文件(XML

3、程序根据一定的规则解析皮肤绘制文件,然后按照设定绘制图片和文字。

这么一看,实现这个功能非常简单。

下面是逆向分析整理的一份墨迹解析的配置文件(结合墨迹皮肤文件解压后的setting.xml分析会更好)皮肤文件下载换肤配置文档下载

所谓的自定义的皮肤,不过就是在一个画板上贴图罢了。但是有一个特别的问题需要处理,屏幕那么多,皮肤配置文件给的是写死的坐标该如何适配呢!这个问题不用担心,这一点墨迹已经为我们做好了,详细参看上面的墨迹解析配置文件和皮肤绘制描述文件,里面具体的说明了在不同的分辨率下使用不同的宽和高。

到这里基本算是清楚了,当我们把墨迹的挂件放在桌面上,并使用自定义皮肤,你会在墨迹天气(/data/data/com.moji.mjweather/files)目录下发现这么几个文件。其实是绘制出来的三张图片,然后拼装起来,就成了我们看到的自定义皮肤了,原理简单通俗易懂。

 

现在揭晓挂件上的按钮是如何办到的,其实这些按钮已经固定好了位置,功能也是固定的,在画好的皮肤上面有几个区域添加了几个透明的蒙版(View)当做按钮。

总结:

自定义皮肤不过就是在画板(Canvas)上贴图罢了。关键的部分是如何解析皮肤绘制文件,并按照规则贴图。


-


-



本文转载自:http://blog.csdn.net/zoroday/article/details/17049819

z
粉丝 0
博文 26
码字总数 0
作品 0
广州
私信 提问
Android 打造自己的个性化应用(一):应用程序换肤主流方式的分析与概述

Android平台api没有特意为换肤提供一套简便的机制,这可能是外国的软件更注重功能和易用,不流行换肤。系统不提供直接支持,只能自行研究。 换肤,可以认为是动态替换资源(文字、颜色、字体...

长平狐
2012/09/03
1K
0
Android应用如何实现换肤功能

转载请注明出处,商用请与本人联系。 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平。J2SE基础是指掌握JAVA语法,1.5、1.6新增的语法不完全掌握也没关系。了解...

嘻哈开发者
2014/03/10
221
0
八戒桌面小工具(DeskWidget)v1.2.5圣诞版

国人自主开发的侧边栏Widget,完美模拟VISTA的侧边栏,完美模拟出VISTA系统下的侧边栏软件,包括Widget列表、侧边栏以及设置窗口.小巧、精致、半透明的镶嵌在桌面背景中.支持天气预报、日(月)历...

范堡
2009/05/08
415
0
国内某天气App被指上传用户Wi-Fi 信息,还牵扯了腾讯,怎么回事?

2 月 25 日,雷锋网编辑的朋友圈出现了一张截图,称墨迹天气 App 上传了用户的所有 Wi-Fi 账号,抓包抓出了流氓,背后还有腾讯等大公司的服务接口。 无图无真相,对方还抛出了抓包信息。 这事...

李勤
02/25
0
0
墨迹天气也要上市了,99%盈利来自广告的墨迹能走多远?

     工具类产品商业模式一直是令创业者头疼的难题,特别是做到一定规模的时候,前段时间丁叔跟大家分析了美图作为一个工具起家到上市的历程(点击复习),现在天气工具墨迹天气也要上市...

庖丁开发
2016/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS盒子模型

一、什么叫框模型 页面元素皆为框(盒子) 定义了元素框处理元素内容,内边距,外边距以及边框的计算方式 二、外边距 围绕在元素边框外的空白距离(元素与元素之间的距离) 语法:margin,定...

wytao1995
今天
4
0
Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部