【源码剖析】Launcher 8.0 源码 25---用户操作(2)模式切换

本文详细解析了Android Launcher8.0中的三种模式:普通模式、overView模式和Springloader模式,以及它们如何通过长按操作进行切换。overView模式用于设置壁纸、添加widget等,Springloader模式涉及图标拖拽。长按操作在不同场景下触发不同的行为,如进入拖拽模式或开启快捷选项。源码分析了长按事件的处理逻辑,包括点击不同区域(如桌面、应用图标、文件夹)时的行为。
摘要由CSDN通过智能技术生成

 模式就是界面,除普通模式外,Launcher还有两个特殊模式,分别是overView模式和Springloader模式。此处采用状态模式这种设计模式,共有三个状态。

 

overView模式是长按桌面空白处,出现特殊功能,比如设置壁纸,添加widget,特殊设置(横屏开关,负一屏开关等),设置主屏幕(点击home键自动移动到的cellLayout),删除屏幕等。

 

Springloader模式又叫拖拽模式,用户想改变CellLayout里面的布局,就是通过拖拽图标,widget等来改变其位置,这个模式叫做拖拽模式。

 

正常模式,overView模式和SpringLoader模式就构成了正常的Launcher三个核心交互。

点击和滑动构成了普通模式,而长按则是overView模式和SpringLoader模式的起始因素。

Launcher 实现了OnLongClickListener接口。

 

源码如下:

@Override
public boolean onLongClick(View v) {
//首先进行三种判断,其实质:如果当前状态处于其他状态返回Launcher状态的途中,或者Launcher的布局还没有读取完成,则不进行后续操作。因为在以上两种状态,进行后面的操作会出故障,此外,以上两种状态持续时间非常短暂,所以考虑为用户误操作且这一瞬间操作无用。  比如说拖拽完图标后,我们能看到从springload模式进入普通模式的过程,这个过程中,长按桌面是没有任何作用的。

if (!isDraggingEnabled()) return false;
    if (isWorkspaceLocked()) return false;
    if (mState != State.WORKSPACE) return false;

//后面判断方法和onclick有些类似,一次判断是点击的哪里来进行对应处理,首先如果长按的是allapp入口,则打开allapp。对于allapp按钮,点击和长按一个效果。Allapp按钮在Launcher8.0里是hotseat上面的in

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值