当前位置:首页 > 开发 > 移动开发 > 正文

教你怎么做可以换皮肤的软件

发表于: 2010-05-27   作者:dai_lm   来源:转载   浏览次数:
摘要: 网上找了很久,未果。 偶然的机会,看到aiMinesweeper.HelloSkin的AndroidManifest.xml里有那么一个属性: android:sharedUserId="com.artfulbits.aiminesweeper" 顿时感到看到了阳光,马上google了一下,发现了关键的地方。 SharedUserid 拥有同一个User id的多
网上找了很久,未果。
偶然的机会,看到aiMinesweeper.HelloSkin的AndroidManifest.xml里有那么一个属性: android:sharedUserId="com.artfulbits.aiminesweeper"
顿时感到看到了阳光,马上google了一下,发现了关键的地方。

SharedUserid
拥有同一个User id的多个APK可以配置成运行在同一个进程中,所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。

哈哈,这个就是我要找的东西,马上开始试验。

工程1(主工程)
只有1个画面,包含1个为了测试用的button
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.test.android.skin.main" android:versionCode="1"
	android:versionName="1.0" android:sharedUserId="com.test.android.skin">

	<application android:icon="@drawable/icon" android:label="@string/app_name">

		<activity android:name=".MainActivity" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>

</manifest>


MainActivity
	@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);
		btn.setBackgroundDrawable(friendContext.getResources().getDrawable(
				R.drawable.btn_background));
	}


drawable下放一张名为btn_background.pnd的图片

工程2(皮肤工程)
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.test.android.skin.myskin" android:versionCode="1"
	android:versionName="1.0" android:sharedUserId="com.test.android.skin">

	<application android:icon="@drawable/icon" android:label="@string/app_name">

		<activity android:name=".MainActivity" android:label="@string/app_name">

			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>

		</activity>

	</application>

</manifest> 


drawable下也放一张名为btn_background.png的图片(换成xml文件就可以实现不同状态不同图片的功能)

把2个工程都安装到模拟器上以后,运行工程1,button上的图片果然是工程2中的btn_background.png,终于成功了。

测试代码(主工程和皮肤工程)已上传,没写注释望见谅。

教你怎么做可以换皮肤的软件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在同一个Application中动态切换主题,这里采用的是动态引用不同的CSS文件。 具体步骤如下: 1)创建
在同一个Application中动态切换主题,这里采用的是动态引用不同的CSS文件。 具体步骤如下: 1)创建
在同一个Application中动态切换主题,这里采用的是动态引用不同的CSS文件。 具体步骤如下: 1)创建
在同一个Application中动态切换主题,这里采用的是动态引用不同的CSS文件。 具体步骤如下: 1)创建
主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了
该文章基于V1.6.9版本 apkplug主题切换有两个层次的切换,这篇文章只讲解通用主题切换层次 一 何为
1,ios app主题切换的原理就是为具有相同名称的图片创建不同的路径,在载入这些图片的时候,我们需
我想破解软件: 网络填表终结者 破解须要的软件(点击下载): 侦壳 language.exe 脱壳AspackDie.ex
搞Java的开发人员交谈中经常提及框架和架构两个词汇。Java开源社区活跃,大量优秀的开源项目可以学
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 参看来源:http://vip.x
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号