主题:Android 皮肤apk实现换肤
来源:互联网 发布:阿里云服务商编码 编辑:程序博客网 时间:2024/04/29 07:09
运行效果:
没有安装顺序,先安装皮肤后安装主程序完全可以。
安装成功之后在程序里面找不皮肤1/2/3启动文件,因为皮肤只能在主程序中使用。在卸载里面能看到安装上的皮肤,可以卸载掉。
好了来看下主要代码:
其它请下载附件查看。
没有安装顺序,先安装皮肤后安装主程序完全可以。
安装成功之后在程序里面找不皮肤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();
- }
- @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();
- }
- }
- }
- }
其它请下载附件查看。
- 主题:Android 皮肤apk实现换肤
- Android 皮肤apk实现换肤
- Android 皮肤apk实现换肤
- android 换主题换皮肤(apk包方式)
- android 类似QQ 换皮肤 实现思路 apk资源共享
- android 类似QQ 换皮肤 实现思路 apk资源共享
- android 类似QQ 换皮肤 实现思路 apk资源共享
- Android主题换肤实现
- Android之主题皮肤实现
- Android动态换肤(三、安装主题apk方式)
- Android主题换肤
- 轻松实现Android 更换皮肤(主题) - 资源打包为apk,使用AssetManager动态解析调用
- android换肤功能实现(apk方式)
- Android换肤apk
- Android 应用制定主题,QQ皮肤APK原理
- 轻松实现Android 更换皮肤(主题)
- 轻松实现Android 更换皮肤(主题)
- 轻松实现Android 更换皮肤(主题)
- malloc 和new 的区别
- 让COleDateTime加1天
- 新手配置 Jetty + Eclipse (Hot code debugging)
- cocos2d画图
- java swing控件,及布局的详细使用
- 主题:Android 皮肤apk实现换肤
- opengl画椭圆
- 自己写的通用文本验证
- 谈事件驱动模型中的“超时”(Timeout)处理
- 使用htmlParser如何设定超时timeout
- 适配器设计模式
- 一个项目经理的一些个人体会
- Using jQuery in PeopleSoft: Introduction
- Java与c++的socket通讯(转载)