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

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

发表于: 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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号