读书人

Android 肌肤apk实现换肤

发布时间: 2012-09-27 11:11:17 作者: rapoo

Android 皮肤apk实现换肤
运行效果:






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

好了来看下主要代码:

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;/** *  * <p> * Title: MainActivity.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-10-18 * </p> *  * @author 丸子 * @version 0.0.1 */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();}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onClick(View v) {layout.setBackgroundDrawable(friendContext.getResources().getDrawable(R.drawable.bg));}});layout.addView(btn);} catch (NameNotFoundException e) {e.printStackTrace();}}}}


其它请下载附件查看。 不错 的代码 谢了 好 酷 3 楼 winchun323 2012-05-31 感谢楼主,收了!!!

读书人网 >Android

热点推荐