2024年最新Android Launcher——ui框架(1),网易严选面试有几轮

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

4.RelativeLayout–android:id=“@+id/all_apps_button_cluster”,如前面截图右边灰色竖状条,它是一个相对布局对象,上面承载了三个view

中间是一个HandleView,是一个进入allappview的按钮,HandleView的上下都是一个进入google搜索的imageview

–HandleView

–1.点击事件 传递给Launcher.onClick进行处理 显示应用菜单view

–2.长按事件 传递给Launcher.onLongClick进行处理,方法执行显示5个桌面的预览微缩图显示

–google搜索的imageview

–onClick响应:android:onClick=“launchHotSeat”

5.AllApps2D – 菜单view,在launcher.xml中引用的是:

<include

layout=“@layout/all_apps” />

all_apps.xml定义如下:

中间增加了一个层次,如果有需要可以定义自己的apps_3d布局

AllApps2D包括两个view

–1.GridView android:id=“@+id/all_apps_2d_grid” 应用菜单grid view 它是一个grid view 用来放应用图标

GridView对应的Adapter实现类是AppsAdapter,对应的Adapter布局文件是:application_boxed.xml

–2.view android:id=“@+id/all_apps_2d_home” 应用菜单view右边的home按钮 ,点击隐藏 AllApps2D

6.Workspace–用户桌面包括5个workspace_screen,默认显示的是:launcher:defaultScreen=“0”

workspace继承了viewgroup,5个workspace_screen作为它的child,值得注意它只接收CellLayout类型的child,workspace重写了addview函数,

添加非CellLayout的child将抛异常

–Workspace长按事件仍由launcher.onLongClick来监听

–Workspace实现了DropTarget, DragSource两个接口,意味着Workspace既是拖放源,又是拖放目的地

–Workspace实现DragScroller接口,DragScroller接口提供两个方法

void scrollLeft();

void scrollRight();

在拖放过程被DragController调用实现桌面的左右滚动

–CellLayout Workspace下的一个桌面布局,CellLayout也是ViewGroup的子类,上面我的桌面截图红色区域就是CellLayout

Workspace下有5个CellLayout顺序排列,Workspace下布局文件:android:scrollbars="horizontal"决定了5个CellLayout排列是横向还是纵向的

CellLayout被划分成不同的cell空间,并使用boolean[][] mOccupied;来标识每个cell是否被占用,先看CellLayout的布局文件workspace_screen.xml:

<com.android.launcher2.CellLayout

xmlns:android=“http://schemas.android.com/apk/res/android

xmlns:launcher=“http://schemas.android.com/apk/res/com.android.launcher

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:hapticFeedbackEnabled=“true”

launcher:cellWidth=“115dip”//每一个cell的宽度

launcher:cellHeight=“100dip”//每个cell的高度

launcher:longAxisStartPadding=“0dip”//cell距离父view CellLayout左边距

launcher:longAxisEndPadding=“0dip”//cell距离父view CellLayout右边距

launcher:shortAxisStartPadding=“0dip”//cell距离父view CellLayout上边距

launcher:shortAxisEndPadding=“80dip”//cell距离父view CellLayout下边距

launcher:shortAxisCells=“3”//对横屏来说表示CellLayout cells行数

launcher:longAxisCells=“5”//对横屏来说表示CellLayout cells列数

android:background=“#FF0000”>

</com.android.launcher2.CellLayout>

当纵向的控件不够cells排列时,cell将产生重叠,横向不产生重叠,横向每个cell间隔至少为0

–CellLayout覆盖重新实现了onMeasure方法,和onlayout方法,它限定了child view 使用的布局参数类型为CellLayout.LayoutParams因此企图通过修改

workspace_screen.xml来改变它的桌面布局是不会得以成功的,你必须修改CellLayout类

–CellLayout.LayoutParams说明,CellLayout.LayoutParams下有几个成员需要说明一下

–cellX:该child view占用的第几列的cell(若横向占用多个cell,表示最左边的cellx)

–cellY: 该child view占用的第几行的cell(若纵向占用多个cell,表示最上边的celly)

–cellHSpan:横向跨越的列数

–cellVSpan: 纵向跨越行数

–isDragging:该child是否正在被拖动

–regenerateId:是否重新生成view id

7.桌面图标的四种类型

ItemInfo–所有类型的父类
–ApplicationInfo 应用图标项 应用菜单view中所有应用图标的数据表示 
–FolderInfo 桌面文件夹 
–UserFolderInfo 对应实现布局文件R.layout.folder_icon
–LiveFolderInfo 对应实现布局文件R.layout.live_folder_icon
–LauncherAppWidgetInfo 桌面组件
–ShortcutInfo 应用快捷方式 对应实现布局文件R.layout.application

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值