摘要: http://blog.csdn.net/sharetop/article/details/6313654其实要实现这个效果在Android中并非难事,因为官方的Launcher已经有现成的源代码放在那儿了,就是那个Workspace.java。大家可以去http://android.git.kernel.org/下载。而我们要做的事情就是分析它并精简它(毕竟我们只是打算左右滑动罢了,并不需要能创建快捷方式文件夹之类的东西,更不需要在上面拖放图标)。view plaincopy to clipboardpublicclassWorkspaceextendsViewGroupimplements 阅读全文
posted @ 2012-12-24 17:52 GreyWolf 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 很多Android开发者已经度过了初级、中级,如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。 一、初级 1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得。 2. 掌握Android UI控件、Android Java层API相关使用。 迈向中级,最好再次更新下Java技术,掌握Java concurrent库、nio库,精通xml、json解析,做过socket c/s端的程序。 二、中级 1. 熟练掌握NDK JNI方式的开发,对Android framework十分了解。 2. 移植一些开源项目,比如FFm 阅读全文
posted @ 2012-12-24 17:47 GreyWolf 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 在Workspace.Java类实现,相关方法有:1) computeScroll():重写了父类的computeScroll();主要功能是计算拖动的位移量、更新背景、设置要显示的屏幕(setCurrentScreen(mCurrentScreen);)。2) dispatchDraw():重写了父类的dispatchDraw();主要功能是判断抽屉是否打开、绘制指定的屏幕,可以绘制当前一屏,也可以绘制当前屏幕和下一屏幕,也可以绘制所有的屏幕,这儿的绘制指显示屏幕上的child(例如:app、folder、Wiget)。和computeScroll()中的setCurrentScreen(m 阅读全文
posted @ 2012-12-24 17:43 GreyWolf 阅读(194) 评论(0) 推荐(0) 编辑
摘要: http://quanminchaoren.iteye.com/blog/9161761) 桌面安装之后有5个默认的图标:search、contacts、browser、phone、message。它们是系统自带的,那它们是在哪儿存储的?什么时候加载的?2) 在res/xml目录下的default_workspace.xml文件中定义了它们。里面还定义了其他一些常用应用。定义格式如下: packageName="com.android.contacts"指定该应用的包名。 launcher:className="com.android.contacts.Dia 阅读全文
posted @ 2012-12-24 17:42 GreyWolf 阅读(183) 评论(0) 推荐(0) 编辑
摘要: // to create live folder on "home" screenJava代码if(LiveFolders.ACTION_CREATE_LIVE_FOLDER.equalsIgnoreCase(getIntent().getAction())){ tent().getAction()canbenullIntentintent=newIntent(); UriLIVE_FOLDER_URI=Uri.parse("content://contacts/live_folders/people"); intent.setData(LIVE_FOL 阅读全文
posted @ 2012-12-24 17:21 GreyWolf 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 今天开始launcher2分析系列,Launcher2的代码路径为:$ANDROID_SRC/packages/apps/Launcher2项目构成:AndroidManifest.xml 项目Launcher2的描述文件CleanSpec.mk android项目授权文件?NOTICE apache授权协议Android.mk Launcher2编译的makefileMODULE_LICENSE_APACHE2 空文件proguard.flags -keep clashhres目录 描述文件以及icon资源的位... 阅读全文
posted @ 2012-12-24 17:20 GreyWolf 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 使用用ADW的Launcher的人应该有点印象里面的功能,就是拖拽应用或者Widget图标到删除图标上,停留1秒以上,则会显示"Drop to uninstall"的提示,放开则打开卸载该程序的界面,现在就是要分析模仿这个功能。主要用到有两方面的东西,卸载和停留提示。卸载主要使用的是:Java代码IntentuninstallIntent=newIntent(Intent.ACTION_DELETE, Uri.parse("package:"+mUninstallPkg)); DeleteZone.this.getContext().startActiv 阅读全文
posted @ 2012-12-24 17:17 GreyWolf 阅读(691) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/hpoi/article/details/4629717android.app.Activity对于一个Android应用来说,android.app.Activity类实例是一个最基本的功能单元。一个Activity实例可以做很多的事情,但是它本身无法显示在屏幕上,而是借助于Viewgroup和View,这两个才是Android平台上最基本的两个用户界面表达单元。android.view.ViewGroupViewGroup是一个特殊的View类,它继承于android.view.View。它的功能就是装载和管理下一层的View对象和ViewGrou 阅读全文
posted @ 2012-12-24 17:10 GreyWolf 阅读(132) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/hpoi/article/details/4632378很多时候,利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在浏览器中滚屏,用Fling在阅读器中翻页等。在Android系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势。Android Develo 阅读全文
posted @ 2012-12-24 17:09 GreyWolf 阅读(374) 评论(0) 推荐(0) 编辑
摘要: Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。(0)她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。它的用法有2种:复制到剪贴板Java代码viewplaincopytoclipboardprint?Layou 阅读全文
posted @ 2012-12-24 17:06 GreyWolf 阅读(262) 评论(0) 推荐(0) 编辑
摘要: // 相对于给定ID控件android:layout_above 将该控件的底部置于给定ID的控件之上;android:layout_below 将该控件的底部置于给定ID的控件之下;android:layout_toLeftOf将该控件的右边缘与给定ID的控件左边缘对齐;android:layout_toRightOf将该控件的左边缘与给定ID的控件右边缘对齐;android:layout_alignBaseline将该控件的baseline与给定ID的baseline对齐;android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;android:layou 阅读全文
posted @ 2012-12-24 16:56 GreyWolf 阅读(229) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/droidpioneer/article/details/6758057操作过Android手机的朋友应该对在待机界面拖动图标的交互效果都有比较深刻的印象,比如说,当把图标拖动起来,图标会悬浮并随着拖动变换位置,当拖动释放后,图标会自动的寻找附近合适的空白网格位置。Android在实现这个效果的过程中采用了很多编程技巧,本文着重论述的VacantCell缓存就很具有代表性。VacantCell缓存主要是对同一种类型对象的缓存机制,这种机制的目的是复用已经分配过但已过期的对象,从而避免频繁的new新的对象。我们知道对象分配是一件比较耗费系统资源的事情,在 阅读全文
posted @ 2012-12-24 16:55 GreyWolf 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 2.draglayer.java:launcher layout的rootvie。draglayer现实上也是1个抽象的界面,用来措置惩罚拖动和对于事务举行开端措置惩罚然后按环境分发下去,脚色是1个controller。它起首用onintercepttouchevent(motionevent)来中途阻挡所有的touch事务,要是是长按item拖动的话不把事务传下去,直接交由ontouchevent()措置惩罚,如许就能够使成为事实item的移动了,要是否拖动item的话就把事务传到方针vie,交患上法针vie的事务措置惩罚函数做响应措置惩罚。如过有要对于事务的特殊需求的话可以修改oninte 阅读全文
posted @ 2012-12-24 16:54 GreyWolf 阅读(215) 评论(0) 推荐(0) 编辑
摘要: instanceof是Java的一个二元操作符,和==, >, <是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:String s = "I AM an Object! ";boolean isObject = s instanceof Object;我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True 阅读全文
posted @ 2012-12-24 16:52 GreyWolf 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 1. 创建一个布局文件,布局如下,只有一个TextView<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_pa 阅读全文
posted @ 2012-12-24 16:51 GreyWolf 阅读(186) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/stonecao/article/details/6561631Luancher有一个相对比较复杂的功能就是拖放功能,要深入了解launcher,深入理解拖放功能是有必要的,这篇blog,我将对launcher的拖放功能做深入的了解1.首先直观感受什么时候开始拖放?我们长按桌面一个应用图标或者控件的时候拖放就开始了,包括在all app view中长按应用图标,下面就是我截取的拖放开始的代码调用堆栈at com.android.launcher2.DragController.startDrag(DragController.java:170)at c 阅读全文
posted @ 2012-12-24 16:50 GreyWolf 阅读(325) 评论(0) 推荐(0) 编辑
摘要: Android系统自带了长按事件,setOnLongClickListener即可监听。但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候。这时候就需要自己来定义这个长按事件了。 下面是去年我写代码的时候,自定义长按事件的方式:package chroya.fun;import android.content.Context;import android.view.MotionEvent;import android.view.View;import android.view.ViewConfiguration;public class LongPressView1 ex 阅读全文
posted @ 2012-12-24 16:49 GreyWolf 阅读(425) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/hu2839fdjsfdsan/article/details/65700361.LauncherApplication的作用意义分析概括:LauncherApplication属于自定义的Application类,并在AndroidManifest.xml里指定了自定义Application类,如下: <application android:name="com.android.launcher2.LauncherApplication" android:process="@string/process" 阅读全文
posted @ 2012-12-24 16:48 GreyWolf 阅读(314) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/stonecao/article/details/6536083一LauncherApplication->onCreate --1.//设置最小堆内存4M --2.//建立应用图标缓存器 --3.//建立LauncherModel --4.//注册Intent.ACTION_PACKAGE_ADDED,Intent.ACTION_PACKAGE_REMOVED,Intent.ACTION_PACKAGE_CHANGED事件监听器 LauncherModel作为广播接收器对上面3中事件进行监听 --5.//添加对桌面favorites conte 阅读全文
posted @ 2012-12-24 16:47 GreyWolf 阅读(267) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lixuyuan/article/details/6688859一、Launcher功能介绍 Launcher简称HomeScreen,是android手机加载完毕后第一个启动的应用程序,它负责除应用本身操作外的所有操作,包括有几个桌面、点击应用程序图标启动应用程序、长时间按桌面出现上下文菜单、长按桌面图标出现垃圾箱、长按桌面应用程序后可以移动位置和设置壁纸等,虽然它负责的操作看是很多,但它和普通的应用程序具有一样的权限。二、Launcer 中一些重要的类及其功能描述 为了成为系统启动后第一个启动的应用程序,Launcher必须在其Andro... 阅读全文
posted @ 2012-12-24 16:47 GreyWolf 阅读(286) 评论(0) 推荐(0) 编辑