自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Launcher3源码分析 — 加载Workspace的数据

TODO

2014-03-05 19:28:39 7281 3

原创 Launcher3源码分析 — 启动过程

在main Activity执行之前会先执行Application类的onCreate方法public class LauncherApplication extends Application { @Override public void onCreate() { super.onCreate(); LauncherAppState.setApp

2014-03-05 00:10:31 5742 2

原创 Launcher3源码分析 — ui结构

在android4.4后,nexus设备使用Google Experence作为默认的Launcher,其实它的代码就是android4.4源码里的Launcher3,只是针对google now做了些修改,大体框架还是一样的。我们可以通过hierarchyviewer工具和布局文件launcher.xml来大致了解下Launcher3的UI结构。launcher.xml:<Fra

2014-03-04 21:34:27 9528 10

原创 在android中获取所有应用和所有widget

在android中获取所有应用和所有widget

2014-06-07 10:33:08 2917 4

原创 如何实现android程序的多屏适配

要实现程序的多屏适配,需要完成两个任务,一个是使得UI在不同的dpi下显示效果一致,即屏幕像素密度无关;另一个是为不同的屏幕尺寸设计合适的UI布局。

2014-05-22 08:14:30 2352

原创 android屏幕分类与屏幕相关参数定义

android设备的屏幕的差异通过两个维度来划分,screen sizes 和 screen densities,为了简单,android对不同的 screen sizes 和 screen densities做了归类。它们两者互不影响,一个表示屏幕的真实物理大小,一个表示屏幕的像素密度,这两者的不同组合构成了各种各样的设备屏幕。在对android应用做多屏适配时,它们是主要考虑的因素。

2014-05-21 14:51:03 2331 2

翻译 Java虚拟机(八)

todo

2014-04-18 08:49:34 815

翻译 Java虚拟机(七)

当一个线程调用native方法时,它就进入了一个不受java虚拟机限制的世界。它可以使用本地处理器的寄存器,在任何数量的本地堆上分配内存或者使用任意类型的栈。

2014-04-15 08:28:15 899

翻译 Java虚拟机(六)

当一个线程启动时,java虚拟机为这个线程创建一个新的Java栈。虚拟机只在java栈中直接执行两个操作,push帧和pop帧。一个线程当前执行的方法叫做线程的当前方法,当前方法的栈帧称为当前帧,定义当前方法的类称为当前类,当前类的常量池称为当前常量池。当java虚拟机执行一个方法时,它记录了当前类和当前常量池。当虚拟机遇到了要操作存储在栈帧里的数据的指令,会当前帧里执行这些操作。

2014-04-14 08:56:28 1079

翻译 Java虚拟机(五)

todo

2014-04-09 19:49:07 731

翻译 Java虚拟机(四)

todo

2014-04-06 16:21:32 844

翻译 Java虚拟机(三)

类加载器子系统Java虚拟机实现中负责查找和加载类型的部分是类加载器子系统。java虚拟机包含两种类型的类加载器:bootstrap类加载器和user-defined类加载器。bootstrap类加载器是java虚拟机实现的一部分,而user-defind类加载器属于正在运行的java程序的一部分,不同的类加载器加载的classes被放置到各自的名字空间里。user-defined

2014-04-03 15:49:39 758

翻译 Java虚拟机(二)

数据类型Java虚拟机操作的数据类型可以分成两大类,基本类型和引用类型。引用类型的变量的值是指向对象的,而不是对象本身,相反,基本类型的值并不指向任何东西,存储的是它们的真实数据。数据类型的分类如下图所示:所有java语言的基本类型都是java虚拟机的基本类型。虽然boolean作为java虚拟机的基本类型,但是java虚拟机对boolean的支持是非常有限的,当编译器把java源

2014-04-03 14:27:56 715

翻译 Java虚拟机(一)

什么是java虚拟机当谈到java虚拟机时一般会涉及到下面三个方面:抽象规范具体实现运行实例每个java程序运行在一个抽象的虚拟机规范的某种具体实现的运行实例上。java虚拟机的生命周期当以个程序启动时,一个java虚拟机运行实例被创建,当程序运行结束时,虚拟机运行实例被销毁,每个java程序对应一个java虚拟机。java虚拟机通过调用类的main()方法

2014-04-02 21:07:48 846

翻译 Java架构介绍(三)

Java APIJava API是一套提供标准方式来访问主机系统资源的运行时库。当你运行一个java程序时,虚拟机会加载程序的class文件中引用到的Java API class文件。所有被加载的class文件(程序中的和Java API的)和被加载的动态链接库(含有native方法)组成了完整的Java虚拟机执行程序。Java API的class文件本质上是特定于主机平台

2014-03-27 11:01:01 803

翻译 Java架构介绍(二)

类加载器的结构类加载器在安全性和网络移动性上起着重要作用,一个java虚拟机中可以包含多个类加载器,这些类加载器组成了类加载器子系统。Java应用程序可以使用两种类型的类加载器:一个bootstrap类加载器user-defined类加载器bootstrap类加载器是Java虚拟机实现的一部分,它通常从本地磁盘中以某种默认的方式加载class文件

2014-03-26 21:43:48 817

翻译 Java架构介绍(一)

java语言平台架构java语言的平台架构由下面四部分组成:java编程语言java的class文件格式java应用程序接口(API)java虚拟机这四部分的关系如下图所示:可以看到,java编程环境分为两个时期,编译时和运行时,程序中的java源文件(A.java, B.java)在编译期通过java提供的编译器编译成class文件(A.class, B.

2014-03-26 11:46:52 1250

原创 Launcher3源码分析 — bindWorkspaceItems的具体实现

通过调用bindScreens(),主界面完成了页面的加载,接下来就要开始加载各页面内容了。为了提高用户体验,会先加载当前页面的内容,再加载其他页面的内容。在workspace中调用bindWorkspaceItems()完成页面内容的加载,具体代码如下: // oldCallbacks: 一个Callback引用 // workspaceItems: 页面的apps

2014-03-25 17:10:21 3053

原创 Launcher3源码分析 — bindScreen的具体实现

前面讲到,在bindWorkspace中涉及了以下几个回调方法:startBinding();bindScreens();bindWorkspaceItems();finishBindingItems();

2014-03-25 14:29:27 3580

原创 Launcher3源码分析 — 主界面的UI结构

使用android sdk里面的HierarchyViewer工具可以查看应用的布局树状图,下面是Launcher3主界面的UI结构在Launcher界面中这几个组件的布局如下图所示:CellLayout就是Launcher主界面中的每个页面,Workspace就是各页面的容器,控制页面的滑动,BubbleTextView就是每一个app。那ShortcutWidg

2014-03-25 11:41:21 4206

原创 Launcher3源码分析 — 所有应用页面的数据加载和绑定

TODO

2014-03-07 20:17:29 3607 2

原创 Launcher3源码分析 — 将Workspace的数据与界面绑定

TODO

2014-03-07 10:03:24 3721 2

原创 Launcher3源码分析 — 数据加载过程

TODO

2014-03-05 10:41:08 3503 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除