`

Android 给应用定制皮肤

阅读更多
在实现程序功能的同时,如果能让程序界面更加美观,有锦上添花之妙.
先说思路:
1)皮肤也就是相关的资源文件单独放置在某个工程中,一种皮肤一个工程文件.一个工程包括N多的资源文件,多个工程间资源的关系是,文件名,资源ID等完全一样.不同的可能是图片资源,style等的设置不一样.
2)皮肤工程在AndroidManifest.xml中配置android:sharedUserId="com.eric.skinmain".
     表明允许com.eric.skinmain访问本工程中的资源文件. com.eric.skinmain是主项目的包名
3)主项目通过 this.createPackageContext("com.eric.blackskin",Context.CONTEXT_IGNORE_SECURITY);
获取到com.eric.blackskin对应的Context,然后通过返回的context对象就可以访问到com.eric.blackskin中的任何资源,如同访问自身的资源一样
注:记得先安装皮肤工程对应的apk文件
public class main extends Activity {
        /** Called when the activity is first created. */
        private LinearLayout showBg;
        private Button btn;
        private Context green_skin_Context = null;
        private Context black_skin_Context = null;
        int flag = 0;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                showBg = (LinearLayout) findViewById(R.id.linear_layout_1);
                try {
                        green_skin_Context = this.createPackageContext(
                                        "com.eric.greenskin", Context.CONTEXT_IGNORE_SECURITY);
                } catch (NameNotFoundException e) {
                        e.printStackTrace();
                }
                try {
                        black_skin_Context = this.createPackageContext(
                                        "com.eric.blackskin", Context.CONTEXT_IGNORE_SECURITY);
                } catch (NameNotFoundException e) {
                        e.printStackTrace();
                }
                btn = (Button) findViewById(R.id.btn_change_skin);
                btn.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                if (flag == 0) {
                                        showBg.setBackgroundDrawable(green_skin_Context
                                                        .getResources().getDrawable(R.drawable.bg));
                                        btn.setBackgroundDrawable(green_skin_Context
                                                        .getResources().getDrawable(R.drawable.btn_normal));
                                        
                                        flag = 1;
                                } else if (flag == 1) {
                                        showBg.setBackgroundDrawable(black_skin_Context
                                                        .getResources().getDrawable(R.drawable.bg));
                                        btn.setBackgroundDrawable(black_skin_Context
                                                        .getResources().getDrawable(R.drawable.btn_normal));
                                        flag = 0;
                                }

                        }

                });
        }
}

这段代码可以参考。。。。
分享到:
评论
4 楼 wuxifu001 2014-03-04  
不错,不错
3 楼 c1007857613 2011-07-24  
             what?
搞不懂
2 楼 苹果超人 2011-06-17  
引用
主工程报图片资源找不到呢。是不是还漏了哪里

图片不放在res,你能这样(R.drawable.bg)引用到?
1 楼 live17909 2011-04-11  
主工程报图片资源找不到呢。是不是还漏了哪里

相关推荐

    Android开发 系统信息 6 网络数据开关 给应用定制皮肤

    接下来,我们讨论“Android给应用定制皮肤”。为了让应用界面更加吸引用户,开发者可以创建可更换的皮肤,这主要涉及以下几个步骤: 1. **资源分离**:将皮肤相关的资源(如图片、颜色、样式等)放在单独的工程中,...

    Android应用皮肤切换Demo

    本Demo主要展示了如何在Android应用中实现皮肤切换功能,以提供更丰富的用户体验。以下将详细介绍Android应用皮肤切换的基本原理、实现步骤以及相关知识点。 1. **皮肤资源** - 在Android中,皮肤主要通过改变颜色...

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

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

    Android模拟器皮肤 三个新的

    首先,Android模拟器皮肤是模拟器用户界面的一种定制化表现形式,它可以模拟不同的设备外观和屏幕尺寸,以确保应用在不同设备上的兼容性和用户体验。皮肤通常会包括设备的分辨率、密度、硬件按键布局等特征,让...

    Android之主题皮肤实现

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

    Android 实现皮肤打包成apk的demo.zip

    在Android应用开发中,皮肤是一种常见的用户界面定制方式,它允许用户根据个人喜好更改应用的外观。本项目是一个关于如何将皮肤打包成apk的示例,适用于开发者学习和参考。以下将详细介绍这个Android项目的实现机制...

    Android代码-实现皮肤打包成apk的demo.zip

    - Android应用可以通过`PackageManager`类获取已安装的应用信息,包括皮肤APK。 - 使用`Context.createPackageContext()`方法创建一个新的Context,这个新Context可以访问皮肤APK中的资源。 3. **替换主题资源**...

    xbmc自己定制皮肤

    【XBMC自己定制皮肤】是关于个性化和优化家庭媒体中心软件XBMC(Xbox Media Center,现更名为Kodi)的一项技术。这篇博文可能是作者分享如何根据个人喜好调整和设计XBMC用户界面的过程,以获得更佳的视听体验。在...

    android仿QQ更换皮肤

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

    Android 应用开发与底层技术

    ### Android应用开发与底层技术 #### 一、课程概述与讲师介绍 本课程旨在深入讲解Android应用开发及其底层技术的相关知识。课程由陈俊宏(Jollen Chen)主讲,他是一位资深的Embedded Linux顾问与讲师,在Embedded...

    HTC G2风格的Android 模拟器皮肤

    总结,"HTC G2风格的Android模拟器皮肤"提供了一种独特的方式来体验和测试Android应用,尤其是在考虑设备兼容性时。通过源码开放,开发者可以进一步定制和优化皮肤,提升模拟器的使用体验。而对于那些怀念HTC G2经典...

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

    标题“Android应用源码安卓软件实现动态皮肤更换.zip”揭示了这个压缩包包含的是一个Android应用程序的源代码,它的核心功能是支持用户动态更换应用皮肤。动态皮肤更换是Android开发中一个有趣且实用的特性,它允许...

    Android 高仿点心桌面皮肤源码.rar

    5. **资源管理**:Android应用的资源管理是关键,皮肤源码中会涉及到如何加载和管理图片、音频、字体等资源。这可能涉及到`Drawable`、`Bitmap`的使用,以及`AssetManager`和`Resources`的适配。 6. **性能优化**:...

    Android 高仿点心桌面皮肤源码

    要创建一个与其类似的皮肤,开发者需要深入理解Android系统的UI设计原则、自定义控件、主题应用以及资源管理等方面。 首先,我们需要了解Android的布局和视图系统。Android使用XML来定义用户界面,包括LinearLayout...

    Android 高仿点心桌面皮肤源码.zip

    在Android应用开发中,为用户提供个性化、美观的界面体验是至关重要的。点心桌面是一款广受欢迎的Android桌面应用,其独特的皮肤设计吸引了众多用户。本篇文章将深入探讨“Android高仿点心桌面皮肤源码”的关键知识...

    android应用如何赚钱

    8. **赞助和品牌合作**:与品牌或企业合作,为他们定制特定功能或内容,如特别活动或主题皮肤。这需要良好的商务谈判技巧和对品牌形象的理解。 学习这些赚钱心得和实例源代码,可以帮助开发者了解各种盈利策略的...

    安卓Android源码——实现皮肤打包成apk的demo.zip

    总结起来,这个源码demo涵盖了Android应用皮肤打包的核心技术,包括APK结构的理解、资源管理、构建流程的掌握以及动态加载的实现。通过学习和实践这个demo,开发者可以更好地理解和掌握Android应用的皮肤化开发,...

    Android程序研发源码Android 实现皮肤打包成apk的demo.zip

    在Android应用开发中,皮肤是一种常见的用户界面定制方式,它允许用户根据个人喜好更改应用程序的外观。本示例"Android程序研发源码Android 实现皮肤打包成apk的demo"提供了如何将皮肤打包成一个可独立安装的APK文件...

Global site tag (gtag.js) - Google Analytics