launcher中Workspace类大致分析

简介: launcher中Workspace类大致分析

在Workspace.Java类实现,相关方法有:

1) computeScroll():重写了父类的computeScroll();主要功能是计算拖动的位移量、更新背景、设置要显示的屏幕(setCurrentScreen(mCurrentScreen);)。

2) dispatchDraw():重写了父类的dispatchDraw();主要功能是判断抽屉是否打开、绘制指定的屏幕,可以绘制当前一屏,也可以绘制当前屏幕和下一屏幕,也可以绘制所有的屏幕,这儿的绘制指显示屏幕上的child(例如:app、folder、Wiget)。和computeScroll()中的setCurrentScreen(mCurrentScreen);方法配合使用可以实现屏幕的拖动多少显示多少的功能。

3) onMeasure():重写了父类的onMeasure();主要功能是设置屏幕的显示大小。由每个child的measure()方法设置。

4) onLayout():重写了父类的onLayout();主要功能是设置屏幕的显示位置。由child的layout()方法设置。

5) onInterceptTouchEvent():重写了父类的onInterceptTouchEvent();主要功能是在onTouchEvent()方法之前处理touch事件。包括:down、up、move事件。

 用xy记录鼠标移动时的坐标值;

 mLastMotionX和mLastMotionY记录了上次鼠标按下时的XY值,在ACTION_MOVE中赋值;

 xDiff和yDiff记录xy与mLastMotionX、mLastMotionY差值的绝对值;

 touchSlop为系统定义的标准值,初值为16;

 当xDiff和yDiff大于touchSlop时就认为界面拖动了足够大的距离,屏幕就可以移动了;

 当onInterceptTouchEvent()返回true时进入onTouchEvent()。

6) onTouchEvent():重写了父类的onTouchEvent();主要功能是处理onInterceptTouchEvent()返回值为true时传递过来的touch事件。

相关文章
|
1月前
|
前端开发 开发者
@workspace 使用指南
我是一位前端开发工程师,使用通义灵码@workspace进行项目了解、问题解答及代码优化建议,效率提升80%。通过询问项目赔付方式、架构信息和特定文件的优化建议,快速掌握项目细节,极大提高开发效率。
|
3月前
|
存储 编译器 Go
深入理解Go Workspace的三个关键目录结构
【8月更文挑战第31天】
149 0
|
6月前
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
|
6月前
|
Android开发
Eclipse提示“The default workspace “xxxx” is in use or cannot be created Please choose a different on
Eclipse提示“The default workspace “xxxx” is in use or cannot be created Please choose a different on
|
存储
Creating a workspace:创建一个工作空间
Creating a workspace:创建一个工作空间
322 0
Creating a workspace:创建一个工作空间
关于catkin_init_workspace找不到命令的原因
关于catkin_init_workspace找不到命令的原因
526 3
关于catkin_init_workspace找不到命令的原因
|
XML Shell Android开发
Android 9.0 Launcher Workspace加载
加载Workspace入口在/packages/apps/Launcher3/src/com/android/launcher3/model/LoaderTask.java,想了解Launcher app的启动流程,可以先看看这篇文章,https://www.
952 0
|
图形学
Unity 报错之 The type or namespace name 'UI' does not exist in the namespace 'UnityEngine'
关于Unity2017 升级到 Unity2019 两个问题。 The type or namespace name 'UI' does not exist in the namespace 'UnityEngine'
3145 0
Unity 报错之 The type or namespace name 'UI' does not exist in the namespace 'UnityEngine'