android Launcher——ui框架.doc_第1页
android Launcher——ui框架.doc_第2页
android Launcher——ui框架.doc_第3页
android Launcher——ui框架.doc_第4页
android Launcher——ui框架.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

着手开发laucher 我个人觉得首先要从ui框架入手,了解清楚了ui框架对laucher就有了一个大致的了解,知道关键的几个类在哪里,对后面进一步深入地研究作出铺垫。废话不多说了,直接进入主题:1.先看图这是我正在研究的一个800*480的launcher的ui框架图,对应的桌面显示效果如下:下面一行应用是我修改桌面后的结果,在前面我的ui框架图中没有。闲话不多说,下面就一一做出讲解1.DragLayer-DragLayer继承FrameLayout,并在此基础上组合了DragController实现拖放功能,DragLayer主要监听下面两个用户事件onInterceptTouchEventonTouchEvent交给DragController进行处理,DragController根据是否在拖放中等信息控制控件拖放过程处理。DragLayer 是Launcher这个activity的顶层view,Launcher2这个应用只有一个activity那就是Laucher.java 2.DeleteZone-打开launcher.xml,DeleteZone默认是不显示的android:visibility=invisible但是我们每次开始拖放图标的时候DeleteZone就显示了,它是怎么实现的呢?DeleteZone实现了DragController.DragListener接口,DragListener提供两个接口方法,onDragStart:隐藏把手,显示DeleteZoneonDragEnd:显示把手,隐藏DeleteZone分别在开始DragController开始拖放和结束拖放的时候被调用.另外DeleteZone实现了DropTarget接口,一旦鼠标把图标拖放到DeleteZone,就会调用DeleteZone实现的onDrop方法对应用图标进行删除处理。 3.ClippedImageView-屏幕左右移动按钮,正常图标很小,你只能看到小点,我设置view背景不透明为绿色如前面我的截图ClippedImageView要注意三点,-1.桌面左右移动时Drawable的变换,变换图标列表可查看home_arrows_right.xml,ClippedImageView通过把drawable传递给worksapce,当桌面切换时通过调用Drawable.setLevel函数实现不同图标显示。-2.点击ClippedImageView实现左右桌面切换,查看ClippedImageView的布局文件android:onClick=previousScreen,该属性定义了一个ClippedImageView onClick事件响应函数,函数在布局文件对应的Activity中定义也就是在Launcher.java中定义 /* * Description:用户点击前一个桌面按钮 * param v * Others: */ SuppressWarnings(UnusedDeclaration) public void previousScreen(View v) if (!isAllAppsVisible() mWorkspace.scrollLeft(); -3.在ClippedImageView初始化(Launcher.setupViews)中添加了长按事件OnLongClickListener有当长按ClippedImageView,会执行launcher.onlongclick方法,方法执行显示5个桌面的预览微缩图显示,具体实现不做深入说明,后面将作深入研究。 4.RelativeLayout-android:id=+id/all_apps_button_cluster,如前面截图右边灰色竖状条,它是一个相对布局对象,上面承载了三个view中间是一个HandleView,是一个进入allappview的按钮,HandleView的上下都是一个进入google搜索的imageview -HandleView -1.点击事件 传递给Launcher.onClick进行处理 显示应用菜单view -2.长按事件 传递给Launcher.onLongClick进行处理,方法执行显示5个桌面的预览微缩图显示 -google搜索的imageview -onClick响应:android:onClick=launchHotSeat 5.AllApps2D - 菜单view,在launcher.xml中引用的是: all_apps.xml定义如下: 中间增加了一个层次,如果有需要可以定义自己的apps_3d布局 AllApps2D包括两个view -1.GridView android:id=+id/all_apps_2d_grid 应用菜单grid view 它是一个grid view 用来放应用图标 GridView对应的Adapter实现类是AppsAdapter,对应的Adapter布局文件是:application_boxed.xml -2.view android:id=+id/all_apps_2d_home 应用菜单view右边的home按钮 ,点击隐藏 AllApps2D 6.Workspace-用户桌面包括5个workspace_screen,默认显示的是:launcher:defaultScreen=0workspace继承了viewgroup,5个workspace_screen作为它的child,值得注意它只接收CellLayout类型的child,workspace重写了addview函数,添加非CellLayout的child将抛异常-Workspace长按事件仍由launcher.onLongClick来监听-Workspace实现了DropTarget, DragSource两个接口,意味着Workspace既是拖放源,又是拖放目的地-Workspace实现DragScroller接口,DragScroller接口提供两个方法 void scrollLeft(); void scrollRight(); 在拖放过程被DragController调用实现桌面的左右滚动 -CellLayout Workspace下的一个桌面布局,CellLayout也是ViewGroup的子类,上面我的桌面截图红色区域就是CellLayout Workspace下有5个CellLayout顺序排列,Workspace下布局文件:android:scrollbars=horizontal决定了5个CellLayout排列是横向还是纵向的 CellLayout被划分成不同的cell空间,并使用boolean mOccupied;来标识每个cell是否被占用,先看CellLayout的布局文件workspace_screen.xml: 当纵向的控件不够cells排列时,cell将产生重叠,横向不产生重叠,横向每个cell间隔至少为0 -CellLayout覆盖重新实现了onMeasure方法,和onlayout方法,它限定了child view 使用的布局参数类型为CellLayout.LayoutParams因此企图通过修改 workspace_screen.xml来改变它的桌面布局是不会得以成功的,你必须修改CellLayout类 -CellLayout.LayoutParams说明,CellLayout.LayoutParams下有几个成员需要说明一下 -cellX:该child view占用的第几列的cell(若横向占用多个cell,表示最左边的cellx) -cellY: 该child view占用的第几行的cell(若纵向占用多个cell,表示最上边的celly) -cellHSpan:横向跨越的列数 -cellVSpan: 纵向跨越行数 -isDragging:该child是否正在被拖动 -regenerateId:是否重新生成view id 7.桌面图标的四种类型ItemInfo-所有类型的父类 -ApplicationInfo 应用图标项 应用菜单view中所有应用图标的数据表示 -FolderInf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论