android 换肤功能实现,Android换肤功能实现

概述

由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因

所以国内如果要做一个漂亮的换肤方案,需要自己去实现。

目前换肤的方法大概有三种方案:

(1)把皮肤资源文件内置于应用程序Apk的资源目录下,这种方案最简单,但是导致apk安装包比会比比较大,而且不好管理

(2)将皮肤资源文件打包成zip的资源文件方式提供,该方法也比较多被采用。

(3)将皮肤图片资源以独立的Apk安装包的方式提供,做成插件化的方式。便于管理。

本文主要讨论第三种实现。

数据共享条件

有相同签名

AndroidManifest.xml中配置android:sharedUserId有相同的属性值

满足以上条件,两个apk就能互相访问数据了。

实现方式

1、应用程序和皮肤程序的AndroidManifest.xml中配置

android:sharedUserId="com.yee"

2、应用apk与皮肤apk中对同一功能的皮肤文件名要一致

例如:应用apk的图片路径:\res\drawable-hdpi\XX.png

皮肤apk中的图片文件路径也应该是:\res\drawable-hdpi\XX.png

3、获取皮肤资源

Java代码

Context context = createPackageContext("com.yee.skin", Context.CONTEXT_IGNORE_SECURITY);

获取到皮肤包com.yee.skin对应的Context,通过返回的context对象就可以访问到皮肤apk包com.yee.skin中的任何资源。

在应用apk中要获得皮肤apk中的buttonbackground.png的代码如下

Java代码

Drawable drawable = context.getResources().getDrawable(R.drawable.buttonbackground);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于安卓的Android仿微信客户端-猫友。是一个csdn上的朋友的原创项目,原帖可以看这里http://blog.csdn.net/ericfantastic/article/details/49451249 实现了微信的登录注册、主界面、聊天会话、通讯录、发现界面、个人设置、添加好友、扫描二维码、视频通话、等所有基本功能。 下面是具体搭建方法: 1、下载Openfire的安装:http://download.csdn.net/detail/ericfantastic/9219685 Openfire服务器及MySQL具体配置可以参考:http://www.th7.cn/db/mysql/201406/59838.shtml 2、建议下载Openfire自带的PC客户端Spark,方便测试功能:http://download.csdn.net/detail/ericfantastic/9219815 3、修改源码中的服务器主机地址:在ConnetServer.java中,修改Configuration为本地的IP地址。 4、修改添加好友中的JID主机名:在AddFriendActivity.java中,修改addFriend方法中的"@ericwork-pc"修改为服务器的主机名,不区分大小写; 5、修改聊天页面中的JID主机名:在ChatActivity.java中,修改发送按钮的监听事件中的"@ericwork-pc",同上。 实现一个IM实时聊天应用,少不了弄服务器,目前开源的Openfire服务器就比较合适,而且很多功能都已经封装好了,实现聊天APP就简洁很多。服务器后端的数据库我选择了MySQL,当然Openfire也支持大部分的主流数据库,只要在配置的时候修改好参数即可;搭建的时候,把服务器配到8G内存笔记本上,网上得知,Openfire每个线程大约占4k内存,那理论上是可以80w 用户,当然实际肯定没那么多,Openfire在一台8G的主流服务器上支持30W的用户肯定没有问题。 简单说明一下Eric_JQM_Chat工程目录结构,当初开发的时候初衷只是玩玩openfire实现IM的过程,没想到一写就写了一通,对模块也没有很好的分,还请多多涵。 可以脸红的说,基本上所有功能实现都放在第一个eric_jqm_chat里了,第二个Service主要放与于后台服务相关的,但后来这些服务我也都没有启用,后面的四个Zxing就是实现二维码扫描的,具体如何实现我的博客里有介绍。 Login登录相关,括保存当前登录账号密码,下次直接登录使用等功能; Register注册相关,括本地输入校验; MainActivity主界面相关,含四个Fragment页面、上方Actionbar及下方的自定义View选项; TabFragment会话界面,用于接收收到的所有消息,并统计条目; TabFragment2通讯录界面,加载用户的好友列表; TabFragment3发现界面,功能尚未添加; TabFragment4个人设置页面,加载个人资料; AddFriendActivity添加好友页面,搜索仅仅是获取用户头像,申请添加好友,及接受好友添加请求并处理; CaptureActivity扫描二维码页面,扫描二维码功能; CatchCameraActivity视频通话页面,仅完成获取前置摄像头预览及获取网络RTSP视频流播放; ConnetServer连接服务器类,单例模式; FormatTools简单工具类,用于各种类型数据间的转换; ChatActivity聊天页面,实现指定好友的聊天功能,及聊天记录的保存; FriendDetail聊天好友详情页面,更改聊天背景等; 主要的类就是这些,具体的详细实现大家可以直接看代码,注释写的很详细了,有疑问的欢迎交流,存在bug还请指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值