【示例代码】Android之APK方式换肤

本帖最后由 songjian0904 于 2013-2-27 10:42 编辑

效果图:


代码片段,双击复制

public class MainActivity extends Activity


{


        private Button defaultbutton = null;


        @Override


        public void onCreate(Bundle savedInstanceState)


        {


                super.onCreate(savedInstanceState);


                setContentView(R.layout.main);


                final LinearLayout layout = (LinearLayout) findViewById(R.id.layout);


                //默认皮肤


                defaultbutton = (Button)findViewById(R.id.defaultButton);


                defaultbutton.setOnClickListener(new OnClickListener() {


                        @Override


                        public void onClick(View v)


                        {


                                layout.setBackgroundResource(R.drawable.netskin);


                        }


                });


                //为其他皮肤添加点击按钮


                ArrayList<PackageInfo> skinList = getAllSkin();


                for (int i = 0; i < skinList.size(); i++)


                {


                        try


                        {


                                final Context context = 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(context.getText(R.string.app_name));


                                btn.setOnClickListener(new OnClickListener() {


                                        @Override


                                        public void onClick(View v)


                                        {


                                                layout.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.netskin));


                                        }


                                });


                                layout.addView(btn);


                        }


                        catch (NameNotFoundException e)


                        {


                                e.printStackTrace();


                        }


                }


        }



        /**


         * 获取所有已安装的皮肤主题


         *


         * @return


         */


        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;


        }



        /**


         * 判断是否是皮肤主题


         *


         * @param packageName


         * @return


         */


        private boolean isSkinPackage(String packageName)


        {


                // 自己制作的皮肤主题包名 例如:sunlight.skin0 sunlight.skin1等等


                String rex = "sunlight.skin\\w";


                Pattern pattern = Pattern.compile(rex);


                Matcher matcher = pattern.matcher(packageName);


                return matcher.find();


        }


}





main.xml

代码片段,双击复制

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"


    android:id="@+id/layout"


    android:layout_width="fill_parent"


    android:layout_height="fill_parent"


    android:orientation="vertical" >



    <Button


        android:id="@+id/defaultButton"


        android:layout_width="fill_parent"


        android:layout_height="wrap_content"


        android:text="默认皮肤" />



</LinearLayout>





附件: 您所在的用户组无法下载或查看附件
没看懂。。。这是系统主题吗?
回电精灵2.0 -- 功能最完善强大的自动回复软件!~
http://mm.10086.cn/1007/300001147846.html?p=4912240&fw=420012
这不是工具文档里复制的吧?复制的太全乎了
开发者请加群:207153509
表示看不懂‘
其实看着这些代码有点头疼,但是觉得不错
一切都新开始,从weiai开始。。。
菜鸟表示学习中。。。。
统一开发环境(UDE)出新版本啦,支持HTML5跨平台开发和应用模板服务!
  UDE新推HMTL5开发环境,帮助开发者快速开发HTML5项目:使用PhoneGap开源引擎创建Web应用,支持仿真模拟调试预览和跨平台编译,可以将HTML5资源包编译生成Android  Hybrid App程序包,并可编译移植到Android/iOS/WP平台。
  UDE项目工程内置丰富的应用模板,开发者可以在此基础上补充自己的内容资源,完善优化,即可生成自己的个性化应用!

完整安装包下载:http://dev.10086.cn/appdown/cmcc_ude/final/CMCC_UDE_1.3.02.1618.exe
HTML5开发插件包下载:http://dev.10086.cn/appdown/cmcc_ude/plugin/cmcc_ude_update_2.0.zip
开发帮助文档下载:http://dev.10086.cn/appdown/cmcc_ude/final/CMCC_UDE_Readme.chm
虽然看不懂,但是还是看不懂
一切都新开始,从weiai开始。。。
提示: 该帖被管理员或版主屏蔽
换主题可以用apkplug插件化开发框架,可以动态的切换应用主题
百灵欧拓移动广告平台盛大内测,诚邀广大开发者伙伴合作测试
前300位注册或加盟的开发者 banner 插屏 单价 史无前例 cpc 4毛
报名咨询请联系 QQ: 2049268250
活动详情:http://www.o2omobi.com/news_07.html
拿过来直接套用了 谢谢分享 嘿嘿
不错
开发者的福利到了,devstore将拿出十万,悬赏写评测报告的开发者,参与就有奖。太爽了。http://www.devstore.cn/activity/rewardTestPage
应用之间数据共享!
掌上公交v1.2 for Android
http://www.anzhi.com/soft_574055.html
1# 神乐 牛X 不错 谢谢楼主
ACM
看不懂!
看不懂!
想要高效的完成app功能测试,就需要选择一款合适的功能测试工具。尽管现阶段存在少数不采用任何功能测试工具,从事功能测试外包项目的软件服务企业。短期来看,这类企业盈利状况尚可,但长久来看,它们极有可能被自动化程度较高的软件服务企业取代。

TestBird  - 手游和App自动化测试平台