在实现程序功能的同时,如果能让程序界面更加美观,有锦上添花之妙.
先说思路:
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文件.


  1. public class main extends Activity {
  2. /** Called when the activity is first created. */
  3. private LinearLayout showBg;
  4. private Button btn;
  5. private Context green_skin_Context = null;
  6. private Context black_skin_Context = null;
  7. int flag = 0;

  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. showBg = (LinearLayout) findViewById(R.id.linear_layout_1);
  13. try {
  14. green_skin_Context = this.createPackageContext(
  15. "com.eric.greenskin", Context.CONTEXT_IGNORE_SECURITY);
  16. } catch (NameNotFoundException e) {
  17. e.printStackTrace();
  18. }
  19. try {
  20. black_skin_Context = this.createPackageContext(
  21. "com.eric.blackskin", Context.CONTEXT_IGNORE_SECURITY);
  22. } catch (NameNotFoundException e) {
  23. e.printStackTrace();
  24. }
  25. btn = (Button) findViewById(R.id.btn_change_skin);
  26. btn.setOnClickListener(new OnClickListener() {
  27. @Override
  28. public void onClick(View v) {
  29. if (flag == 0) {
  30. showBg.setBackgroundDrawable(green_skin_Context
  31. .getResources().getDrawable(R.drawable.bg));
  32. btn.setBackgroundDrawable(green_skin_Context
  33. .getResources().getDrawable(R.drawable.btn_normal));

  34. flag = 1;
  35. } else if (flag == 1) {
  36. showBg.setBackgroundDrawable(black_skin_Context
  37. .getResources().getDrawable(R.drawable.bg));
  38. btn.setBackgroundDrawable(black_skin_Context
  39. .getResources().getDrawable(R.drawable.btn_normal));
  40. flag = 0;
  41. }

  42. }

  43. });
  44. }
  45. }

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  6. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  7. Android(安卓)培训计划:如何从功能机时代的 C/C++ 工程师转型至 A
  8. Android(安卓)so lib库远程http下载和动态注册
  9. Android(安卓)图片控件ImageView

随机推荐

  1. 我太难了,太难了!!!
  2. 动画:如何用「前端」做出吊炸天基于大数据
  3. 为何总给外卖打差评?我们来数据分析一下!
  4. 动画:面试必刷之二叉树搜索第 K 大节点
  5. “没想到吧,我胡汉三又回来了!”
  6. 之所以被裁也许是少了这些东西 [每日前端
  7. 年终总结 | 小鹿给读者拜年啦!
  8. JavaScript中的执行上下文和堆栈[每日前
  9. 现代浏览器探秘(part 1):架构 [每日前端夜
  10. 讲真,Markdown有啥魅力,竟让如此多人入迷!