android类似QQ换皮肤.doc
文本预览下载声明
android类似QQ换皮肤,实现思路,apk资源共享
2011-09-14 15:27:31 ????我来说两句?0
我要投稿??? [字体:小?大]
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的按钮设置监听。Java代码?public class StartAct extends Activity {?????? /** Called when the activity is first created. */?????? @Override?????? public void onCreate(Bundle savedInstanceState) {牋?牋牋牋?super.onCreate(savedInstanceState);牋?//牋牋牋?setContentView(R.layout.main);牋?牋牋牋?Button btn = new Button(this);牋?牋牋牋?btn.setText(TO SECOND);牋?牋牋牋?btn.setOnClickListener(new OnClickListener() {牋?牋牋 牋牋牋牋牋?牋牋牋牋牋?@Override牋?牋牋牋牋牋?public void onClick(View v) {牋?牋牋牋牋牋牋牋?// TODO Auto-generated method stub牋?牋牋牋牋牋牋牋?Intent intent = new Intent(StartAct.this, SecontAct.class);牋?牋牋牋牋牋牋牋?StartAct.this.startActivi ty(intent);牋?牋牋牋牋牋?}牋?牋牋牋?});牋?牋牋牋?this.setContentView(btn);牋?牋牋牋?try {牋牋牋牋牋牋牋牋?Context other = this.createPackageContext(com.app.share2, CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);牋?牋牋牋牋牋?Class? c = other .getClassLoader().loadClass(com.app.share2.R);牋?牋牋牋牋牋?Class?[] cl = c.getClasses();牋?牋牋牋牋牋?int b =0;牋?牋牋牋牋牋?for (int i = 0; i cl.length; i++) {牋?牋牋牋牋牋牋牋?Log.d(TAG, cl[i].getSimpleName());牋?牋牋牋牋牋牋牋?Field f ield[] = cl[i].getFields();牋?牋牋牋牋牋牋牋?for (int j = 0; j field.length; j++) {牋?牋牋牋牋牋牋牋牋牋?Log.d(TAG, NAME:+field[j].getName()+--VALUE:+field[j].getInt(field[j].getName()));牋?牋牋牋牋牋牋牋牋牋?if(field[j].getName().equals(but ton1)) {牋?牋牋牋牋牋牋牋牋牋牋牋?b
显示全部