Canvas 绘制
目录:
1. 图片文字绘制
2. 零散内容绘制和画布调整
Writed by SchafferWang
目录:
- WindowManagerService
- Window
- WindowManager
- WindowManager$LayoutParams
- flags
- type
- softInputMode 请查看关于键盘的内容 相关文献: http://blog.csdn.net/i_lovefish/article/details/8050025
- Window创建过程
- activity
- dialog
- Toast
目录
1 | 1. SQLite ( SQLite 命令中 以"[]"包含的内容表示可省略 ) |
参考
属性 | 含义 |
---|---|
inMutable |
= true ,bitmap可编辑,可以作为Canvas的底层Bitmap使用。= false ,bitmap不可变。 |
inJustDecodeBounds |
= true ,不加载到内存,Native 层解码了图片,未生成Java层的Bitmap;= false ,加载到内存; |
outWidth 、outHeight |
inJustDecodeBounds = true 时 Options 得到图片的原始宽高,未经缩放;inJustDecodeBounds = false 时 加载到内存经缩放的宽高; |
outMimeType(String) |
|
inPurgeable |
API19及以下,= true ,BitmapFactory 创建的用于存储Bitmap Pixel 的内存空间,可以在系统内存不足时被回收。APP需要再次访问 Bitmap 的Pixel 时(例如:绘制 Bitmap 或是调用getPixel() ),系统会再次调用BitmapFactory#decode...() 重新生成Bitmap 的Pixel 数组。 |
inInputShareable |
与 inPurgeable = true 结合使用= true , 浅拷贝;= false , 深拷贝; |
inSampleSize |
图片宽高和像素的取样值做为缩略; 当 inSampleSize = 2 时,宽 / 高方向上2个单位仅取1个单位,2×2 取 1×1。 |
inPreferredConfig |
存储 | 详解 |
---|---|---|
ALPHA_8 |
每个像素一个字节(8位),只存储8位的透明度值 | 不包含颜色信息 |
RGB_565(默认) |
每个像素两个字节(16位),颜色通道比 R:G:B = 5 : 6 : 5 |
65536 = 2^5 × 2^6 × 2^5 ,可用相近颜色代替 |
ARGB_4444 |
Alpha,R,G,B 四个通道每个通道用4位表示 |
已弃用 |
ARGB_8888 |
每个像素四个字节(32位),Alpha,R,G,B 四个通道每个通道用8位表示 |
完全表示32位真彩色,占用内存过大,是RGB_565 模式的2倍,是ALPHA_8 模式的4倍 |
inPreferredConfig ≠ null,解码器会尝试使用此参数指定的颜色模式来对图片进行解码
inPreferredConfig = null或者在解码时无法满足此参数指定的颜色模式,
解码器会自动根据原始图片的特征以及当前设备的屏幕位深,选取合适的颜色模式来解码
inBitmap
1 | Bitmap,API11添加用于重用已有的Bitmap |
inScaled
、inDensity
、inTargetDensity
、inScreenDensity
1 | inScaled 表示是否进行缩放,默认 = true; |
drawable
与 mipmap
drawable适配过程如下:
-nodpi
下找到不缩放使用;用于图标的存放,建议尺寸如下:
密度 | 建议尺寸 |
---|---|
mdpi |
48*48 |
hdpi |
72*72 |
xhdpi |
96*96 |
xxhdpi |
144*144 |
xxxhdpi |
192*192 |
1 | Bitmap占用内存 |
压缩方式有压缩、裁剪、采样三种方式。
第一种方案适用于进行纯粹的文件压缩,而不适用进行图像处理压缩;
第二种方案压缩方案适用于进行图像编辑时的压缩,就像手机自带相册的编辑功能,可以随着裁剪区域的大小进行最终的压缩;
第三种方案相对来说,适应性较强,各种场景都会符合。
(Compress)
Bitmap
按百分率压缩写入到指定格式(jpg/png/...
)文件中,以失真的代价压缩,并不改变压缩后文件读入内存中的大小.
1 | private Bitmap getCompressedBitmap(Bitmap bitmap) { |
(Crop)
裁剪时将整张缩放裁剪后,内存缩小比例 = 整体缩放比例 = 宽度缩放比例 * 高度缩放比例,存入文件也随之变化;
当输出宽高大于原本宽高时,将适得其反。1 | private void CropTheImage(Uri imageUrl) { |
(Sample)
宽高同时同量等比缩放,内存占用量 / 取样之前内存占用量 = 1 / (inSampleSize * inSampleSize)
。inSampleSize
比1小的话会被当做1,任何inSampleSize
的值会被取接近2的幂值。
1 | private Bitmap getRealCompressedBitmap(String pathName, int reqWidth, int reqHeight) { |
adb是一个标准的CS结构的工具, 连接开发电脑和调试手机.包含如下几个部分:
Server端, 后台进程,运行在开发PC机. 用来管理PC中的Client端和手机的Deamon之间的通信.
其他命令参考:http://www.jianshu.com/p/5980c8c282ef
分类:
1. BitmapDrawable
2. ShapeDrawable
3. LayerDrawable
4. StateListDrawable
5. LevelListDrawable
6. TransitionDrawable
7. InsetDrawable
8. ScaleDrawable
9. ClipDrawabe