`
wangxiaohigh
  • 浏览: 1459333 次
文章分类
社区版块
存档分类
最新评论

launcher修改--左右滑动屏幕切换源码追踪

 
阅读更多

在android的源代码中,屏幕之间的跳转是如何实现的呢?在workspace.java中开始。在这个类中,为实现屏幕切换主要重写了以下几个方法:onMeasure()、onLayout()、onInterceptTouchEvent()、onTouchEvent()方法,另外还是用了CustomScroller mScroller来平滑过渡各个页面之间的切换。

首先,我们看一下onMeasure()方法:

在这里,得到屏幕的宽高,然后再枚举其中所有的子view,设置它们的布局(使他们的高和父控件一样),这样每一个子view就是充满屏幕可以滑动显示的其中一页。
下面是onLayout()方法:


onLayout方法中,横向画出每一个子view,view的高与屏幕高一致,宽度为getChildCount()-1个屏幕宽度的view。

再看一下onInterceptTouchEvent()方法:


onInterceptTouchEvent()方法和下面的onTouchEvent()主要是来响应手指按下划动时所需要捕获的消息,例如划动的速度,划动的距离等。再配合使用scrollBy (int x, int y)方法得到慢速滑动小距离的时候,所需要显示的内容。最后当手指起来时,根据划动的速度与跨度来判断是向左滑动一页还是向右滑动一页,确保每次用户操作结束之后显示的都是整体的一个子view.


以上就是launcher中左右滑动屏幕切换源码。

分享到:
评论

相关推荐

    Android 页面滑动切换(类Launcher滑动屏幕实现)

    下面的这个例子也是从网上找来的,不是自己写的,一直想学习下,但是一直没有写,以前也研究研究的是launcher的页面跳转,launcher修改--左右滑动屏幕切换源码追踪说实话,那个代码有点复杂,所以理解的也不是很透彻...

    仿照Launcher的Workspace实现左右滑动切换

    为了提升用户体验,许多开发者会尝试模仿原生Launcher的某些特性,比如 Workspace 的左右滑动切换功能。这个功能使得用户可以方便地在不同的主屏幕之间进行切换,浏览和启动应用。本篇将详细介绍如何实现这一效果。 ...

    Launcher修改(实现左右循环滑动、壁纸的平滑过渡,带文档)

    本教程将详细讲解如何修改Launcher,实现左右循环滑动的效果,以及壁纸平滑过渡的功能。 首先,我们关注的是"循环滑动"这一特性。在原生的Android Launcher中,屏幕通常是线性的,用户只能前后滑动,无法实现循环。...

    junit-platform-launcher-1.8.0-M1-API文档-中文版.zip

    赠送jar包:junit-platform-launcher-1.8.0-M1.jar; 赠送原API文档:junit-platform-launcher-1.8.0-M1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-...

    Launcher3-mx-修改过的.rar

    【Launcher3-mx-修改过的】是一个针对Android系统启动器的修改版本,主要涉及的是用户界面(UI)和用户体验(UX)的优化。这个启动器是基于原生的Launcher3进行改进,旨在提供更加个性化和高效的操作体验。下面将...

    拆解Launcher中的WorkSpace实现左右滑动效果

    为了实现滑动效果,`Workspace`需要监听用户的触摸事件,并根据滑动方向来切换屏幕。 1. **触摸事件处理**:在`Workspace`类中,你需要重写`onTouchEvent`方法来处理触摸事件。当用户滑动时,需要计算滑动距离并...

    提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类

    提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类,相应的源码说明可以参考文章:http://blog.csdn.net/Yao_GUET/archive/2011/05/04/6393962.aspx

    launcher-v3-master_physicalqs2_launcher-v3-master_黑色沙漠V795登录器源码_

    《深入解析"launcher-v3-master_physicalqs2_launcher-v3-master_黑色沙漠V795登录器源码"》 在IT行业中,游戏客户端的登录器是连接玩家与游戏服务器的关键组件,它负责验证用户身份、处理安全认证以及提供游戏启动...

    pymol_launcher-2.1-cp37-cp37m-win_amd64

    pymol_launcher-2.1-cp37-cp37m-win_amd64

    junit-platform-launcher-1.8.0-M1-API文档-中英对照版.zip

    赠送jar包:junit-platform-launcher-1.8.0-M1.jar; 赠送原API文档:junit-platform-launcher-1.8.0-M1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-...

    开发工具 ant-launcher-1.9.6

    开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ant-launcher-1.9.6开发工具 ...

    junit-platform-launcher-1.7.0.jar

    junit-platform-launcher-1.7.0.jarjunit-platform-launcher-1.7.0.jar

    junit-platform-launcher-1.6.2.jar

    junit-platform-launcher-1.6.2.jarjunit-platform-launcher-1.6.2.jarjunit-platform-launcher-1.6.2.jar

    pymol_launcher-2.6-cp311-cp311-win_amd64.whl.zip

    标题中的“pymol_launcher-2.6-cp311-cp311-win_amd64.whl.zip”是一个包含Python扩展模块的压缩文件,特别提到了“pymol_launcher”,这很可能是用于启动PyMOL的工具。PyMOL是一款广泛使用的分子可视化软件,用于...

    junit-platform-launcher-1.6.1-API文档-中文版.zip

    赠送jar包:junit-platform-launcher-1.6.1.jar; 赠送原API文档:junit-platform-launcher-1.6.1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.6.1-sources.jar; 赠送Maven依赖信息文件:junit-platform-...

    launcher-v3-master-源码.rar

    "launcher-v3-master-源码.rar" 是一个包含Android Launcher3源码的压缩文件,Launcher3是Android系统默认的主屏幕应用的源代码。这个压缩包可能是从GitHub或其他开源平台下载的,通常用于开发者研究、学习或定制...

    launcher2-1-0-0-2018-10

    launcher2-1-0-0-2018-10

    Launcher3-android7.1.2

    "Launcher3-android7.1.2" 是一个基于Android 7.1.2系统的桌面启动器应用,由Google原厂开发。此版本的Launcher3是经过Android Studio 2.3.1版本的集成开发环境(IDE)编译并打包完成的,确保了其兼容性和稳定性。...

    pymol_launcher-2.6-cp311-cp311-win32.whl.zip

    标题 "pymol_launcher-2.6-cp311-cp311-win32.whl.zip" 提供的信息表明这是一个与Python相关的压缩包,其中包含了一个名为 "pymol_launcher-2.6-cp311-cp311-win32.whl" 的文件,它是一个Python的wheel(whl)格式的...

    mirth-administrator-launcher-1.1.0-windows-x64.exe

    匹配mirth3.9server

Global site tag (gtag.js) - Google Analytics