Android应用实现更换皮肤功能

来源:互联网 发布:淘宝签证办理 编辑:程序博客网 时间:2024/05/16 16:20

Android应用实现更换皮肤功能

Category:etensoft     Time:2012-12-18 20:37     点击:286 次

package com.iaiai; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; impor

 

  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. public class MainActivity extends Activity {  
  21.   
  22.     private ArrayList<PackageInfo> getAllSkin() {  
  23.         ArrayList<PackageInfo> skinList = new ArrayList<PackageInfo>();  
  24.         List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);  
  25.         for (PackageInfo p : packs) {  
  26.             if (isSkinPackage(p.packageName)) {  
  27.                 skinList.add(p);  
  28.             }  
  29.         }  
  30.         return skinList;  
  31.     }  
  32.   
  33.     private boolean isSkinPackage(String packageName) {  
  34.         String rex = "com.iaiai\\w";  
  35.         Pattern pattern = Pattern.compile(rex);  
  36.         Matcher matcher = pattern.matcher(packageName);  
  37.         return matcher.find();  
  38.     }  
  39.   
  40.     @Override  
  41.     public void onCreate(Bundle savedInstanceState) {  
  42.         super.onCreate(savedInstanceState);  
  43.         setContentView(R.layout.main);  
  44.   
  45.         final LinearLayout layout = (LinearLayout) findViewById(R.id.layout);  
  46.   
  47.         ((Button) findViewById(R.id.def))  
  48.                 .setOnClickListener(new OnClickListener() {  
  49.                     @Override  
  50.                     public void onClick(View v) {  
  51.                         layout.setBackgroundDrawable(getResources()  
  52.                                 .getDrawable(R.drawable.bg));  
  53.                     }  
  54.                 });  
  55.   
  56.         ArrayList<PackageInfo> skinList = getAllSkin();  
  57.   
  58.         for (int i = 0; i < skinList.size(); i++) {  
  59.             try {  
  60.                 final Context friendContext = createPackageContext(  
  61.                         skinList.get(i).packageName,  
  62.                         Context.CONTEXT_IGNORE_SECURITY);  
  63.   
  64.                 Button btn = new Button(this);  
  65.                 btn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  
  66.                         LayoutParams.WRAP_CONTENT));  
  67.                 btn.setText(friendContext.getText(R.string.app_name));  
  68.                 btn.setOnClickListener(new OnClickListener() {  
  69.                     @Override  
  70.                     public void onClick(View v) {  
  71.                         layout.setBackgroundDrawable(friendContext  
  72.                                 .getResources().getDrawable(R.drawable.bg));  
  73.                     }  
  74.                 });  
  75.   
  76.                 layout.addView(btn);  
  77.             } catch (NameNotFoundException e) {  
  78.                 e.printStackTrace();  
  79.             }  
  80.         }  
  81.     }  
  82.   
  83. }  

http://www.1tnet.com/tech/android/2012/1218/287.html
原创粉丝点击