最近在修改android6.0的源码,其中Launcher3中跟5.1有所改变,判断显示所有app的代码,突然在Hotseat中找不到了,修改桌面上默认应用的布局也不起作用,哪位大神修改过请指教。
解决方案 »
- 安卓里面如何实现画板的蜡笔效果,类似于PS里面的笔刷效果又怎么实现~求指点试过了很多API都不行!最好能有代码
- 关于tabhost的宽度问题~~~~急!!!
- 怎么做才能第二次进入activity显示上次离开的数据
- Android多点触控的问题
- Android EGL_BAD_ALLOC 的问题,有没有遇到并很好的解决了?
- 急!!!如何计算chronometer触发的次数?
- 请教高手,到底什么情况用activity的启动属性
- android布局问题
- 求个靠谱的android studio教程
- android studio 安装不成功 求助!
- 请问Android软件编程怎样设置手机蓝牙的波特率呢?
- 使用ActivityCompat.requestPermissions一直报错,在另一个应用却没事
在SDK里面有一个hierarchyviewer的工具,一般是在sdk的tools目录里面。
你用这个连接上设备,然后可以定位到代码。
如果不会操作再说
// 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++;
}
}
}
大致原理是让系统先将所有app信息读出来存放在mBgAllAppsList中,然后将mBgAllAppsList中取出的AppInfo对象转换成ShortCutInfo对象,然后调用addItemToDatabase方法将所有app信息存入保存桌面workspace信息的数据库中的favourite表中,然后执行forceReload()方法重新加载所有数据即可将app全部从数据库中读出显示在workspace桌面上。
第二个问题,对于默认Hotseat的修改,只需要去res/xml路径下找到dw_phone(或者tablet)_hotseat.xml中修改resolve标签内的内容即可。