`
fortianwei
  • 浏览: 60903 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Android Launcher2里面的小bug

阅读更多

公司要定制自己的Launcher,于是对源代码里面的Launcher2做下修改。

 

最近需要将workspace每行只显示3个,于是修改了下workspace_screen.xml,将launcher:shortAxisCells="4"改为launcher:shortAxisCells="3",可是一直报错,数组越界了(源码编译出来的之所以没错,因为他就是4行4列,怎么都不会有错的啦)。

 

这个问题好debug,仔细一看,原来记录workspace里面cell状态的mOccupied[][]二维数组是4列3行,但是应该是3列4行才对。

 

找到mOccupied初始化的地方就发现问题了:

 

 

if (mOccupied == null) {
            if (mPortrait) {
                mOccupied = new boolean[mShortAxisCells][mLongAxisCells];
            } else {
                mOccupied = new boolean[mLongAxisCells][mShortAxisCells];
            }
 }

 这里的mPortrait根本没有初始化!!!,只是在以后每次onMeasure里面给其赋值,但是没有初始化就默认到else里面执行了,这样就是默认Landscape即横屏方式的了,难怪。

 

改正很简单,在这句话上面先判断是横屏还是竖屏就行:

 

 

 mPortrait = this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
 

 

注意,Portrait也就是竖屏的情况下应该是mOccupied[mShortAxisCells][mLongAxisCells],mShortAxisCells是比较短的那一方向的cell数(竖屏就是横着的方向),mLongAxisCells是比较长的那一方向的cell数(竖屏就是竖着的方向)。

分享到:
评论

相关推荐

    安卓Android源码——Android Launcher 源码修改可编译.zip

    2. **Launcher的工作原理**:Launcher负责加载应用图标,处理用户的触摸事件,以及管理主屏幕上的小部件和快捷方式。它通过Binder机制与其他系统服务通信,获取应用信息和用户权限。 3. **编译Android源码**:要...

    安卓Android源码——Launcher源码修改可编译.zip

    在这个"安卓Android源码——Launcher源码修改可编译.zip"文件中,你将有机会接触到Android系统的核心部分,并学习如何对源码进行编译和调试。 首先,Android源码分为几个主要部分,包括系统库、框架层、运行时环境...

    (系统级,不是app)android 4.4 Launcher3 源代码

    Android 4.4 KitKat 的 Launcher3 是 Android 系统的核心组成部分之一,它负责桌面启动器的功能,包括图标布局、小部件、应用抽屉以及主屏幕管理等。Launcher3 的源代码提供了深入理解 Android 系统工作原理的机会,...

    Launcher-mango,基于Android8.0Launcher3源代码的Launcher应用程序.zip

    1. **Android 8.0 Launcher3**:原生的Android系统包含一个名为Launcher3的应用程序,它是用户与设备交互的主要界面,负责显示应用图标、小部件以及桌面布局等。Android 8.0 (API级别26)的Launcher3进行了许多改进,...

    修改后的android4.4原生launcher3

    2. **界面定制**:修改布局和主题,以提供更个性化的用户体验,比如改变图标样式、调整网格大小或者添加自定义小部件。 3. **功能增强**:添加新的特性,如快捷手势操作、搜索栏的扩展功能、多任务管理等。 4. **...

    Android代码-Launcher-master

    基于谷歌官方Android-Pie的Launcher3源码进行修改,打造国内习惯的单层桌面,并添很多新的特性。 分支介绍: release分支:发布分支 feature分支:特性分支,主要是用来开发一些特性的,为不稳定版 develop分支:...

    Laucher 上下左右循环滑动workspace代码修改(新)

    http://www.oschina.net/code/explore/android-2.2-froyo/com/android/launcher2/Workspace.java 但是,此类只能管理固定数目的屏幕,且不能循环滚动。 而且,目前网上搜到的众多修改方案,对滚动处理不够平滑:边界...

    三星启动器Galaxy Launcher

    适用固件:Android4.0+ 更新时间:2015-01-04 软件大小:1023K 银河发射高仿三星的TouchWiz界面,特性: - 自定义的图标大小和图标文字大小 - 支持ADW图标包 - 自定义的桌面网格和网格抽屉 - 锁定,解锁桌面 - ...

    Launcher3-mx-修改过的.rar

    1. **Launcher3**: Launcher3是Android操作系统中的默认主屏幕应用,负责展示应用图标、小部件和主屏幕。它由Google开发,提供了基本的桌面操作,如滑动、长按、添加和删除快捷方式等。Launcher3的核心功能包括多主...

    仿Launcher的GridView拖动.zip

    然后将其拖拽其他item上面,使得GridView的item发生交换,比较典型的就是我们的Launcher,网上有很多关于GridView的拖动的Demo,但是大部分都是相同的,而且存在一些Bug,而且大部分都是点击GridView的item然后进行...

    Launcher测试报告.doc

    - **问题2(BUGID:12866)**:当用户从A切换到B用户后,程序页面仍保留前一用户的记录。在锁屏后再以另一用户登录,记事标签依然显示,而不是预期的全部标签,这可能导致数据混淆。 - **问题3(BUGID:12870)**:...

    android 源码修改

    2. **Launcher**:Android的启动器是用户界面的重要组成部分,负责显示桌面图标和启动应用程序。修改Launcher源码可以改变桌面布局、动画效果、快捷方式行为等,以实现个性化启动器。 3. **Settings**:设置应用是...

    [Magisk]launcher3quickstep.zip

    【Magisk】launcher3quickstep.zip 是一个专为Android 9系统设计的Magisk模块,主要目的是优化和适配Launcher3快速启动功能。这个模块旨在提升Android设备的启动器性能和用户体验,尤其针对那些希望自定义或增强其...

    Launcher3桌面去掉二级菜单改为单层-左右滑动模式-补丁-android-12

    Launcher3桌面去掉二级菜单改为单层_左右滑动模式_补丁_android_12

    新版Android开发教程.rar

    2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance Alliance Alliance Alliance 什么是开放手机联盟? 开放手机联盟, Open Handset Alliance :是美国 Google 公司与 2007 年 ...

    android桌面拖拽效果

    Android桌面,也被称为Launcher,是系统提供给用户启动应用、管理屏幕快捷方式和小部件的主要界面。它由多个组件构成,包括LauncherActivity、WidgetProvider、壁纸服务等。拖拽效果主要涉及到触屏事件处理、视图...

    [Android][App不显示在最近使用过的应用程序列表中]

    4. **系统bug**:偶尔,Android系统的bug也可能导致App无法正常显示在最近应用列表中。此时,更新系统或者恢复出厂设置可能是解决办法。 解决这类问题的方法: - 检查`AndroidManifest.xml`中所有Activity的`...

    android studio 问题1

    <category android:name="android.intent.category.LAUNCHER" /> ``` 确保`android:name`属性的值与你的Activity完全匹配。 针对上述问题,开发者可以采取以下步骤来尝试解决问题: 1. **检查并修正错误**...

    Android框架浅谈

    《Android框架浅谈》 **一、Android系统框架概览** Android系统框架是构建于Linux内核之上的,为移动设备提供了一套完整的操作系统环境。它由一系列的组件和服务构成,包括应用程序框架、运行库、应用程序、Linux...

Global site tag (gtag.js) - Google Analytics