Android Launcher3 一些默认配置修改


1.如何设置默认页

res/values/Config.xml 0在Launcher3 桌面,不管在哪一页,按HOME 键,会回到默认页。

2.如何隐藏launcher3中的搜索框

1. 在Launcher3/src/com/android/launcher3/Launcher.java中注释updateGlobalIcons()方法调用,共两处。public View getQsbBar() {    if (mQsbBar == null) {        mQsbBar = mInflater.inflate(R.layout.search_bar, mSearchDropTargetBar, false);-             mSearchDropTargetBar.addView(mQsbBar);    }+        mQsbBar.setVisibility(View.GONE);    return mQsbBar;}@Overridepublic void bindSearchablesChanged() { //注释该方法内容/*        boolean searchVisible = updateGlobalSearchIcon();    boolean voiceVisible = updateVoiceSearchIcon(searchVisible);    if (mSearchDropTargetBar != null) {        mSearchDropTargetBar.onSearchPackagesChanged(searchVisible, voiceVisible);    }*/}2. 在Launcher3/src/com/android/launcher3/DynamicGrid.java中       // Layout the search bar    //注释如下内容/*        View qsbBar = launcher.getQsbBar();    LayoutParams vglp = qsbBar.getLayoutParams();    vglp.width = LayoutParams.MATCH_PARENT;    vglp.height = LayoutParams.MATCH_PARENT;    qsbBar.setLayoutParams(vglp);*/3. 在Launcher3/res/values/dimens.xml中    -    48dp    +    18dp重新编译后即可看到效果。

3.如何调整原生Launcher3主界面的search框的大小?

修改如下:定位打/packages/apps/Launcher3/res/values/dimens.xml。3dp//修改这个可以调整search框距离顶部距离。500dp//search框的宽度,一般不需要调整。48dp//search框的高度,不要调整为0,删除按钮需要占用一部分空间。

4.让主菜单部分应用按指定顺序排在前面?

添加res/values/arrays.xml:需要排序的应用:这里的item 内容一定要填写正确,否则会匹配不上,无法参与排序。<?xml version="1.0" encoding="utf-8"?>    ComponentInfo{com.android.vending/com.android.vending.AssetBrowserActivity}    ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}    ComponentInfo{com.android.settings/com.android.settings.Settings}    ComponentInfo{com.android.camera2/com.android.camera.CameraLauncher}    ComponentInfo{com.android.mms/com.android.mms.ui.ConversationList}src/com/android/launcher3/Utilities.java+  import java.util.Arrays;+  import java.util.List;+    public static List getAppsComponentName(final Context context) {+        return Arrays.asList(context.getResources().getStringArray(R.array.apps_componentName));+    }src/com/android/launcher3/LauncherModel.java protected int mPreviousConfigMcc;+    static List appArray = new ArrayList();    LauncherModel(LauncherAppState app, IconCache iconCache, AppFilter appFilter) {        ......        mUserManager = UserManagerCompat.getInstance(context);+       appArray = Utilities.getAppsComponentName(context);    }添加如下sortApps 方法:apps 按arrays.xml 排序,在原来的排序基础上,将arrays.xml 配置的应用按顺序排在前面。arrays.xml中没有涉及到的应用,还是原来的顺序。public static final void sortApps(ArrayList apps) {    int length = appArray.size();    List assignApps = new ArrayList();    for(int i=0;i -1 ;i--) {      AppInfo app = assignApps.get(i);      if(app != null){          apps.remove(app);          apps.add(0, app);      }  }  Log.d(TAG ,"The Apps List after Sort!");}src/com/android/launcher3/AppsCustomizePagedView.java    public void setApps(ArrayList list) {        if (!LauncherAppState.isDisableAllApps()) {            ......            SprdAppSortAddonStub.getInstance().sortApps(mApps);+           LauncherModel.sortApps(mApps);//在原来排序的基础上,再将arrays.xml中配置的应用按顺序排在前面。            updatePageCountsAndInvalidateData();        }    }    private void addAppsWithoutInvalidate(ArrayList list) {        ......        // SPRD: bug375932 2014-12-02 Feature customize app icon sort.        SprdAppSortAddonStub.getInstance().sortApps(mApps);+       LauncherModel.sortApps(mApps);//在原来排序的基础上,再将arrays.xml中配置的应用按顺序排在前面。    }

5.如何确定待机HOME界面布局使用的是哪个default_workspace文件?

 src/com/android/launcher3/DynamicGrid.java选择哪个default_workspace 和public DynamicGrid(Context context, Resources resources,int minWidthPx, int minHeightPx, int widthPx, int heightPx, int awPx, int ahPx)中的minWidthPx 和minHeightPx 以及该方法中创建的deviceProfiles 列表关。               minWidthPx 、minHeightPx 值转换为dpi之后 ,deviceProfiles 列表与其进行比较,选择与当前屏幕大小最接近的deviceProfiles 的default_workSpace作为最终Home界面使用的default_workspace。详细解释如下:src/com/android/launcher3/DynamicGrid.java中        1.deviceProfiles 列表如下:        deviceProfiles.add(new DeviceProfile("Super Short Stubby",                255, 300,  2, 3,  48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Shorter Stubby",                255, 400,  3, 3,  48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Short Stubby",                275, 420,  3, 4,  48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Stubby",                255, 450,  3, 4,  48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Nexus S",                296, 491.33f,  4, 4,  48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Nexus 4",                335, 567,  4, 4,  DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Nexus 5",                359, 567,  4, 4,  DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4));        deviceProfiles.add(new DeviceProfile("Large Phone",                406, 694,  5, 5,  64, 14.4f,  5, 56, R.xml.default_workspace_5x5));        // The tablet profile is odd in that the landscape orientation        // also includes the nav bar on the side        deviceProfiles.add(new DeviceProfile("Nexus 7",                575, 904,  5, 6,  72, 14.4f,  7, 60, R.xml.default_workspace_5x6));        // Larger tablet profiles always have system bars on the top & bottom        deviceProfiles.add(new DeviceProfile("Nexus 10",                727, 1207,  5, 6,  76, 14.4f,  7, 64, R.xml.default_workspace_5x6));        deviceProfiles.add(new DeviceProfile("20-inch Tablet",                1527, 2527,  7, 7,  100, 20,  7, 72, R.xml.default_workspace_4x4));       2.重新计算MinWidth 和MinHeigh  单位是dpi。        mMinWidth = dpiFromPx(minWidthPx, dm);        mMinHeight = dpiFromPx(minHeightPx, dm);      3.创建mProfile,mProfile.defaultLayoutId 就是最终Home界面使用的default_workspace 的id。        mProfile中的defaultLayoutId 是哪个default_workspace 见DeviceProfile.java。        mProfile = new DeviceProfile(context, deviceProfiles,                mMinWidth, mMinHeight,                widthPx, heightPx,                awPx, ahPx,                resources);src/com/android/launcher3/DeviceProfile.java    DeviceProfile(Context context,                 ArrayList profiles,                  float minWidth, float minHeight,                  int wPx, int hPx,                  int awPx, int ahPx,                  Resources res) { 方法中:       4.用屏幕宽高创建的点(PointF xy = new PointF(width, height))与 deviceProfiles中的w 和 h 创建的点(dimens = new PointF(widthDps, heightDps))进行比较,也就是从deviceProfiles 列表中找出和当前屏幕大小最接近的deviceProfiles。            DeviceProfile closestProfile = findClosestDeviceProfile(minWidth, minHeight, points);         ......       5.采用和当前屏幕大小最接近的deviceProfiles的default_workspace               defaultLayoutId = closestProfile.defaultLayoutId; 

6.如何替换第三方应用在launcher上显示的图标?

在launcher/src/com/android/launcher3/IconCache.java中修改,private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info,    private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info,        HashMap labelCache) {    CacheEntry entry = mCache.get(componentName);    if (entry == null) {        entry = new CacheEntry();        mCache.put(componentName, entry);        ComponentName key = LauncherModel.getComponentNameFromResolveInfo(info);        if (labelCache != null && labelCache.containsKey(key)) {            entry.title = labelCache.get(key).toString();        } else {            entry.title = info.loadLabel(mPackageManager).toString();            if (labelCache != null) {                labelCache.put(key, entry.title);            }        }        if (entry.title == null) {            entry.title = info.activityInfo.name;        }        Drawable icon;        int index = sysIndexOf(componentName.getClassName());        Log.i("jxt", "index:"+index+",Name:"+componentName.getClassName());        icon = getFullResIcon(info);        if (index >= 0) {            entry.icon = Utilities.createIconBitmap(icon, mContext);        } else {            entry.icon = Utilities.createIconBitmap(                    /* SPRD: Feature 253522, Remove the application drawer view @{ */                    // getFullResIcon(info), mContext);                    icon, mContext, true);        }        /* 此处即为替换图标代码  {@*/        if("第三方应用的componentName".equals(componentName.toString())){            entry.icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.xxx);        }        /* @} */    }    return entry;}   

7.如何去掉Launcher3的开机引导页面?

修改方案如下:请定位到src/com/android/launcher3/LauncherClings.java文件:    class LauncherClings implements OnClickListener {         ......         private static final String TAG_CROP_TOP_AND_SIDES = "crop_bg_top_and_sides-        private static final boolean DISABLE_CLINGS = false;+       private static final boolean DISABLE_CLINGS = true;

8.为何Launcher3设置一些壁纸后,壁纸显示比预览图模糊?

预览的时候,没有做格式转化,所以显示正常!在设置壁纸的时候,默认是采用jpeg格式转换的,导致转换后损耗了一些,设置壁纸后,某些对比度比较高的壁纸就显示的模糊!修改方案:默认修改为采用png格式转换!android6.0之前的版本,请做如下修改:定位到/packages/apps/Launcher3/的WallpaperCropActivity.java文件1、String mOutputFormat = "jpg";//修改为"png"2、  protected static String getFileExtension(String requestFormat) {        String outputFormat = (requestFormat == null)                ? "jpg"//修改为"png"                : requestFormat;        outputFormat = outputFormat.toLowerCase();        return (outputFormat.equals("png") || outputFormat.equals("gif"))                ? "png" // We don't support gif compression.                : "jpg";   }android6.0的版本,请做如下修改:定位到/packages/apps/Launcher3/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java文件if (crop.compress(CompressFormat.JPEG, DEFAULT_COMPRESS_QUALITY, tmpOut)) 修改为:if (crop.compress(CompressFormat.PNG, DEFAULT_COMPRESS_QUALITY, tmpOut))

9.6.0平台上Launcher3自带的壁纸路径是什么?

在6.0中,平台版本预置了一些壁纸资源,相关路径如下:资源文件在:packages/apps/Launcher3/WallpaperPicker/res/drawable-xhdpi/字串文件在:packages/apps/Launcher3/WallpaperPicker/res/values-nodpi/wallpapers.xml 

更多相关文章

  1. Android Studio ——Android 使用Pull方法解析XML文件的方法
  2. Android的raw下视频文件的读写-日记
  3. 成功解决 Android 下载中文文件名
  4. 【Android】使用msysgit编译Android下的C文件
  5. Android Service启动执行顺序
  6. [Android]attrs.xml文件中属性类型format值的格式
  7. Android cocos2d-x开发(二)之create-android-project.bat文件的修

随机推荐

  1. 210326 flex布局 仿写
  2. zabbix 邮件报警
  3. FlyAI算法竞赛平台初体验
  4. Apache Spark 2.4 回顾以及 3.0 展望
  5. 安全基线脚本
  6. 夸夸聊天机器人升级:从随机到准个性化
  7. 对话式交互崛起,从百度度秘看对话式AI的技
  8. 中文分词文章索引和分词数据资源分享
  9. 5年内最大手笔!谷歌豪掷26亿美元收购数据
  10. 修改用户uid