Android5.1 Launcher3 修改双层桌面为单层

  修改Launcher3/src/com/android/launcher3/LauncherAppState.java的isDisableAllApps()方法,将返回值改为true,即可实现单层桌面。

  我们这个项目的设备屏幕比较小,大概是6plus的四分之一那么大,实现单层桌面后发现workspace的区域特别小,图标都挤到一起了,但是旁边还有很多的空白区域,所以接下来还要设置一下workspace的大小。修改Launcher3/src/com/android/launcher3/DeviceProfile.java的layout()方法,将

workspace.setPadding(padding.left, padding.top, padding.right, padding.bottom);
  改为:

workspace.setPadding(10, 20, 10, 20);

  workspace的区域就变得很合理了。

  但hotseat依然在设备的下方位置(横屏情况下它位于屏幕右侧),并且hotseat上的应用图标特别大,遮挡了workspace上的右侧部分图标。网上有个Launcher3的源码,在将isDisableAllApps()方法的返回值改为true后hotseat上便默认不会加载应用了,不知道这是从哪个版本的系统上download下来的,Android5.1上的Launcher3并没有此效果。并且即使hotseat上没有加载应用,由于它在workspace的上层,会覆盖掉workspace上的点击事件,所以workspace上的右侧部分图标可以正常显示,但是不能点击。于是我想到了一个简单粗鲁的办法,将launcher.xml文件下的hotseat部分GONE掉,编译后hotseat不见了,并且没有发现什么不良影响。当然hotseat上的应用也会消失不见,但因为项目本来就是要隐藏这些应用的,所以没影响。

  20160819:驱动哥们给设备增加了一个硬件menu键后发现点击menu键会把hotseat显示出来。我首先去Launcher.java找onCreateOptionsMenu方法,木有。然后在整个Launcher项目里找hotseat的setVisibility方法,木有。最后想到了onKeyDown方法,发现Launcher复写了此方法,并且在此方法里消解掉了mune键的长按事件,我们只要把长按事件部分去掉,把mune键的点击事件消解掉就好。如果怕有意外情况可以在Launcher的onResume里对hotseat进行GONE处理。


 

你可能感兴趣的:(Android相关)