android 类似QQ 换皮肤 实现思路 apk资源共享

发布:t80t90s | 发布时间: 2013年3月30日

原文:http://t80t90s.com/view.asp?id=23

1、首先在AndroidManifest.xml中的<manifest>中加入android:sharedUserId="共享id"----具有相同id的apk可以不受限制访问。

2、根据包名创建Context,在Activity下有提供方法createPackageContext能够依据包名创建。

3、获取共享的Apk资源。

注意:

1、Activity中的findViewById()与View中的findViewById()区别在于:

Activity需要对setContextView()后的Layout才能由findViewById()获得View。

View只需要有对象即可由findViewById()获得在View中包含id的View。

2、在资源获取方面主要获取那个apk下的资源主要是由Context决定。

在资源apk没安装前:

资源文件安装后:

主apk包名:com.app.share;

资源apk包名:com.app.share2;

主Activity中获取资源apk中R,并且生成Layout对id为button1的按钮设置监听。

view plain
  1. public class StartAct extends Activity {

  2. /** Called when the activity is first created. */

  3. @Override

  4. public void onCreate(Bundle savedInstanceState) {

  5. super.onCreate(savedInstanceState);

  6. //        setContentView(R.layout.main);

  7. Button btn = new Button(this);

  8. btn.setText("TO SECOND");

  9. btn.setOnClickListener(new OnClickListener() {

  10. @Override

  11. public void onClick(View v) {

  12. // TODO Auto-generated method stub

  13. Intent intent = new Intent(StartAct.this, SecontAct.class);

  14. StartAct.this.startActivity(intent);

  15. }

  16. });

  17. this.setContentView(btn);

  18. try {

  19. Context other = this.createPackageContext("com.app.share2", CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);

  20. Class<?> c = other.getClassLoader().loadClass("com.app.share2.R");

  21. Class<?>[] cl = c.getClasses();

  22. int b =0;

  23. for (int i = 0; i < cl.length; i++) {

  24. Log.d("TAG", cl[i].getSimpleName());

  25. Field field[] = cl[i].getFields();

  26. for (int j = 0; j < field.length; j++) {

  27. Log.d("TAG", "NAME:"+field[j].getName()+"--VALUE:"+field[j].getInt(field[j].getName()));

  28. if(field[j].getName().equals("button1")) {

  29. b = field[j].getInt(field[j].getName());

  30. Log.d("TAG", "--------id");

  31. }

  32. };

  33. }

  34. View v = LayoutInflater.from(other).inflate(R.layout.main, null);

  35. Button btn1 = (Button) v.findViewById(b);

  36. btn1.setOnClickListener(new OnClickListener() {

  37. @Override

  38. public void onClick(View v) {

  39. // TODO Auto-generated method stub

  40. Log.d("TAG", "BUTTON FROM Share2");

  41. Toast.makeText(StartAct.this, "BUTTON FROM Share2", Toast.LENGTH_SHORT).show();

  42. }

  43. });

  44. this.setContentView(v);

  45. } catch (NameNotFoundException e) {

  46. // TODO Auto-generated catch block

  47. e.printStackTrace();

  48. } catch (ClassNotFoundException e) {

  49. // TODO Auto-generated catch block

  50. e.printStackTrace();

  51. } catch (IllegalArgumentException e) {

  52. // TODO Auto-generated catch block

  53. e.printStackTrace();

  54. } catch (IllegalAccessException e) {

  55. // TODO Auto-generated catch block

  56. e.printStackTrace();

  57. }

  58. }

  59. }

资源apk包Layout

view plain
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  3. android:orientation="vertical"

  4. android:layout_width="fill_parent"

  5. android:layout_height="fill_parent"

  6. >

  7. <TextView

  8. android:layout_width="fill_parent"

  9. android:layout_height="wrap_content"

  10. android:text="Share2"

  11. />

  12. <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

  13. </LinearLayout>

