android Launcher——ui框架

本文介绍了Android Launcher的基本架构,包括DragLayer、Workspace、SlidingDrawer、DeleteZone等关键组件的职责和交互。DragLayer作为顶层框架支持拖放操作,DeleteZone处理删除行为,SlidingDrawer包含所有应用的列表。每个工作区(Workspace)可容纳应用快捷方式、appwidgets和folders。通过理解这些组件,开发者能更好地理解和定制Launcher。
摘要由CSDN通过智能技术生成

要想做好launcher,对其基本的架构了解是必须的,在这篇文章里,简单的介绍下launcher中类的构成和架构,首先,这篇文章中很多资源均从互联网中获得,感谢网友们的无私奉献,大家都共享,进步才会更快。

第一步,先看两张从网上找来的launcher的架构图。


第二张:

通过这两张图,简单的说下:

整个launcher,准确来说应该是homescreen更为合适,是一个包含三个child view的FrameLayout(com.android.launcher.DragLayer)。

第一个child就是桌面com.android.launcher.Workspace。这个桌面又包含5个child。每个child就对应一个桌 面。这就是你在Android上看到的五个桌面。每个桌面上可以放置下列对象:应用快捷方式,appwidget和folder。(第一张图应该是以前版本的,在2.2以前的版本应该是只有三个桌面,在2.3中,有五个桌面)

第二个child是一个SlidingDrawer控件,这个控件由两个子控件组成。一个是 com.android.launcher.HandleView,就是Android桌面下方的把手,当点击这个把手时,另一个子控 件,com.android.launcher.AllAppsGridView就会弹出,这个子控件列出系统中当前安装的所有类型为 category.launcher的Activity。

第三个child是com.android.launcher.DeleteZone。当用户在桌面上长按一个widget时,把手位置就会出现一个垃圾桶形状的控件,就是这个控件。(其实在2.2以后的版本中,在左下方和右下方添加了页面标记,来告诉用户当前在哪个桌面,其代码在launcher.xml代码中,

  1. <ImageView  
  2.         android:id="@+id/previous_screen"  
  3.         android:layout_width="93dip"  
  4.         android:layout_height="@dimen/button_bar_height"  
  5.         android:layout_gravity="bottom|left"  
  6.         android:layout_marginLeft="6dip"  
  7.   
  8.         android:scaleType="center"  
  9.         android:src="@drawable/home_arrows_left"          
  10.         android:onClick="previousScreen"  
  11.         android:focusable="true"  
  12.         android:clickable="true" />  
  13.   
  14.     <ImageView  
  15.         android:id="@+id/next_screen"  
  16.         android:layout_width="93dip"  
  17.         android:layout_height="@dimen/button_bar_height"  
  18.         android:layout_gravity="bottom|right"  
  19.         android:layout_marginRight="6dip"  
  20.         android:scaleType="center"  
  21.         android:src="@drawable/home_arrows_right"  
  22.         android:onClick="nextScreen"  
  23.         android:focusable="true"  
  24.         android:clickable="true" />  
<ImageView
        android:id="@+id/previous_screen"
        android:layout_width="93dip"
        android:layout_height="@dimen/button_bar_height"
        android:layout_gravity="bottom|left"
        android:layout_marginLeft="6dip"

        android:scaleType="center"
        android:src="@drawable/home_arrows_left"        
        android:onClick="previousScreen"
        android:focusable="true"
        android:clickable="true" />

    <ImageView
        android:id="@+id/next_screen"
        android:layout_width="93dip"
        android:layout_height="@dimen/button_bar_height"
        android:layout_gravity="bottom|right"
        android:layout_marginRight="6dip"
        android:scaleType="center"
        android:src="@drawable/home_arrows_right"
        android:onClick="nextScreen"
        android:focusable="true"
        android:clickable="true" />
下面就是launcher中主要类的简介:
AddAdapter:添加桌面元素的适配器, 维护了live fold  , widget , shortcut , wallpaper 4个ListItem , 长按桌面会显示该列表
AllAppsGridView:Icon列表的的主界面,继承gridView。

ApplicationInfo:一个可启动的应用。

ApplicationsAdapter:gridview的adapter。

BubbleTextView:一个定制了的textview,主要用于显示应用图标。


DeleteZone:luancher的删除区域,继承ImageView。在平时是出于隐藏状态,在将item长按拖动的时候会显示出来,如果将item拖动到删除框位置时会删除item。   DeleteZone实现了DropTarget和DragListener两个接口。


DragController:拖动控制接口。为Drag定义的一个接口。包含一个接口,两个方法和两个静态常量。接口为DragListener(包含onDragStart(),onDragEnd()两个函数),onDragStart()是在刚开始拖动的时候被调用,onDragEnd()是在拖动完成时被调用。在launcher中典型的应用是DeleteZone,在长按拖动item时调用onDragStart()显示,在拖动结束的时候onDragEnd()隐藏。两个函数包括startDrag()和setDragItemInfo().startDrag()用于在拖动是传递要拖动的item的信息以及拖动的方式,setDragItemInfo()用于传递item的参数信息(包括位置以及大小)。两个常量为DRAG_ACTION_MOVE,DRAG_ACTION_COPY来标识拖动的方式,DRAG_ACTION_MOVE为移动,表示在拖动的时候需要删除原来的item,DRAG_ACTION_COPY为复制型的拖动,

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值