android view:布局优化
摘要:今天在图书馆看了一个android性能优化。 关于布局优化有几个小技巧: 1.尽量减少布局的嵌套,而使用相对布局,这样的话会减少布局对象的创建,并且可以再事件传递的时候减少传递嵌套。 2.使用include可以复用布局。 3.使用megre作为父布局往往可以减少同样的布局嵌套。 4.使用viewsub可以再延时加载布局。 有点简短也没有说原理,记录一下,好好读一下那本书在写一个博客吧。
阅读全文
java 集合:实现
摘要:集合本来就是为了方便开发的,实现了一些基本数据结构,一般来说数据结构有两种物理的实现:数组和链表。数组是连续的空间,链表是不连续的。基于这两种又扩展了很多的数据结构。队列,栈,hash表,树。在java中有两种,一种是collection,主要是为了存储对象集合。一种是map,主要存储键值对。要了解各种java集合怎么使用就必须了解底层的数据结构。collection是一个总的接口,有子接口set和list。然后还有一些抽象类,实际上这些所有的接口和抽象类,只不过定义了一些行为而已,真正的数据结构定义都是在每一个实现类中。list:主要的实现类有arraylist,正如名字一样底层就是数组。l
阅读全文
android view:手势
摘要:一直认为android手势识别很是神奇,我们不分析复杂的手势,仅仅是针对上一次的基本事件的手势处理,分析GestureDetector的源码,来看一下到底手势事件是如何定义的。GestureDetector使用的时候要new一个对象然后使用手势处理器的ontouchevent进行处理event事件。实际上就是android给你处理好了各种事件,然后让你做一个接口回调,给你回调所需要的手势事件。首先来说可以实现的事件:单击,双击,长按,移动,滑动。然后还有一些down事件,up事件。其实主要就是前面的事件。tip:有必要描述一下这些事件究竟是什么?单击是在规定的单击时间内的down+up。长按和
阅读全文
android view :事件
摘要:在view绘制完成后,要想在和view交互一定就要使用事件了,这些事件包括触屏,按键,以及轨迹球,说起轨迹球,在黑莓的手机上常见,现在触屏出来之后基本上就没有这个东西了。这些事件从屏幕上产生出来,会进行硬件中断,然后交给操作系统,然后由操作系统分发给我们的应用,我们就从frameworlk层开始分析。首先是由windowmanagerservice接收到之后会使用共享内存和管道和我们的程序进行进程通讯,也就是ViewRoot之前就说过他是管理view的事件的。它存在windowmanager中,当Viewroot调用dispatchPointer方法调用diliverpointerevent就
阅读全文
android view : window
摘要:既然是view,为什么要说window,实际上着是一个很有用的东西,在展现view和设计界面上很有用,就比如说悬浮窗但是这时候又要分清楚一个概念,window到底是什么?在activity中说过了我们的view的父类是一个decorview,decroview是phonewindow的内部类,而phonewindow就是我们所说的window,想这样一个问题,那界面上的那些statusbar和对话框,以及toast又是一些什么?如果抽象思维好,oo思维好,那么一定会明白这些东西其实都一样,都是phonewindow。也就是说所有有边界的东西都是window,也就是phonewindow。包括对
阅读全文
android view : 动画
摘要:view中除了必要的移动之外,也可以使用动画来完善视觉效果。android中的动画在2.3之前只有帧动画和补间动画。3.0之后就加入了属性动画。其实说到动画是什么?就是一个连续的view的集合。帧动画是不断的切换view,补间动画就是不断的绘制两个状态之间的view,形成补间内容。属性动画实际上是加强了动画,在之前的基础上更加灵活,几乎实现了任何有属性的对象的动画效果。其实原理也很简单就是两个状态之间的不断变化。tip:关于3.0之前动画插值器的历史:2.3的时候补间动画的插值器interpolater接口有getInterpolation(float input)方法,后来3.0之后就是去掉
阅读全文
android view : 自定义
摘要:首先,为什么要使用xml来配置view的视图,这个是mvc的一个思想,你可以把前端和数据分离,可以想一下一个及其复杂的视图假如要修改面对复杂的代码是多么的发愁,xml更明了的表达了视图。然而我们知道android中的view有两种形式,代码和xml。但是终究还是代码,只有完整的描绘出view对象。才可以把view完美的显示在手机上,也就是说在view绘制之前,都是把view的xml属性转化为了view对象的属性。这也就是为什么要layout中使用xml布局自定义view的时候要使用两个参数构造函数了。attributeSet attrs 就是你在xml中书写的属性。明白了这个道理,就说一下an
阅读全文
java 对象 :创建
摘要:灵感来自effective java关于对象,是java的核心,如何有效的创建其实是一个值得关注的地方。1.静态工厂:这是一个值得关注的,并且应该时刻考虑的方法。优点:1.他是有名字的,这个是如何作为一个优势?假设在一个别人写的类有好几个构造函数,你应该使用哪个?哪个才是最佳的?这时候要是有一个名字就好了,但是普通的构造都是一样的名字。静态构造可以完美解决。2.可以控制对象构建,普通的构造函数只是返回一个本对象,并不能对对象作出控制,比如静态工厂结合私有构造,就可以控制构建对象的数量,也可以把对象构建缓冲池,来进行对象的复用。还有一个技巧,假如参数传递的一致就返回同一个对象。这样对象就可以使用
阅读全文
android view : 绘制
摘要:说到绘制,其实就是如何把一个view的对象,变成手机上可视的图形。很多人总结3个过程:测量,布局,绘制。这也是所有的要显示图形的程序所应该抽象的3个步骤,测量就是测量出你view的大小,布局就是要显示在屏幕的哪个坐标位置,绘制就是把图形画到屏幕上。view和viewgroup的处理方法是不同的。view:1.measure:要测量应该考虑的就是view的大小,重点看view中的measure,首先是判断是否有必要测量view中有一个mprivateflags是一个标志位,标志了view的所有的状态表示。判断是否要FROCE_LAYOUT。然后判断现在的测量的大小和一个之前测量的大小是否一样。之
阅读全文
android view : 概述
摘要:关于view的显示和绘制,不会去了解底层,仅仅在framework层做一些概述:以oo的思想,那么窗口的显示,内容的显示一定都有对应的类来相对应。了解了这一点之后,就去抽象一下android为了显示窗口而做的封装。首先来说每一个activity一定有一个可供显示图像的东西,window,就是他抽象为一个window可以挂载所有view。在android中有一个实现类就是phonewindow,他实现了window的所有功能。那么可供挂载的view一定有一个根类,是decorview,这个是一个phonewindow的内部类。字面意义来看就是一个装饰类。他也仅仅就是一个view类,但是确实所有v
阅读全文
activity 和 生命周期: 消息通信
摘要:实际上关于activity大概流程已经了解了,在深入的话方向应该是ams的处理操作和界面创建和view绘制。这些话题之后再谈,activity是一个gui程序,其中离不开的就是消息通讯,也就是在消息循环中不断的处理消息,比如用户交互消息,系统提醒消息等。所以一定要把消息通信作为一个核心的组件,其中涉及到的类有Handler,Looper,Message,MessageQueue,HandlerThread。首先介绍的就是1.Message了,表示一个消息,关键的几个属性为what:消息的类型。arg1,arg2这个可以传递两个简单的整数。data一个bundle可以传递多个数据。obj可以传递
阅读全文
Activity 和 生命周期: 创建
摘要:了解了整体的android创建流程之后,就分析一下到底这个过程中做了什么?activity创建中开始时由activityStack中的realstartActivityLocked函数中调用了activityThread中的scheduleLaunchActicity,然后利用H发送消息调用handleLaunchActivity,由此就开始了创建activity的全过程。创建和生命周期:1.在handleLaunchActivity中调用了performLanuchActivity:tip:其中有一个ActivityClientRecord,这个是activity的一个数据对象,里面有创建a
阅读全文
activity 和 生命周期 :流程
摘要:activity是android的一个基本的组件。讨论生命周期,taskstack等等的话题的时候。就不得不去看一下android framework层的源码了。 生命周期,实际就是系统调用android代码的时候做的回调函数,复写之后,就会和android app运行为一体。简单的来说,和activity有关的类有很多。其中和生命周期有关的,就是管理activity的类。包括activityThread,activityManagerNative,activityManagerService和activityStack: activityThread: 每一个java程序都有一个ma...
阅读全文