当前位置: 编程技术>移动开发
本页文章导读:
▪教你如何做可以换皮肤的软件 教你怎么做可以换皮肤的软件
网上找了很久,未果。偶然的机会,看到aiMinesweeper.HelloSkin的AndroidManifest.xml里有那么一个属性:android:sharedUserId="com.artfulbits.aiminesweeper"顿时感到看到了阳光,.........
▪ android移动开发案例源代码打包上载 android移动开发案例源代码打包下载
android移动开发案例源代码打包下载
......
▪ 怎么实现一个网站的客户端程序,和手机版的校内通相类似 如何实现一个网站的客户端程序,和手机版的校内通相类似
大家好,有谁做过一个网站的客户端程序,类似校内网站的校内通一样,就是能装在手机上,时刻能看到一个网站的及时信息,.........
[1]教你如何做可以换皮肤的软件
来源: 互联网 发布时间: 2014-02-18
教你怎么做可以换皮肤的软件
网上找了很久,未果。
偶然的机会,看到aiMinesweeper.HelloSkin的AndroidManifest.xml里有那么一个属性:android:sharedUserId="com.artfulbits.aiminesweeper"
顿时感到看到了阳光,马上google了一下,发现了关键的地方。
SharedUserid
拥有同一个User id的多个APK可以配置成运行在同一个进程中,所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。
哈哈,这个就是我要找的东西,马上开始试验。
工程1(主工程)
只有1个画面,包含1个为了测试用的button
AndroidManifest.xml
MainActivity
drawable下放一张名为btn_background.pnd的图片
工程2(皮肤工程)
AndroidManifest.xml
drawable下也放一张名为btn_background.png的图片(换成xml文件就可以实现不同状态不同图片的功能)
把2个工程都安装到模拟器上以后,运行工程1,button上的图片果然是工程2中的btn_background.png,终于成功了。
测试代码(主工程和皮肤工程)已上传,没写注释望见谅。
/guide/topics/resources/drawable-resource.html#LevelList
我想你可以参考这个,通过设定不同的level值,就可以调用不同的drawable,可能这个可以满足你的要求
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
我没有做。
如果你想做,你可以
1. 开发主程序的时候,允许其他应用调用你的数据库(用URI,网上搜一下)
2. 安装皮肤程序的时候,通过接口往你的数据库添加package名
3. 在主程序里,添加一个dialog,可以把数据库里已添加的皮肤显示出来,供切换
4. 如果切换到默认皮肤,只要把相应的变量设成某某值(例如:DEFAULT)就可以了
希望对你有所帮助
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
我没有做。
如果你想做,你可以
1. 开发主程序的时候,允许其他应用调用你的数据库(用URI,网上搜一下)
2. 安装皮肤程序的时候,通过接口往你的数据库添加package名
3. 在主程序里,添加一个dialog,可以把数据库里已添加的皮肤显示出来,供切换
4. 如果切换到默认皮肤,只要把相应的变量设成某某值(例如:DEFAULT)就可以了
希望对你有所帮助
好的,谢谢了。我试试去
网上找了很久,未果。
偶然的机会,看到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,终于成功了。
测试代码(主工程和皮肤工程)已上传,没写注释望见谅。
1 楼
cqllang
2011-03-07
感觉是sharedUserId共享两个程序之间资源的吧?
跟换皮肤好像关系不大?
跟换皮肤好像关系不大?
2 楼
dai_lm
2011-03-23
恩,对的,的确是共享2个工程之间的资源
这样就可以创建一个只有默认皮肤的工程,一个单独的皮肤工程,调用皮肤工程的资源就可以改变Activity画面的主题,布局等。
如果想做多套皮肤,只要创建相应多的皮肤工程,然后安装就可以了。
如果是在同一个工程里就包含了多套皮肤,那么切换就更简单,直接代码控制就可以了。
当然这个只是自己的研究调查,如果有不对的地方,还请指教
这样就可以创建一个只有默认皮肤的工程,一个单独的皮肤工程,调用皮肤工程的资源就可以改变Activity画面的主题,布局等。
如果想做多套皮肤,只要创建相应多的皮肤工程,然后安装就可以了。
如果是在同一个工程里就包含了多套皮肤,那么切换就更简单,直接代码控制就可以了。
当然这个只是自己的研究调查,如果有不对的地方,还请指教
3 楼
live17909
2011-04-07
能出源码吗
4 楼
live17909
2011-04-11
主工程报图片资源找不到呢。是不是还漏了哪里
5 楼
dai_lm
2011-04-12
代码已上传,有需要的朋友可以下载
(水平有限,勿喷)
(水平有限,勿喷)
6 楼
live17909
2011-04-18
同一个工程里就包含了多套皮肤,那么切换就更简单?怎么切换呢,代码可以控制drawable不同文件夹的显示吗?drawable文件夹的图片不是系统自适应显示的吗
7 楼
dai_lm
2011-04-18
live17909 写道
同一个工程里就包含了多套皮肤,那么切换就更简单?怎么切换呢,代码可以控制drawable不同文件夹的显示吗?drawable文件夹的图片不是系统自适应显示的吗
/guide/topics/resources/drawable-resource.html#LevelList
我想你可以参考这个,通过设定不同的level值,就可以调用不同的drawable,可能这个可以满足你的要求
8 楼
clm86
2011-08-11
你好,我想问一下,你还有没有研究换肤的。我看了一下你这个,这样换肤是不是要在手机上再装上新皮肤的应用。要是要换到默认的皮肤不就控制不了。。。
9 楼
dai_lm
2011-08-12
clm86 写道
你好,我想问一下,你还有没有研究换肤的。我看了一下你这个,这样换肤是不是要在手机上再装上新皮肤的应用。要是要换到默认的皮肤不就控制不了。。。
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
10 楼
clm86
2011-08-14
dai_lm 写道
clm86 写道
你好,我想问一下,你还有没有研究换肤的。我看了一下你这个,这样换肤是不是要在手机上再装上新皮肤的应用。要是要换到默认的皮肤不就控制不了。。。
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
11 楼
dai_lm
2011-08-15
clm86 写道
dai_lm 写道
clm86 写道
你好,我想问一下,你还有没有研究换肤的。我看了一下你这个,这样换肤是不是要在手机上再装上新皮肤的应用。要是要换到默认的皮肤不就控制不了。。。
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
我没有做。
如果你想做,你可以
1. 开发主程序的时候,允许其他应用调用你的数据库(用URI,网上搜一下)
2. 安装皮肤程序的时候,通过接口往你的数据库添加package名
3. 在主程序里,添加一个dialog,可以把数据库里已添加的皮肤显示出来,供切换
4. 如果切换到默认皮肤,只要把相应的变量设成某某值(例如:DEFAULT)就可以了
希望对你有所帮助
12 楼
clm86
2011-08-15
dai_lm 写道
clm86 写道
dai_lm 写道
clm86 写道
你好,我想问一下,你还有没有研究换肤的。我看了一下你这个,这样换肤是不是要在手机上再装上新皮肤的应用。要是要换到默认的皮肤不就控制不了。。。
这个逻辑就看各人怎么控制了,一般的做法是把皮肤的package存到数据库,然后切换。
那不知你是怎么实现的。能否提点一下
我没有做。
如果你想做,你可以
1. 开发主程序的时候,允许其他应用调用你的数据库(用URI,网上搜一下)
2. 安装皮肤程序的时候,通过接口往你的数据库添加package名
3. 在主程序里,添加一个dialog,可以把数据库里已添加的皮肤显示出来,供切换
4. 如果切换到默认皮肤,只要把相应的变量设成某某值(例如:DEFAULT)就可以了
希望对你有所帮助
好的,谢谢了。我试试去
[2] android移动开发案例源代码打包上载
来源: 互联网 发布时间: 2014-02-18
android移动开发案例源代码打包下载
android移动开发案例源代码打包下载
[3] 怎么实现一个网站的客户端程序,和手机版的校内通相类似
来源: 互联网 发布时间: 2014-02-18
如何实现一个网站的客户端程序,和手机版的校内通相类似
大家好,有谁做过一个网站的客户端程序,类似校内网站的校内通一样,就是能装在手机上,时刻能看到一个网站的及时信息,但是我不知道怎么样在android下访问远程服务器和数据库,谁有这方面的经验,能否介绍一下,我看到javaEye网站推出了一个客户端,但是没有看懂,还有一点,服务器端需要怎么配置?谢谢
大家好,有谁做过一个网站的客户端程序,类似校内网站的校内通一样,就是能装在手机上,时刻能看到一个网站的及时信息,但是我不知道怎么样在android下访问远程服务器和数据库,谁有这方面的经验,能否介绍一下,我看到javaEye网站推出了一个客户端,但是没有看懂,还有一点,服务器端需要怎么配置?谢谢
最新技术文章: