80,349
社区成员
发帖
与我相关
我的任务
分享
.......(run方法中)
// second step
if (DEBUG_LOADERS) Log.d(TAG, "step 2: loading all apps");
loadAndBindAllApps();
SharedPreferences sp = Launcher.msp; //在Launcher.java中添加的静态SharedPreferences
int appNum = mBgAllAppsList.size();
if(sp.getBoolean("isfirst",true)){
addScreenAndAddItem(appNum);
updateWorkspaceScreenOrder(mContext,loadWorkspaceScreensDb(mContext));
forceReload();
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("isfirst",false);
editor.commit();
}
}
......(run方法中)
public void addScreenAndAddItem(int appNum){
int screenNum = (int)Math.ceil((double)appNum/30); //这里的30是一个workspace桌面能承载的最大app数量,我改的是平板5x6界面所以是30个,这个数量可以在一个地方获得,我还没整理好偷懒直接写了
ContentResolver cr = mContext.getContentResolver();
Uri uri = LauncherSettings.WorkspaceScreens.CONTENT_URI; //获取访问数据库的uri
int startNum = 0;
for(int i =1;i<=screenNum;i++) { //这部分算法写的比较拙略,总之就是向不同屏幕id添加app信息
int addNum = appNum-30 >= 0 ? 30 : appNum+30*(i-1);
ContentValues v = new ContentValues();
v.put(LauncherSettings.WorkspaceScreens._ID, i);
v.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, i-1);
cr.insert(uri,v);
additem(addNum,startNum,i);
appNum = appNum - 30;
startNum = addNum;
}
}
public void additem(int appNum,int startNum,int screen){
int y = 0;
for(int i=startNum;i<appNum;i++){
ShortcutInfo shortcutInfo = new ShortcutInfo(mBgAllAppsList.get(i));
addItemToDatabase(mContext,shortcutInfo,-100,screen,i%6,y);
if(i%6==5) {
y++;
}
}
}