MT8735平台Android5.1系统定制Launcher3系统桌面

我的工作怡康智能服务终端,继续进行中,在帖子宇朔医疗项目进展,展示了为该项目定制的桌面效果图。现在, 在2018年到来之前将这个小目标实现了:
MT8735平台Android5.1系统定制Launcher3系统桌面 
为定制这个 桌面,做了如下改动:
1. 背景图片显示“怡康智能服务终端字样”,背景图片不被拉伸(过程)
在 packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 下添加:

  1. private void setDefaultWallPaper() {
  2. WallpaperManager mwallpaerManager;
  3. mwallpaerManager = WallpaperManager.getInstance(this);
  4. DisplayMetrics dm = new DisplayMetrics();
  5. getWindowManager().getDefaultDisplay().getMetrics(dm);
  6. int desiredMinimumWidth = dm.widthPixels;
  7. int desiredMinimumHeight = dm.heightPixels;
  8. //使壁纸不被裁剪放大模糊
  9. mwallpaerManager.suggestDesiredDimensions(desiredMinimumWidth,
  10. desiredMinimumHeight);
  11. Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
  12. R.drawable.default_wallpaper);
  13. try {
  14. mwallpaerManager.setBitmap(bitmap);
  15. } catch (IOException e) {
  16. Log.e(TAG, "set default wallpaper error");
  17. e.printStackTrace();
  18. }
  19. }

2. 在桌面默认显示天气小部件、健康管理、信息、设置、一键拨号:
packages/apps/Launcher3/res/xml/default_workspace_5x5.xml 

  1. <!-- 系统桌面添加应用 -->    
  2. <favorite
  3.         launcher:packageName="com.rz.yk.health"  // 完整包名
  4.         launcher:className="com.rz.yk.health.ui.main.StartUpActivity" //完整包名.类名(处理main intent的类)
  5.         launcher:screen="0" // 应用图标所在的屏幕(从0开始)
  6.         launcher:x="0"        // 应用图标所在的列
  7.         launcher:y="4" />  // 应用图标所在的行
  8. ...................
  9. <!-- 系统桌面添加天气小部件 -->
  10.     <appwidget
  11.         launcher:packageName="com.moji.mjweather"  // 插件完整包名
  12.         launcher:className="com.moji.mjweather.CMojiWidget4x2"  //插件完整包名.类名(处理main intent的类)
  13.         launcher:screen="0" // 插件图标所在的屏幕(从0开始)
  14.         launcher:x="0"   // 插件图标所在的列
  15.         launcher:y="0"  // 插件图标所在的行
  16.         launcher:spanX="3"   // 插件在屏幕上X方向所占的格子数
  17.         launcher:spanY="2" /> // 插件在屏幕上Y方向所占的格子数
为了能够预置<appwidget/>,需要在Launcher3/Anroid.mk中添加 LOCAL_PRIVILEGEND_MODULE := true,这样编译生成的Launcher3.apk 会生成到/system/priv-app/目录下。

3. 去除HotSeat;桌面无长按选项;去除主菜单,只保留桌面。
该项目无需HotSeat,项目需要的软件比较少,需要尽量保持简洁的桌面。
(1)去除HotSeat
packages/apps/Launcher3/res/layout-land/launcher.xml

  1. android:id="@+id/hotseat"
  2.              android:layout_width="match_parent"
  3.              android:layout_height="match_parent"
  4. -            android:layout_gravity="end" />
  5. +            android:layout_gravity="end"
  6. +            android:visibility="gone"/> 《hotseat不显示》
(2)桌面无长按事件
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 将 public boolean onLongClick(View v) 中的代码去掉,return true。
(3)去除主菜单,只保留桌面
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppState.java 将 static boolean isDisableAllApps()  中的代码去掉,return false。

4. 禁止删除和移动桌面的所有图标
(1)应用快捷键可以点击进入,但是不可移动和删除
因为无桌面长按事件,桌面上的不可长按移动和删除。应用图标的显示循序,在设置桌面默认显示时已经布好。
(2)天气插件点击不可进入,不可移动
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppWidgetHostView.java 在 public boolean onInterceptTouchEvent(MotionEvent ev)  return false 改为 return true


5. 去除背景阴影特效
packages/apps/Launcher3/res/layout-land/launcher.xml 去除 android:background="@drawable/workspace_bg"

  1.      android:id="@+id/launcher"
  2.      android:layout_width="match_parent"
  3. -    android:layout_height="match_parent"
  4. -    android:background="@drawable/workspace_bg">
  5. +    android:layout_height="match_parent" >
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 去除 setWorkspaceBackground 中的 代码,不加载背景特效
  1.      private void setWorkspaceBackground(boolean workspace) {
  2. -        mLauncherView.setBackground(workspace ?
  3. -                mWorkspaceBackgroundDrawable : null);
  4. +       /* mLauncherView.setBackground(workspace ?
  5. +                mWorkspaceBackgroundDrawable : null);*/
  6.      }


带背景特效的效果图:

MT8735平台Android5.1系统定制Launcher3系统桌面 
去除背景特效之后:
MT8735平台Android5.1系统定制Launcher3系统桌面