launcher5.0-view结构
参考:http://blog.csdn.net/wdaming1986/article/details/7671318
http://www.cnblogs.com/DonkeyTomy/articles/3229764.html
查看Launcher.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher5" android:id="@+id/launcher" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/workspace_bg"> <com.android.launcher2.DragLayer android:id="@+id/drag_layer" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <!-- Keep these behind the workspace so that they are not visible when we go into AllApps --> <include android:id="@+id/dock_divider" layout="@layout/workspace_divider" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/button_bar_height" android:layout_gravity="bottom" /> <include android:id="@+id/paged_view_indicator" layout="@layout/scroll_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginBottom="@dimen/button_bar_height" /> <!-- The workspace contains 5 screens of cells --> <com.android.launcher2.Workspace android:id="@+id/workspace" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingStart="@dimen/workspace_left_padding" android:paddingEnd="@dimen/workspace_right_padding" android:paddingTop="@dimen/workspace_top_padding" android:paddingBottom="@dimen/workspace_bottom_padding" launcher:defaultScreen="2" launcher:cellCountX="@integer/cell_count_x" launcher:cellCountY="@integer/cell_count_y" launcher:pageSpacing="@dimen/workspace_page_spacing" launcher:scrollIndicatorPaddingLeft="@dimen/workspace_divider_padding_left" launcher:scrollIndicatorPaddingRight="@dimen/workspace_divider_padding_right"> <include android:id="@+id/cell1" layout="@layout/workspace_screen" /> <include android:id="@+id/cell2" layout="@layout/workspace_screen" /> <include android:id="@+id/cell3" layout="@layout/workspace_screen" /> <include android:id="@+id/cell4" layout="@layout/workspace_screen" /> <include android:id="@+id/cell5" layout="@layout/workspace_screen" /> </com.android.launcher2.Workspace> <!-- 下部快捷icon --> <include layout="@layout/hotseat" android:id="@+id/hotseat" android:layout_width="match_parent" android:layout_height="@dimen/button_bar_height_plus_padding" android:layout_gravity="bottom" /> <include android:id="@+id/qsb_bar" layout="@layout/qsb_bar" /> <!-- The Workspace cling must appear under the AppsCustomizePagedView below to ensure that it is still visible during the transition to AllApps and doesn't overlay on top of that view. --> <include layout="@layout/workspace_cling" android:id="@+id/workspace_cling" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> <include layout="@layout/folder_cling" android:id="@+id/folder_cling" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> <com.android.launcher2.DrawableStateProxyView android:id="@+id/voice_button_proxy" android:layout_width="80dp" android:layout_height="@dimen/qsb_bar_height" android:layout_gravity="top|end" android:clickable="true" android:onClick="onClickVoiceButton" android:importantForAccessibility="no" launcher:sourceViewId="@+id/voice_button" /> <include layout="@layout/apps_customize_pane" android:id="@+id/apps_customize_pane" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" /> </com.android.launcher2.DragLayer> </FrameLayout>
了解桌面的整体结构
com.android.launcher2.DragLayer
整个布局的根,DragLayer继承了FrameLayout,所以DragLayer本身可以看作是一个FrameLayout。
dock_divider
翻页指示滑动条。include包含了另外一个布局文件workspace_divider.xml ,而这个workspace_divider.xml包含了一ImageView。
paged_view_indicato
翻页指示滑动条上的蓝色滑块。同样它包含了scroll_indicator.xml,其中包含了一个ImageView
com.android.launcher2.Workspace
核心桌面,包含5个桌面项(workspace_screen)
hotseat
底部快捷icon图标区域
qsb_bar
顶部的搜索框。包含搜索view(qsb_search_bar)和内容下拉view(drag_target_bar)
workspace_cling 和 folder_cling
刚刷完机后,进入桌面时,显示的使用向导界面,介绍怎么使用workspace和folder,跳过以后就再也不会出现了
com.android.launcher2.DrawableStateProxyView
5.0新加入的view吧,个人认为是为了voice按钮点击范围做的一个代理view,点击此view执行点击搜索按钮的功能
apps_customize_pane
点击底部快捷图标allapp按钮后,显示所有应用程序的按钮后才会从隐藏状态转换为显示状态,显示所有应用程序和所有插件的界面。