1. Android中的Window浅析

    简介

    一个Window就是一个包含唯一的View树结构的矩形区域
    下面这张图告诉我们,一个屏幕中可能有多个Window。
    window


  2. Android中的View浅析

    简介

    View,耳熟能详,无人不识,但是否无人不知呢?这里先来看看官方文档对View的定义。

    This class represents the basic building block for user interface components. A View occupies a rectangular area on the screen and is responsible for drawing and event handling. View is the base class for widgets, which are used to create interactive UI components (buttons, text fields, etc.). The ViewGroup subclass is the base class for layouts, which are invisible containers that hold other Views (or other ViewGroups) and define their layout properties.

    简单来说,View是用户交互的基础组成部分,占据了屏幕中的一个矩形区域,主要工作涉及绘制以及事件响应。 View是所有控件的基础,用来创建UI交互(按钮,文字区域等)。View的直接子类ViewGroup是布局基础,用来包含其他View或者其他ViewGroup并定义其布局属性。


  3. 贝塞尔曲线原理介绍及基础使用

    贝塞尔曲线概述

    贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。
    贝塞尔曲线主要用于二维图形应用程序中的数学曲线,曲线由起始点终止点(也称锚点)控制点组成,通过调整控制点,贝塞尔曲线的形状会发生变化。
    在计算机图形学中贝赛尔曲线的运用很广泛,例如Photoshop中的钢笔效果,Flash5的贝塞尔曲线工具,在软件GUI开发中一般也会提供对应的方法来实现贝赛尔曲线。


  4. Activity启动模式——standard,singleTop,singleTop,singleInstance(译)

    原文:Understand Android Activity’s launchMode: standard, singleTop, singleTask and singleInstance

    声明启动模式

    可以在AndroidManifest.xml文件中声明启动模式。

    1
    2
    3
    4
    <activity
    android:name=".SingleTaskActivity"
    android:label="singleTask launchMode"
    android:launchMode="singleTask">


  5. Android中的Context浅析

    Context是Android中最常见的一个元素了,本文主要描述了Context的一些基础知识。

    基本信息

    1. 描述应用程序环境信息,即上下文
    2. 抽象类,具体实现类是ContextImpl
    3. Context总数=Activity总数+Service总数+1(Apllication)
    4. 可以通过Context获取系统的资源和类,也可以实现一些应用级别操作,例如:启动一个Activity,发送广播,接收Intent信息等
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public abstract class Context {  
    ...
    public abstract Object getSystemService(String name); //获得系统级服务
    public abstract void startActivity(Intent intent); //通过一个Intent启动Activity
    public abstract ComponentName startService(Intent service); //启动Service
    //根据文件名得到SharedPreferences对象
    public abstract SharedPreferences getSharedPreferences(String name,int mode);
    ...
    }

  6. 多进程SharedPreferences

    谷歌默认的SharedPreferences对多进程支持非常不友好,其自己也承认:

    sp_in_google_doc


  7. Android启动初探

    init进程

    • ServiceManager
    • zygote

    Android系统基于Linux内核,而在Linux系统中,所有的进程都是init进程的子孙进程,都是直接或间接由init进程fork出来的。
    Zygote是在系统启动的过程中,由init进程创建的。


  8. java中的枚举类型——Enum

    日常java编程中,常见用一些静态常量表示一些状态码,特殊含义的标志等,例如:

    1
    2
    3
    4
    5
    public class A {
    public static final int STATUS_SUCCESS = 1;
    public static final int STATUS_FAIL = 2;
    public static final int STATUS_CANCEL = 3;
    }

    这样使用,虽然看上去很好,但是有不少隐形的问题:

    • 类型不安全;
    • 必须确保int范围;
    • 如果打印的话,只能看到int的值,查看含义的话,需要人工比对