1.如何设置默认页

1 2 3 4 5 res/values/Config.xml     "config_workspaceDefaultScreen" > 0   在Launcher3 桌面,不管在哪一页,按HOME 键,会回到默认页。

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 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; }   @Override public 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中        -    "dynamic_grid_search_bar_height" >48dp      +    "dynamic_grid_search_bar_height" >18dp   重新编译后即可看到效果。

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

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 添加res/values/arrays.xml:需要排序的应用:这里的item 内容一定要填写正确,否则会匹配不上,无法参与排序。 "apps_componentName" translatable= "false" >      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 "" app= "" appinfo= "" for = "" i= "" if = "" int = "" k= "0;" > - 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文件?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 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上显示的图标?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 在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的开机引导页面?

1 2 3 4 5 6 7 8 修改方案如下: 请定位到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设置一些壁纸后,壁纸显示比预览图模糊?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 预览的时候,没有做格式转化,所以显示正常! 在设置壁纸的时候,默认是采用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自带的壁纸路径是什么?

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

更多相关文章

  1. Android控件之Textiew的使用
  2. android 5.1禁止休眠
  3. Android(安卓)Zxing修改为竖屏扫描,和连续扫描问题
  4. Android出现adb device offline
  5. Transport endpoint is not connected 报错
  6. Android(安卓)kernel 下载编译笔记
  7. Android(安卓)studio 打包apk如何重命名apk名称
  8. Android(安卓)隐式调用 intent
  9. 完美解决android Studio打开报错 https://code.google.com/p/and

随机推荐

  1. Android的安全性和权限(Security and Perm
  2. android 获取Gps信息的程序源码
  3. Android 使用 TableLayout 布局拉伸宽度
  4. Apple 再挑起戰火,控告 Samsung 15款 Andr
  5. Android撸一个转盘抽奖
  6. android 中隐藏EditText的下划线方法
  7. android:configChanges属性
  8. Android 线程超时的例子
  9. Tips: compilation and creating new pro
  10. Android应用在未启动的情况下无法收到指