android 类似QQ 换皮肤 实现思路 apk资源共享相关推荐

  1. Android实现QQ换头像的对话框

    之前一直觉得QQ换头像弹出的对话框挺好看的,而且在项目中也有这个 需求,于是写一个Demo出来分享一下. 话不多说,先来张效果图看看. 上面是QQ中的效果. 上面的效果图为需要实现的效果. 简单来说, ...

  2. android类似QQ空间,微信朋友圈,微博主页源码

    2019独角兽企业重金招聘Python工程师标准>>> 类似QQ空间,微信朋友圈,微博主页等,展示图片的九宫格控件,自动根据图片的数量确定图片大小和控件大小,使用Adapter模式设 ...

  3. android 仿qq换肤功能,Android插件化的思考——仿QQ一键换肤,思考比实现更重要!.doc...

    Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 关于QQ的换肤,他们的实现思路我不是很清楚,但是你可以看一下这张换肤的截图 我们想使用哪个主题就直接下载就好了,这一实现的过程我们大致 ...

  4. Android类似QQ弹窗效果

    QQ的消息提醒有通知栏的还有弹出对话框的,怎么样才能有这种效果: 我是这样做的,不知道对不对,希望大家互相学习. 1.布局文件照着他这样做,代码: <?xml version="1.0 ...

  5. 关于Android类似qq和微信那种在桌面图标右上角更新数字的研究

    记录下这个需求的研究  写的超级随意  大家凑合看 不懂再问 一起探讨 因为我们的产品也需要有即时通讯了  消息更新不可避免   首先 要实现这个功能  当然是要借助系统的Launcher. 而谷歌并 ...

  6. android 类似qq空间微博微信九宫格图片

    直接给代码吧: import android.content.Context; import android.content.res.TypedArray; import android.graphi ...

  7. qq游戏大厅+android,android   类似qq游戏大厅这种启动问题

    问题:进入程序后A,A又进入程序B(其实A,B就是两个不同的apk,已安装好的),在B中自由操作到任何Activity.操作过程中按了home键返回主界面后,再启动时候要求从A的初始化界面进去(即从启 ...

  8. Android仿QQ侧滑菜单

    先上效果图: GIF图有点模糊,源码已上传Github:Android仿QQ侧滑菜单 ####整体思路: 自定义ItemView的根布局(SwipeMenuLayout extends LinearL ...

  9. 图片HSL颜色调节(仿QQ换肤)

    下载了vs2010,今天终于可以初步体验了.看好的高级调试功能IntelliTrace功能没能符合我的预期,居然不支持局部变量,这样这个功能似乎就显得鸡肋了.随便写点什么体验下,就决定实现了这个类似Q ...

最新文章

  1. CISSP的成长之路(二):为什么要获得CISSP认证
  2. 从容稳进,高通正扎实推进5G
  3. Java中的门面设计模式,非常有用!
  4. c语言二维图形变换程序,【计算机图形学】3-2 二维几何变换根本代码
  5. SQL Server 2005的安装,SQL Server 2005系列之一
  6. autojs调用java识字_autojs实现抽象类的继承
  7. 收藏 | 深度学习调参有哪些技巧?
  8. 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码...
  9. 帮助中心 开源_如何不获得开源帮助
  10. 上万规模数据湖如何在实验室测试
  11. JS对象拷贝:深拷贝和浅拷贝
  12. 哈工大c语言作业系统,2015秋C语言程序设计
  13. python ** 运算符_Python入门(9)运算符 — 位运算符、成员运算符、身份运算符...
  14. appinventor贪吃蛇制作步骤_旋转RGB制作指导
  15. Matlab编程与C编程的不同
  16. Python内置函数(7)——sum
  17. “一路有你”——迷你TXT小说阅读器 V2.8 正式版 发布!
  18. Servlet实现登录带有验证码验证案例
  19. 关于MSXML3.dll与MSXML6.dll
  20. ISO光盘镜像导入到U盘的方法

热门文章

  1. braintree api调用记录
  2. html5编写圆柱,three.js实现圆柱体
  3. BT测试进入信令模式
  4. Android 日志系统分析(三):logcat
  5. 线性表之单链表 图解和代码实现
  6. 如果父母依旧辛苦,那我们的成长又有什么意义?
  7. 雷电3扩展坞,Thunderbolt3Dock 方案
  8. 又一个10年来学习的回忆
  9. 大王叫我来巡山~(数据库 for update 锁表相关问题~)
  10. 什么是餐饮收银系统?