Launcher3源码浅析(5.1)--OverviewMode


目录

前言

  OverviewMode其实就是长按桌面空白处进去(或按menu键进入)的那个界面,一般也称之编辑模式页面,里面一般包含了壁纸的设置和插件的设置。

初始化

  首先说下布局,其布局还是在launcher.xml里,然后上部分显示的是workspace的布局,下面布局则是overview_panel.xml。overview_panel里包含了wallpaper_button,widget_button和settings_button这三个TextView。然后在Launcher.java的setupViews()里初始化这三个view,并设置其对应点击事件,从点击事件的处理方法可以知道,settings_button的事件其实并没有实际的实现,所以这个view一般不显示。

进入/退出OverviewMode

  进入/退出OverviewMode分别对应Workspace里的enterOverviewMode和exitOverviewMode方法,这两个方法最终都调用了enableOverviewMode:

private void enableOverviewMode(boolean enable, int snapPage, boolean animated) {
    State finalState = Workspace.State.OVERVIEW;
    if (!enable) {
        finalState = Workspace.State.NORMAL;
    }

    Animator workspaceAnim = getChangeStateAnimation(finalState, animated, 0, snapPage);
    if (workspaceAnim != null) {
        onTransitionPrepare();
        workspaceAnim.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator arg0) {
                onTransitionEnd();
            }
        });
        workspaceAnim.start();
    }
}

  这里通过finalState等参数调用getChangeStateAnimation来获取状态改变的动画对象,然后开始动画。这里Workspace.State.OVERVIEW状态就表示显示的是OverviewMode页面,Workspace.State.NORMAL则显示的是Workspace页面。

壁纸设置

 点击widget_button,调用onClickWallpaperPicker方法启动设置壁纸的activity,如下:

protected void onClickWallpaperPicker(View v) {

    final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
    pickWallpaper.setComponent(getWallpaperPickerComponent());
    startActivityForRe
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值