代码改变世界

一个带新闻,天气的时钟Widget(二)---皮肤包篇

2011-06-27 23:15  bitfairyland  阅读(1944)  评论(1编辑  收藏  举报

二。皮肤包的导入与皮肤包的选择

1,皮肤包的导入

1)遍历存储卡skinzip文件夹下的zip包

image

StringBuilder buffer = new StringBuilder();

        // 检查是否存在存储卡
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_REMOVED)) {

            Toast.makeText(this, "請插入存儲卡!", 2000).show();
            return;
        }

        String targetDir = buffer
                .append(Environment.getExternalStorageDirectory())
                .append("/skinzip/").toString();

        File entryDir = new File(targetDir);

       

        // 检查皮肤包路径,不存在就创建该文件夹
        if (!entryDir.exists()) {
            entryDir.mkdirs();
            Toast.makeText(this, "皮肤包不存在!", 2000).show();
            return;
        }

        ZipFileUtils zfu = new ZipFileUtils();
        // Log.d("myout", targetDir);
        zfu.GetFiles(targetDir, "zip", false);

        lstFile = zfu.getLstFile();

        lstFileName = zfu.getLstFileName();

        if (lstFile.size() < 1) {
            Toast.makeText(this, "皮肤包不存在!", 2000).show();
            btnLoadSkin.setEnabled(false);
            return;
        }

        Log.d("myout", String.valueOf(lstFile.size()));
        for (int i = 0; i < lstFile.size(); i++) {
            Log.d("myout", lstFile.get(i));

        }

        lvloadskin.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_single_choice, lstFileName));

遍历目录的方法

public void GetFiles(String Path, String Extension, boolean IsIterative) // 搜索目录,扩展名,是否进入子文件夹
    {

        File[] files = new File(Path).listFiles();

        for (int i = 0; i < files.length; i++) {
            File f = files[i];
            if (f.isFile()) {

                if (f.getPath()
                        .substring(f.getPath().length() - Extension.length())
                        .equals(Extension)) // 判断扩展名
                {

                    lstFile.add(f.getPath());
                    lstFileName.add(f.getName());

                }
                // if (!IsIterative)
                // break;

            } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹)
            {

                GetFiles(f.getPath(), Extension, IsIterative);
            }

        }

    }

 

 

public void GetDirNameList(String Path) {

        File file = new File(Path);

        if (!file.exists()) {

            file.mkdirs();
        }

        File[] files = new File(Path).listFiles();

        for (int i = 0; i < files.length; i++) {
            File f = files[i];
            System.out.println(Path);

            if (f.isDirectory()) {

                lstDirName.add(f.getName());
                System.out.println(f.getName());

            }

        }

    }

2,皮肤包的选择

从导入的皮肤包内选择皮肤

image

是通过ImageSwitcher和Gallery来实现,选择皮肤然后存储在SharedPreferences里,在widget更新是同步更新皮肤

代码就没什么好贴的

用的着直接看源码吧

源码在群共享里:72349065,欢迎来一起交流学习