您的位置:首页 > 移动开发 > Android开发

Android应用实现更换皮肤功能

2013-03-15 22:40 489 查看


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: