Android功能总结:仿照Launcher的Workspace实现左右滑动切换
Android 实现 总结 功能 切换 滑动 左右 Launcher
2023-09-27 14:29:20 时间
对于Launcher的桌面滑动大家应该都比较熟悉了,最好的体验应该是可以随着手指的滑动而显示不同位置的桌面,
比一般用ViewFlinger+动画所实现的手势切换页面感觉良好多了~~~~
分析了一下Launcher中的WorkSpace,里面有太多的代码我们用不上了(拖拽,长按,,,),把里面的冗余代码去掉得到实现滑动切换屏幕所必需的。
childLeft+childWidth, childView.getMeasuredHeight());
throw new IllegalStateException("ScrollLayout only canmCurScreen run at EXACTLY mode!");
throw new IllegalStateException("ScrollLayout only can run at EXACTLY mode!");
// The children are given the same width and height as the scrollLayout
mTouchState = mScroller.isFinished()? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING;
“千变万化”——神奇的Android图片规格调整器(功能梳理篇) 由于放假的缘故,还是没时间直接上手APP,所以趁着晚上有时间,不妨为“千变万化”APP梳理一下功能。这样也能为我构思该APP提供更好的设计方向,防止出现想到一处写一处的混乱情况。
奥特曼超人 KARL-Dujinyang-奥特曼超人。作者目前任职于银狐、泡椒游戏公司,曾任职腾为CTO,CSDN技术专家,曾创办过创业go、造梦工厂、米奇云,万能孵化器等,领域涉及逆向安全专家以及全栈工程师,作者目前出书中。
对于Launcher的桌面滑动大家应该都比较熟悉了,最好的体验应该是可以随着手指的滑动而显示不同位置的桌面,
比一般用ViewFlinger+动画所实现的手势切换页面感觉良好多了~~~~
分析了一下Launcher中的WorkSpace,里面有太多的代码我们用不上了(拖拽,长按,,,),把里面的冗余代码去掉得到实现滑动切换屏幕所必需的。。。。
新建一个ScrollLayout类,继承自ViewGroup。
重写onMeasure和onLayout两个方法:
其中onMeasure方法中,得到ScrollLayout的布局方式(一般使用FILL_PARENT),然后再枚举其中所有的子view,设置它们的布局(FILL_PARENT),这样在ScrollLayout之中的每一个子view即为充满屏幕可以滑动显示的其中一页。
在onLayout方法中,横向画出每一个子view,这样所得到的view的高与屏幕高一致,宽度为getChildCount()-1个屏幕宽度的view。
添加一个Scroller来平滑过渡各个页面之间的切换,
重写onInterceptTouchEvent和onTouchEvent来响应手指按下划动时所需要捕获的消息,例如划动的速度,划动的距离等。再配合使用scrollBy (int x, int y)方法得到慢速滑动小距离的时候,所需要显示的内容。最后当手指起来时,根据划动的速度与跨度来判断是向左滑动一页还是向右滑动一页,确保每次用户操作结束之后显示的都是整体的一个子view.
ScrollLayout源码:
childLeft+childWidth, childView.getMeasuredHeight());
throw new IllegalStateException("ScrollLayout only canmCurScreen run at EXACTLY mode!");
throw new IllegalStateException("ScrollLayout only can run at EXACTLY mode!");
// The children are given the same width and height as the scrollLayout
mTouchState = mScroller.isFinished()? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING;
“千变万化”——神奇的Android图片规格调整器(功能梳理篇) 由于放假的缘故,还是没时间直接上手APP,所以趁着晚上有时间,不妨为“千变万化”APP梳理一下功能。这样也能为我构思该APP提供更好的设计方向,防止出现想到一处写一处的混乱情况。
奥特曼超人 KARL-Dujinyang-奥特曼超人。作者目前任职于银狐、泡椒游戏公司,曾任职腾为CTO,CSDN技术专家,曾创办过创业go、造梦工厂、米奇云,万能孵化器等,领域涉及逆向安全专家以及全栈工程师,作者目前出书中。
相关文章
- 关于如何实现Android透明状态栏的总结
- Android Studio:Intent与组件通信实现页面跳转功能
- android放大镜效果实现
- android 解决ListView点击与滑动事件冲突
- Android WebView与JavaScript交互实现Web App
- 实用的android颜色配置表(亮瞎尼的双眼)
- 单例模式与Android
- Android相机实时自动对焦的完美实现
- Android 7.0动态权限大总结
- android PreferenceScreen使用笔记
- Android进阶笔记:AIDL内部实现详解 (一)
- Android之把手机的3g流量共享出来让其他人连接这个wifi
- Android配置maven阿里云镜像
- Android Studio实现校园图书管理系统
- 【Android 组件化】使用 ARoute 实现组件化 ( 完整组件化项目框架 )
- Android中自定义Adapter实现ListView动态刷新进度条
- Android:实现类似RadioButton自动换行及单选效果
- react-native 实现条码扫描(ios&android)
- qt for Android实现竖屏显示沉浸式菜单栏
- 【Android 安装包优化】WebP 图片格式 ( WebP 图片格式简介 | 使用 Android Studio 转换 WebP 图片格式 )
- [置顶] 我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书