/launcher2/src/com/android/mitechlauncher/FolderIcon.java
导入包:
//zoulequan
import android.app.Activity;
import android.util.Log;
import java.util.Locale;
//end
定义变量
//zoulequan add
private static Context mContext;
private static int strid[]={R.string.Puzzle,R.string.Learning,R.string.Entertainment,R.string.Games,R.string.TabeoApps,R.string.TabeoBrowser,R.string.Books,R.string.Education};
private static int iconid[]={-1,-1,R.drawable.entertainment,R.drawable.games_dice,R.drawable.appstore,R.drawable.browser,R.drawable.books,R.drawable.education};
private static String arrFilename[]={"Puzzle","Learning","Entertainment","Games","Tabeo Apps","Tabeo Browser","Books","Education"};
private static String arrFilename2[]={"Puzzle","Learning","Entertainment","Games","Tabeo Apps","Tabeo Browser","Books","Education"};
private static String languagelast="en";
private static String languagecurrent="en";
//end
如何要添加新的文件夹图标,就在以上四个数组中一一对应填写R.string,R.drwable,第一次加载的文件名。然后再去res文件下添加相关资源文件
protected void dispatchDraw(Canvas canvas)
{super.dispatchDraw(canvas);
在这个方法最前面加上
//zoulequan
boolean isdrop=false;
for(int i=0;i<arrFilename.length;i++){
if(arrFilename[i].equals(mFolderName.getText().toString()) && iconid[i]!=-1){
isdrop=true;
break;
}else{
isdrop=false;
}
}
if(isdrop){
return;
}
//end
isdrop用来标识此文件夹是否要阻止画很多APK叠加后的图标。
}
添加方法:
//zoulequan
private static boolean changeicon(String filename,int stringid,int imgic,FolderInfo mfod,FolderIcon micon,int i){
String str=null;
languagecurrent=Locale.getDefault().getLanguage();
if(languagelast.equals(languagecurrent)){
str=arrFilename[i];
}else{
str=arrFilename2[i];
for(int j=0;j<arrFilename2.length;j++){
arrFilename[j]=arrFilename2[j];
}
languagelast=languagecurrent;
}
if(str.equals(mfod.title)){
str=(((Activity)mContext).getText(stringid)).toString();
mfod.setTitle(str);
arrFilename[i]=str;
if(imgic!=-1){
micon.mPreviewBackground.setImageResource(imgic);
}
return true;
}
return false;
}
在icon.mPreviewBackground = (ImageView) icon.findViewById(R.id.preview_background);
这条语句后面加上
//zoulequan
for(int i=0;i<iconid.length;i++){
if(changeicon(arrFilename[i],strid[i],iconid[i],folderInfo,icon,i)){
break;
}
}
icon.mFolderName.setText(folderInfo.title);
//end
当选择语言时,mfod.title的值会被附为第一次的文件夹名,和arrFilename2数组里的值一样,这个值是第一次创建文件夹时被保存在数据库中的文件夹名。而foldericon这个类里面我们定义的数组里的值不会被还原,fromXml()这个方法运行之后才会运行 protected void dispatchDraw(Canvas canvas)方法,所以fromXml方法中改过icon.mFolderName.setText(folderInfo.title)后,dispatchDraw()中mFolderName.getText()的值就是fromXml方法改过后的值。
//文件夹默认大小
/launcher2/res/values/config.xml
<integer name="folder_max_count_x">4</integer>
<integer name="folder_max_count_y">4</integer>
<integer name="folder_max_num_items">16</integer>