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
- 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;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.Button;
- import android.widget.LinearLayout;
- public class MainActivity extends Activity {
- private ArrayList<PackageInfo> getAllSkin() {
- ArrayList<PackageInfo> skinList = new ArrayList<PackageInfo>();
- List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
- for (PackageInfo p : packs) {
- if (isSkinPackage(p.packageName)) {
- skinList.add(p);
- }
- }
- return skinList;
- }
- private boolean isSkinPackage(String packageName) {
- String rex = "com.iaiai\\w";
- Pattern pattern = Pattern.compile(rex);
- Matcher matcher = pattern.matcher(packageName);
- return matcher.find();
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- final LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
- ((Button) findViewById(R.id.def))
- .setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- layout.setBackgroundDrawable(getResources()
- .getDrawable(R.drawable.bg));
- }
- });
- ArrayList<PackageInfo> skinList = getAllSkin();
- for (int i = 0; i < skinList.size(); i++) {
- try {
- final Context friendContext = createPackageContext(
- skinList.get(i).packageName,
- Context.CONTEXT_IGNORE_SECURITY);
- Button btn = new Button(this);
- btn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT));
- btn.setText(friendContext.getText(R.string.app_name));
- btn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- layout.setBackgroundDrawable(friendContext
- .getResources().getDrawable(R.drawable.bg));
- }
- });
- layout.addView(btn);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
- }
-
http://www.1tnet.com/tech/android/2012/1218/287.html