• Android图形系统之Activity构成原理

    Android_View

    Activity是Android图形系统中非常重要的组成部分。图形系统客户端——Android应用程序的多数功能都是通过Activity实现的。上图展示了Activity类的构成,Activity主要由Window(phoneWindow的抽象基类)和WindowManager两部分构成。Window主要负责Activity的窗口视图,而WindowManager则主要负责与WmS交互。

    在这篇博客中,我不打算详细深入窗口视图的实现或者WmS的细节,而是比较宏观的梳理一下Activity的脉络。

    DecorView

    DecorView是Activity的根视图,从上图可以看出DecorView继承与ViewGroup。而ViewGroup的结构是大家都比较熟悉的,如下图所示。这… 【查看更多】

  • Android开发中的一些零散纪录

    最近一段时间,主要是在解一些bug,所以精力都分散在了不同的问题上。也是很久一段时间没有写blog了,这里记录一下最近debug过程中的一些知识点。

    1. 使用CircleImageView时,Glide第一次无法加载出正常的图片

    这个 bug的具体原因,我还不太清楚,留到以后再探讨了。后来参考StackOverflow上的回答解决了问题。主要的代码片段如下

    Glide.with(this.getApplicationContext())
    .load(url)
    .asBitmap()
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .placeholder(R.drawable.default_avatar)
    .into(new SimpleTarget<Bitmap>() {
    @Override
    public void onResourceReady(Bitmap
    【查看更多】
  • Java Annotation——由butterknife想到

    butterknife是Android开发中应用非常广泛的一个库。butterknife库主要利用了Java中的注解功能,可以提高Android应用的开发效率,毕竟没几个人会喜欢写那种冗长乏味的页面布局、事件连接的代码。首先,还是给一个典型的butterknife使用代码:

        @BindView(R.id.btn)
        TextView mBtn;

    这两行代码,就实现了把布局文件与TextView连接起来的功能,看起来确实非常简单。那么这么方便的功能是如何实现的呢?首先,还是看一个简答的例子,代码如下:

    SimpleAnnotation.java
    package basicTest;
    import java.lang.annotation.*;
    import static java.lang.annotation.ElementType.FIELD;
    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    【查看更多】