主题:Android 皮肤apk实现换肤

来源:互联网 发布:阿里云服务商编码 编辑:程序博客网 时间:2024/04/29 07:09
运行效果:






没有安装顺序,先安装皮肤后安装主程序完全可以。
安装成功之后在程序里面找不皮肤1/2/3启动文件,因为皮肤只能在主程序中使用。在卸载里面能看到安装上的皮肤,可以卸载掉。

好了来看下主要代码:
Java代码  收藏代码
  1. package com.iaiai;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.regex.Matcher;  
  6. import java.util.regex.Pattern;  
  7.   
  8. import android.app.Activity;  
  9. import android.content.Context;  
  10. import android.content.pm.PackageInfo;  
  11. import android.content.pm.PackageManager.NameNotFoundException;  
  12. import android.os.Bundle;  
  13. import android.view.View;  
  14. import android.view.View.OnClickListener;  
  15. import android.view.ViewGroup.LayoutParams;  
  16. import android.widget.Button;  
  17. import android.widget.LinearLayout;  
  18.   
  19. /** 
  20.  *  
  21.  * <p> 
  22.  * Title: MainActivity.java 
  23.  * </p> 
  24.  * <p> 
  25.  * E-Mail: 176291935@qq.com 
  26.  * </p> 
  27.  * <p> 
  28.  * QQ: 176291935 
  29.  * </p> 
  30.  * <p> 
  31.  * Http: iaiai.iteye.com 
  32.  * </p> 
  33.  * <p> 
  34.  * Create time: 2011-10-18 
  35.  * </p> 
  36.  *  
  37.  * @author 丸子 
  38.  * @version 0.0.1 
  39.  */  
  40. public class MainActivity extends Activity {  
  41.   
  42.     private ArrayList<PackageInfo> getAllSkin() {  
  43.         ArrayList<PackageInfo> skinList = new ArrayList<PackageInfo>();  
  44.         List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);  
  45.         for (PackageInfo p : packs) {  
  46.             if (isSkinPackage(p.packageName)) {  
  47.                 skinList.add(p);  
  48.             }  
  49.         }  
  50.         return skinList;  
  51.     }  
  52.   
  53.     private boolean isSkinPackage(String packageName) {  
  54.         String rex = "com.iaiai\\w";  
  55.         Pattern pattern = Pattern.compile(rex);  
  56.         Matcher matcher = pattern.matcher(packageName);  
  57.         return matcher.find();  
  58.     }  
  59.   
  60.     @Override  
  61.     public void onCreate(Bundle savedInstanceState) {  
  62.         super.onCreate(savedInstanceState);  
  63.         setContentView(R.layout.main);  
  64.   
  65.         final LinearLayout layout = (LinearLayout) findViewById(R.id.layout);  
  66.   
  67.         ((Button) findViewById(R.id.def))  
  68.                 .setOnClickListener(new OnClickListener() {  
  69.                     @Override  
  70.                     public void onClick(View v) {  
  71.                         layout.setBackgroundDrawable(getResources()  
  72.                                 .getDrawable(R.drawable.bg));  
  73.                     }  
  74.                 });  
  75.   
  76.         ArrayList<PackageInfo> skinList = getAllSkin();  
  77.   
  78.         for (int i = 0; i < skinList.size(); i++) {  
  79.             try {  
  80.                 final Context friendContext = createPackageContext(  
  81.                         skinList.get(i).packageName,  
  82.                         Context.CONTEXT_IGNORE_SECURITY);  
  83.   
  84.                 Button btn = new Button(this);  
  85.                 btn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  
  86.                         LayoutParams.WRAP_CONTENT));  
  87.                 btn.setText(friendContext.getText(R.string.app_name));  
  88.                 btn.setOnClickListener(new OnClickListener() {  
  89.                     @Override  
  90.                     public void onClick(View v) {  
  91.                         layout.setBackgroundDrawable(friendContext  
  92.                                 .getResources().getDrawable(R.drawable.bg));  
  93.                     }  
  94.                 });  
  95.   
  96.                 layout.addView(btn);  
  97.             } catch (NameNotFoundException e) {  
  98.                 e.printStackTrace();  
  99.             }  
  100.         }  
  101.     }  
  102.   
  103. }  


其它请下载附件查看。
  • demo.rar (1.5 MB)
  • 下载次数: 968
  • 查看图片附件

原地址:http://www.iteye.com/topic/1116721


原创粉丝点击