`
crazier9527
  • 浏览: 1008481 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android应用换皮肤(转)

阅读更多

看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没怎么人弄个实例出来,所以我来了,哈哈。。


下面的文字大部分是转载的,也懒得自己去打字了,文采不好。

转载地址:http://www.cnblogs.com/suiyc/archive/2011/05/27/2059778.html
不过没图,呵呵。。


国内有很多的软件都支持皮肤定制,这也是与国外软件重大不同之一,国外用户注重社交、邮件等功能,国内用户则重视音乐、小说、皮肤等功能,本节课程就来讲解Android应用程序如何实现换肤功能。
软件换肤从功能上可以划分三种:
  1) 软件内置多个皮肤,不可由用户增加或修改;
    最低的自由度,软件实现相对于后两种最容易。
  2) 官方提供皮肤供下载,用户可以使用下载的皮肤;
    用户可选择下载自己喜欢的皮肤,有些玩家会破解皮肤的定制方法,自己做皮肤使用,或者传到网上给大家用。
  3) 官方提供皮肤制作工具或方法,用户可自制皮肤。
    这种方式使用户有参与感,自由度较高。用户可根据自己的喜好定制软件的皮肤。有些软件官网提供皮肤定制的工具或者方法,我建议最好有可视化带向导的工具。用户只要自己找一些图片、修改文字的字体替换就可以了。用户可以上传自制的皮肤,提供其他用户下载,还可以赚得一些虚拟货币或者奖品什么的。这种一般都是打包为.zip格式的。扩展名可由各公司自定义,有制作工具的话直接导出来最方便。
首先我们要弄清楚换肤的定义,软件皮肤包括图标、字体、布局、交互风格等,换肤就是换掉皮肤包括的部分或所有资源。
  前面提到的三种皮肤,从软件实现上来看,它们的本质区别是皮肤是否内置到应用程序中。对于内置的实现比较简单,只要在开发应用的过程中设计几套皮肤供用户选择。这里用到的知识不超过Android基础,不详细讲解。
这里重点说下如何实现皮肤与应用程序分离。
   皮肤一般含有多个文件,例如图片、配置等文件,分散的文件不利于传输和使用,最好打包。打包的格式一般选择zip格式。这里分两种情况,一种是apk,例如AdwLauncher,它的桌面皮肤格式是一个apk;另一种是自定义扩展名,例如墨迹天气皮肤扩展名是mja,搜狗输入法的皮肤扩展名是sga,它们的文件格式实际上都是zip。
  下面我们分别讲解。
  一.apk格式
   现在的问题变成了一个应用如何读取另一个apk中的资源。
   在android系统中,apk之间可以相互读取数据的条件是:有同样的签名,并且AndroidManifest.xml文件中配置的android:sharedUserId属性值相同,那么两个apk运行在同一个进程中,可以互相访问任意数据。
方法如下:

   1) 应用程序和皮肤程序的AndroidManifest.xml中配置
               例如: android:sharedUserId="com.kris.skin" ,值可以是做任意的,
   2) 文件与应用apk中对同一功能的皮肤文件名要一致
     例如:应用程序的背景图片路径:\SkinDemo\res\drawable-hdpi\bg.png
那么皮肤apk中的背景图片文件路径也应该是:
CustomSkin\res\drawable-hdpi\bg.png
   3)访问资源的方法

  1. Context context = createPackageContext("com.yuchen.customskin", Context.CONTEXT_IGNORE_SECURITY); 
复制代码

获取到org.yuchen.customskin对应的Context,通过返回的context对象就可以访问到org.yuchen.customskin中的任何资源。
   例如:应用apk要获得皮肤apk中的bg.png,

  1. Drawable drawable = context.getResources().getDrawable(R.drawable.bg);
复制代码

这样就得到了图片的引用,其他xml资源文件的获取方式也是类似的。
  二.自定义扩展名的zip格式的皮肤
    技术点在于如何去读取zip文件中的资源以及皮肤文件存放策略。
    方案:如果软件每次启动都去读取SD卡上的皮肤文件,速度会比较慢。较好的做法是提供一个皮肤设置的界面,用户选择了哪一个皮肤,就把那个皮肤文件解压缩到”/data/data/[package name]/skin”路径下,这样不需要跨存储器读取,速度较快,而且不需要每次都去zip压缩包中读取,不依赖SD卡中的文件,即使皮肤压缩包文件被删除了也没有关系。
实现方法:
    1. 在软件的帮助或者官网的帮助中提示用户将皮肤文件拷贝到SD卡指定路径下。
    2. 在软件中提供皮肤设置界面。可以在菜单或者在设置中。可参考墨迹、搜狗输入法、QQ等支持换肤的软件。
    3. 加载指定路径下的皮肤文件,读取其中的缩略图,在皮肤设置界面中显示,将用户选中的皮肤文件解压缩到”/data/data/[package name]/skin”路径下。
    4. 软件中优先读取”/data/data/[package name]/skin/”路径下的资源。如果没有则使用apk中的资源。

下面是我做的实例的截图与source ,我只测试了一下通过apk 来换肤的功能 ,到少其它的方法就留给大家去实验吧,不过记得实验了也上传图来大家一起分享哟。


图来了:
换肤前的截图:
before.png 
换肤后的截图:
after.png 

工程源码来了,re_skin是主程序 ,re_skin1是皮质程序,也就是提供资源的:

 

 

分享到:
评论
2 楼 qingyezhangluo 2014-06-17  
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回答,要下载的人注意啦
1 楼 wooden_baby 2012-01-09  
解压密码?

相关推荐

    Android 应用 更换皮肤(zip实现)

    通过合理利用`ZipFile`类,我们可以实现应用皮肤的动态切换,为用户提供个性化的体验。这个过程需要对Android的资源系统有深入的理解,并能熟练使用Java的文件操作API。同时,注意资源加载的性能优化和资源释放,以...

    android应用换皮肤 很详细哦

    android应用换皮肤

    Android 应用 更换皮肤(skin apk安装实现)

    在Android应用开发中,更换皮肤或主题是一种常见的用户定制化功能,可以提升用户体验,让用户根据个人喜好调整应用的视觉风格。本篇文章将深入探讨如何在Android应用中实现皮肤更换,特别是通过skin APK安装来实现这...

    Android应用源码安卓软件实现动态皮肤更换.zip

    首先,我们需要理解Android应用皮肤的基本概念。皮肤通常由一系列图像、颜色值和布局文件组成,它们定义了应用的视觉样式。在Android中,我们可以通过改变这些资源来实现皮肤的切换。主要有以下几种方法: 1. **...

    Android 应用更换皮肤实现方法

    本文档介绍了一种实现Android应用更换皮肤的方法,重点在于如何将皮肤包构建成一个独立的APK文件,并在应用APK中读取并应用皮肤包中的资源。 #### 实现思路 实现Android应用更换皮肤功能需要遵循特定的步骤和条件。...

    Android应用皮肤切换Demo

    以下将详细介绍Android应用皮肤切换的基本原理、实现步骤以及相关知识点。 1. **皮肤资源** - 在Android中,皮肤主要通过改变颜色、图片、布局等资源文件来实现。这些资源通常存放在res目录下,分为不同的文件夹,...

    Android 摇一摇换皮肤

    在Android平台上实现“摇一摇换皮肤”的功能,涉及到多个技术点,包括传感器事件处理、UI动态更新以及资源管理等。下面将详细讲解这些关键知识点。 1. **传感器事件处理**: Android设备通常配备有多种传感器,如...

    android仿QQ更换皮肤

    在Android平台上,模仿QQ更换皮肤是一项有趣的挑战,它涉及到用户界面的动态定制和主题管理。在实现这个功能的过程中,开发者需要深入理解Android系统的组件、事件监听以及数据存储机制。以下是一些关键的知识点: ...

    android theme 皮肤主题 的应用

    在Android操作系统中,主题(Theme)是用户界面的重要组成部分,它定义了应用程序的整体视觉样式,包括颜色、字体、布局和图标的外观等。...理解并掌握这些知识点,将有助于开发出更加美观、个性化的Android应用。

    Android模拟器皮肤6套

    总的来说,“Android模拟器皮肤6套”为开发者提供了丰富的设备模拟选项,有助于提升开发效率和应用质量。通过充分利用这些资源,开发者能够更好地适应Android生态系统的多样性,确保应用在广泛的设备上都能顺畅运行...

    Android切换界面皮肤代码

    本教程将深入探讨如何在Android应用中实现实时切换界面皮肤的代码技术。 首先,我们需要理解皮肤的基本概念。在Android中,皮肤通常是指应用界面的颜色、字体、图片等视觉元素的集合。我们可以把皮肤看作是一组资源...

    Android Studio 皮肤资源

    在Android应用开发中,除了IDE的皮肤资源,我们还可以为应用本身创建自定义主题。通过修改`styles.xml`文件,开发者可以定义不同的主题和样式,这些主题可以在整个应用中统一界面风格。例如,可以更改文字颜色、背景...

    android程序换皮肤之二

    在Android应用程序开发中,换肤功能是一个常见的需求,它允许用户根据个人喜好更改应用的视觉样式。本篇文章将深入探讨如何实现这一功能,主要关注"android程序换肤之二"这个主题。通过阅读博文...

    Android之主题皮肤实现

    在Android应用开发中,提供可定制的主题皮肤是提升用户体验、增加用户粘性的重要手段。本文将详细介绍三种在Android中实现主题皮肤切换的方法,帮助开发者更好地理解这一技术。 首先,我们来了解一下基本概念。主题...

    android程序换皮肤之一

    在Android应用程序开发中,换肤功能是一个非常受欢迎的特性,它允许用户根据个人喜好更改应用的外观和感觉。本文将探讨如何实现Android程序的换肤功能,主要关注于"android程序换肤之一"这个主题。博客链接(由于...

    android开发皮肤图片

    在Android开发中,皮肤图片(Skin)是一种常见的设计元素,用于改变应用的视觉风格和用户界面的外观。本文将深入探讨如何在Android项目中使用皮肤图片,以及它们对提升用户体验的重要性。 首先,让我们理解什么是...

    Android高级应用源码-“摇一摇”动态更换皮肤完美实现!.rar

    ”提供了一个实例,展示了如何在Android应用中实现这一功能,并且结合了动态更换皮肤的特性,使得用户体验更加丰富。 首先,我们要理解“摇一摇”功能的实现原理。Android系统提供了SensorManager类,用于管理和...

    Android 换皮肤源码.zip

    "Android 换皮肤源码.zip"可能包含了一个实现这一功能的示例项目,我们可以从这个压缩包中的两个文件名"Re_Skin1"和"Re_Skin"推测,它们可能是实现换肤功能的不同部分或者不同版本。 Android换肤技术主要涉及到以下...

Global site tag (gtag.js) - Google Analytics