转载
重播
Android rom定制、recovery、手机浏览器、应用市场、MTK刷机工具、Supersu/su
展开
-
(2)android触摸事件处理流程
最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到ACTION_MOVE和ACTION_UP,我决定下决心写个测试的小程序,来研究一个触摸事件从上往下是怎么传递和处理的。先说下大概的流程吧,这个应该在很多博客中都有讲解:当一个事件来临的时候,会先传递给最外层的ViewGroup(比如LinearLayout,FrameLayout),如果这个View转载 2014-10-07 09:11:22 · 840 阅读 · 0 评论 -
Android 两种制作圆形/圆角图片的方法
@roykfw前言:目前网上有很多圆角图片的实例,Github上也有一些成熟的项目。之前做项目,为了稳定高效都是选用Github上的项目直接用。但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家。预备知识:Xfermode介绍:下面是Android ApiDemo里的“Xfermodes”实例,效果图。转载 2014-12-12 15:56:18 · 989 阅读 · 0 评论 -
Android Launcher3壁纸居中问题
转载:KK Launcher3的wallpaper显示是动态的,与Launcher预置桌面数目有关,让壁纸居中,只能确保第一次开机时壁纸居中,后面用户修改桌面数目后,就无法达到了。如何要在默认桌面数目配置时居中,可以参考下面方法,以default一屏为例:Launcher3的workspace.java文件替换下面的函数private void updateOffset(boole转载 2014-10-07 10:03:20 · 1431 阅读 · 0 评论 -
(1)Android 4.4 Launcher3桌面源码分析
由于工作的原因,对Android的桌面有了一些了解。之前一段时间对桌面的构成十分模糊,最近看代码该代码发现渐渐有了感觉,所以准备写一系列分析安卓桌面的文章。市面上有很多桌面产品,比如91桌面,go桌面,小米桌面等等,虽说千差万别,但都完成了桌面的基本任务,比如说组织图标,拖动图标,滑动页面,显示小工具等等功能。桌面跟其他Android App很大的不同是,他只有一个Activity,但是这转载 2014-10-07 09:08:43 · 2599 阅读 · 0 评论 -
(10)PagedView的原理 – 滑动
PagedView是用来左右滑屏的,Workspace正是他的子类,这里的Page就是桌面上一页一页的内容。其实他和ViewPager差不多,连名字都近似,不过PagedView更自由更复杂一些。代码这么多,这得分析到啥时候去呀。先说下这个滑动的过程吧。如果你还不熟悉android的触摸事件控制流程,点击这里。然后打开eclipse一步一步跟踪代码。首先看onInterce转载 2014-10-07 09:21:29 · 1138 阅读 · 0 评论 -
(9)Launcher3分析之拖动图标的流程——放下
我们来看下放下的过程,对应的触摸事件是ACTION_UP,我们直接跳到DragController的onTouchEvent。在处理ACTION_UP的时候多调用了一次handleMoveEvent,可能是因为ACTION_UP相对于上一次的时间也会有位置的变化。松手的时候会判断是是不是在“扔”图标(通过isFlingingToDelete),如果你用的不仔细的话,可能发现不了这个扔的过程转载 2014-10-07 09:21:35 · 1867 阅读 · 0 评论 -
(8)Launcher3分析之拖动图标的流程——移动
移动的逻辑还是比较清楚的,因为他抽象出来的模型十分易于理解的。DropTarget是一个可放置(drop)区域的抽象,也就是我们松开手的时候想要把图标放到某个东西上,这个东西就是DropTarget,实现他的都是View,比如说文件夹,Workspace,删除区等等,你可以通过“ Open Type Hierarchy”来查看哪些类继承了DropTarget接口。下图是他比较重要的几个接口转载 2014-10-07 09:20:27 · 2294 阅读 · 0 评论 -
(7)Launcher3分析之拖动图标的流程——按下
拖动图标是Launcher的特色,非常形象地解释了如何改变桌面的布局,让小白用户也可以轻松上手,这背后所做的工作也是把复杂的东西简单化,简单到按下-移动-松开。今天说一说这个按下的过程是如何产生的。这里说的按是长按,长按就要找到他的长按监听器。在Workspace中addInScreen方法最后,给图标设置的监听器是Launcher对象,他实现了onLongClick方法。转载 2014-10-07 09:19:11 · 1734 阅读 · 0 评论 -
(6)Lanucher3 的启动流程(二)
在启动流程的上一篇之中,Launcher的onCreate方法做了一些准备工作。下面就要LoaderTask上场了。Activity.onCreate在接近结尾的地方调用了mModel的startLoader方法,他把LoaderTask对象放到了工作线程中。为什么放到另外一个线程?因为加载的过程有时候会很漫长,在UI线程可能会造成ANR(如果你对Handler和Handl转载 2014-10-07 09:16:02 · 1202 阅读 · 0 评论 -
Launcher3的启动流程(一)
Launcher3作为一个用户经常使用,常驻内容的应用,运行时维护着许多信息,而这些信息都需要在开机的时候加载完,今天就来分析下Launcher3是怎样一步一步启动的。如果你手里还没有源码,请点击这里,编译并让他在你的手机上运行。然后打开Eclipse,一步步跟着走。在启动Launcher这个Activity之前,先看下桌面的LauncherApplication吧,任何一个组件(转载 2014-10-07 09:13:41 · 1564 阅读 · 0 评论 -
(3)Launcher3 的布局和结构
首先你需要去 这里 下载下Launcher3的源码。这个是我从android源码里面拿出来的,修改删掉了一些东西,方便在eclipse上运行,你可以直接在手机上运行,有了代码和apk再来看说明,心理会很踏实的。Launcher3其实最主要的是一个Activity,基本上所有的操作都集中在这个Activity上,在Launcher.java 当中,setContentView的参数是R.la转载 2014-10-07 09:12:47 · 2281 阅读 · 0 评论 -
(5)Launcher 细说ItemInfo
要理解ItemInfo,就要先理解桌面有哪几种东西,即有哪几种Item。小工具:就是AppWidget,时钟小工具,天气小工具,等等。快捷方式:快速启动应用的图标,一个应用可以有多个重复的快捷方式,workspace和hotseat上的都是快捷方式文件夹:可以把多个快捷方式放到一块的,用来分类,减少屏幕空间占用。这些东西都一些共同的,可以抽象出来的东西,有自己的宽度和高度,都有所在转载 2014-10-07 09:16:14 · 2050 阅读 · 0 评论 -
(4)Launcher3中的常用类
除了上一篇博客中布局需要用到的几个类,还有一些类是我们在代码中随时可能遇见的。LauncherModel:从名字我们可以看出他跟数据有关系的,保存了桌面运行时的状态信息,也提供了读写数据库的API,他有一个内部类LoaderTask,桌面启动从数据库中读取数据并把图标和小工具添加上去的时候用的就是他。BubblTextView:图标都是基于他,不过奇怪的是,他是继承自TextVie转载 2014-10-07 09:14:05 · 858 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition转载 2015-12-08 17:30:32 · 457 阅读 · 0 评论