Glide

此篇文章只是用于记录使用Glide时要注意的点和一些使用技巧,如需查看基本使用,
请查阅官方文档。也可以看看Glide原理分析

注意点

占位符

1
2
3
4
5
6
7
Glide.with(this)
.load(url)
.asBitmap() //指定加载的图片是位图,这样底层不会进行图片格式判断,Gif就无法播放,也可以设置asGif()指明是Gif图片
.placeholder(R.drawable.loading)//下载过程中的占位符
.error(R.drawable.error)//下载失败后的显示
.diskCacheStrategy(DiskCacheStrategy.NONE)//磁盘策略,这里不使用缓存
.into(imageView);

Read More

WindowManager

概述

Window是一个抽象的概念,每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl来建立联系,因此Window并不是实际存在的,
它是以View的形式存在。

Android系统中Window有三种类型,分别是应用Window、子Window和系统Window。应用类Window对应着一个Activity。子Window不能单独存在,它需要附属在特定的父Window之中,
比如常见的一些Dialog就是一个子Window。系统Window是需要声明权限在能创建的Window,比如Toast和系统状态栏这些都是系统Window。

Window是分层的,每个Window都有对应的z-ordered,层级大的会覆盖在层级小的Window的上面。在三类Window中,
应用Window的层级范围是199,子Window的层级范围是10001999,系统Window的层级范围是2000~2999,这些层级范围对应着WindowManager.LayoutParams的type参数。
如果想要Window位于所有Window的最顶层,那么采用较大的层级即可。很显然系统Window的层级是最大的,而且系统层级有很多值,一般我们可以选用TYPE_SYSTEM_OVERLAY
或者TYPE_SYSTEM_ERROR,如果采用TYPE_SYSTEM_ERROR,只需要为type参数指定这个层级即可:mLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR;
同时声明权限:。因为系统类型的Window是需要检查权限的,
如果不在AndroidManifest中使用相应的权限,那么创建Window的时候就会报错,

流程分析

WindowManager实现了ViewManager接口,ViewManager接口提供以下三个方法:

Read More