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

应用换肤实现思路总结

阅读更多

注:以下所有言论纯属个人主观分析。

 

换肤解决方案:
1.manifest.xml中设置android:sharedUserId,通过这种方式可以达到不用应用相互访问资源的目的,以实现换肤功能。
优点:可定期提供换肤包供下载,换肤方式灵活。
缺点:如需使用某个皮肤,必须安装该皮肤。

实现实例代码:

package com.test.android.skin.main;

import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.widget.Button;

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Context friendContext = null;

		try {
			friendContext = this.createPackageContext(
					"com.test.android.skin.myskin",
					Context.CONTEXT_IGNORE_SECURITY);
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}

		Button btn = (Button) findViewById(R.id.btn);

		if (friendContext == null) {
//			btn.setBackgroundResource(R.drawable.btn_background);
		} else {
			int id = friendContext.getResources().getIdentifier("btn_background", "drawable", friendContext.getPackageName());
			btn.setBackgroundDrawable(friendContext.getResources().getDrawable(id));
		}
	}
}

 

 

 

2.一个应用中放置几个固定的皮肤,皮肤之间的控制由程序来控制实现。
优点:实现简单。
缺点:不够灵活,要增加新的皮肤需要更新应用。

实现实例:这个很简单,我觉得可以通过sharereference统一控制皮肤的前缀或者路径来实现一个通用的换肤目的。

 

3.zip压缩包式皮肤。应用可设置一个默认路径。如果用户选择某个皮肤,则解压该皮肤.zip到这个文件夹中。
优点:无需安装,即使卸载掉皮肤应用,该皮肤仍然可用,不会影响正常使用。
缺点:可能会因为用户的误操作,使皮肤文件损坏。

实现实例代码:
核心代码:解压文件,读文件

 

4.更改背景图片达到整体换肤的目的。这种实现方式比较简单。所有的activity都只有一个大背景,上边的所有内容都为透明样式。这样只需要更改一个背景颜色达到换肤的目的了。

分享到:
评论
1 楼 qq408170918 2014-08-27  
楼主 请问下 “zip压缩包式皮肤” 这个 要怎么解压 怎么读啊  能给个demo吗???

相关推荐

    Android应用开发中实现apk皮肤文件换肤的思路分析

    总结起来,Android应用实现apk皮肤文件换肤的关键在于理解并利用`sharedUserId`来打破APK间的资源隔离,以及通过动态修改布局资源实现皮肤的切换。通过这种方式,开发者可以为用户提供更丰富的个性化体验,同时保持...

    mfc界面换肤

    总结来说,MFC界面换肤是通过设计皮肤资源,创建配置文件,自定义MFC控件类,读取和应用配置,以及处理控件事件来实现的。这一过程涉及到资源管理、事件处理、图形绘制等多个方面,对于提升MFC应用的用户体验具有...

    MIUI主题风格_一种Android系统换肤功能的设计 思路(董红光)

    ### MIUI主题风格——一种Android系统换肤功能的设计思路 #### 一、引言 随着移动设备的普及和发展,用户体验成为软件开发中的一个重要考量因素。其中,个性化设置,特别是主题风格的定制化服务,越来越受到用户的...

    react实现换肤功能的示例代码

    三、具体实现思路 1. 在React组件中,我们可以这样创建主题色选择的HTML部分: ```jsx ${this.state.skinIndex==0?'active':''}`} onClick={this.toggleSkin.bind(this,0)}> ${this.state.skinIndex==1?'active'...

    Android实现换肤的两种思路分析

    总结来说,Android实现换肤功能的两种主要思路各有优劣。预置皮肤资源的方式用户自定义程度低,但操作简单,效率高;动态下载皮肤的方式则提供了更高的自定义自由度,但需要更多的存储空间和网络支持,并且要考虑...

    界面换肤程序

    本文将详细介绍一种自定义的界面换肤程序设计思路,并通过具体步骤来实现这一功能。 #### 二、实现原理 在Windows平台下,可以通过创建一个基于对话框的应用程序并加载动态链接库(DLL)的方式来实现界面换肤的功能...

    Vue + Scss 动态切换主题颜色实现换肤的示例代码

    动态切换主题颜色的实现思路 实现动态切换主题颜色,关键在于在项目中合理运用CSS变量。步骤如下: - **为html根元素设置data-theme属性**:这个属性值根据用户选择的主题动态改变。 - **通过Scss变量使用对应...

    webpack构建换肤功能的思路详解

    总结起来,Webpack构建换肤功能的核心思路包括: 1. 设置多个入口点,每个入口点对应一个皮肤主题。 2. 使用CSS预处理器(如Stylus)定义皮肤变量并导入共享样式。 3. 打包后处理HTML,移除多余JS引用,将皮肤CSS...

    jQuery实现的网站换肤功能,带cookie,默认为点击后的颜色。

    总结来说,使用jQuery实现网站换肤功能涉及以下几个步骤: 1. 创建多个皮肤CSS文件。 2. 使用jQuery操作DOM,动态改变`<link>`标签的`href`属性。 3. 实现cookie读写功能,以保存用户的选择。 4. 在页面加载时根据...

    像早期QQ界面源码,可换肤,自绘列表控件

    5. 应用场景:尽管最初的项目目标是创建一个校内聊天软件,但这个源代码可以作为一个学习和研究的对象,帮助其他开发者理解如何实现自定义界面和换肤功能。对于那些想要为自己的应用程序添加类似界面或功能的开发者...

    Android机顶盒主题切换的设计与实现.pdf

    总结来说,本文为Android机顶盒主题切换提供了一种创新的实现方式,通过Fragment组件和主题包结合,实现了更丰富的界面主题化,满足了用户对于个性化和交互体验的追求。这种设计思路对于Android客户端应用开发具有...

    风知记事源码

    这款App以其简约的设计风格和实用的功能赢得了用户的喜爱,特别是其一键换肤和放飞记事等特色功能,不仅增强了用户体验,也为开发者提供了创新思路。 1. **设计原则与界面美观** 风知记事的设计遵循了“简约即美”...

    金山界面库分析文档

    【金山界面库分析文档】是关于UI界面设计和开发的一份技术文档,主要涉及通过XML进行界面元素的动态创建和属性设置,以实现界面...这一设计思路在UI开发中具有广泛的应用价值,能够提高开发效率并提供更好的用户体验。

    91个皮肤模块 易语言

    在实际开发过程中,开发者可以结合"使用说明.txt" 学习如何导入和应用这些皮肤模块,通过调整代码来实现动态换肤功能,使软件界面随用户喜好变化。此外,也可以通过研究不同的皮肤模块源码,学习和借鉴优秀的界面...

    清华教材嵌入式 入门 很好

    ### 嵌入式系统入门知识点总结 #### 一、课程设计目的与要求 本课程设计旨在通过实际项目,帮助学生深入理解并掌握嵌入式系统的基础知识与开发技巧。具体来说,通过本课程设计,学生应达到以下目标: 1. **理论与...

    Plug-in GUI-开源

    总结来说,“Plug-in GUI”是一个开源库,专注于提供简单易用的接口,帮助程序员快速实现可换肤功能。它体现了开源社区的力量,通过VC6.ISO提供的开发环境,开发者可以更好地理解和使用这个库,进而提升他们的软件...

Global site tag (gtag.js) - Google Analytics