一个带新闻,天气的时钟Widget(二)---皮肤包篇
2011-06-27 23:15 bitfairyland 阅读(1942) 评论(1) 编辑 收藏 举报二。皮肤包的导入与皮肤包的选择
1,皮肤包的导入
1)遍历存储卡skinzip文件夹下的zip包
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,皮肤包的选择
从导入的皮肤包内选择皮肤
是通过ImageSwitcher和Gallery来实现,选择皮肤然后存储在SharedPreferences里,在widget更新是同步更新皮肤
代码就没什么好贴的
用的着直接看源码吧
源码在群共享里:72349065,欢迎来一起交流学习