[TOC]
# 1. 前言
這里介紹一些概念性的常識。
# 2. 一些概念
## 2.1 圖層(Layer)
每次調用 canvas.drawXXX 系列函數,都會生成一個透明圖層專門來繪 制這個圖形,比如前面在繪制矩形時的透明圖層就是這個概念。
## 2.2 畫布(Bitmap)
每塊畫布都是一個 Bitmap,所有的圖像都是畫在這個 Bitmap 上的。 我們知道,每次調用 canvas.drawXXX 系列函數,都會生成一個專用的透明圖層來繪 制這個圖形,繪制完成以后,就覆蓋在畫布上(我們調用 Canvas 的各種繪圖函數,最終都是畫在這個 Bitmap上的,而這個 Bitmap 就是默認畫布。)。如果我們連續調用 5 個 draw 函 數,就會生成 5 個透明圖層,畫完之后依次覆蓋在畫布上顯示。
畫布有兩種:
* 一種是 View 的原始畫布,是通過 onDraw(Canvas canvas)函數傳入的,參數中的 canvas 對應 的是 View 的原始畫布,控件的背景就是畫在這塊畫布上的;
* 另一種是人造畫布,通 過 saveLayer()、new Canvas(bitmap)等函數來人為地新建一塊畫布。尤其是 saveLayer() 函數,一旦調用 saveLayer()函數新建一塊畫布,以后所有 draw 函數所畫的圖像都是畫 在這塊畫布上的,只有在調用 restore()、resoreToCount()函數以后,才會返回到原始畫 布上進行繪制。
## 2.3 Canvas
Canvas 是畫布的表現形式,我們所要繪制的任何東西都是利用 Canvas 來實現的。在代碼中,Canvas 的生成方式只有一種—— new Canvas(bitmap),即**只能通過 Bitmap 生成,無論是原始畫布還是人造畫布**,**所有的畫布最后都是通過 Canvas 畫到 Bitmap 上的**。**可以把 Canvas 理解成繪圖的工具,利用它所封裝的繪圖函數來繪圖, 而所要繪制的內容最后是畫在 Bitmap 上的**。所以,如果我們利用 Canvas.clipXXX 系 列函數將畫布進行裁剪,其實就是把它對應的 Bitmap 進行裁剪,與之對應的結果是以 后再利用 Canvas 繪圖的區域會減小。
- 介紹
- UI
- MaterialButton
- MaterialButtonToggleGroup
- 字體相關設置
- Material Design
- Toolbar
- 下拉刷新
- 可折疊式標題欄
- 懸浮按鈕
- 滑動菜單DrawerLayout
- NavigationView
- 可交互提示
- CoordinatorLayout
- 卡片式布局
- 搜索框SearchView
- 自定義View
- 簡單封裝單選
- RecyclerView
- xml設置點擊樣式
- adb
- 連接真機
- 小技巧
- 通過字符串ID獲取資源
- 自定義View組件
- 使用系統控件重新組合
- 旋轉菜單
- 輪播圖
- 下拉輸入框
- 自定義VIew
- 圖片組合的開關按鈕
- 自定義ViewPager
- 聯系人快速索引案例
- 使用ListView定義側滑菜單
- 下拉粘黏效果
- 滑動沖突
- 滑動沖突之非同向沖突
- onMeasure
- 繪制字體
- 設置畫筆Paint
- 貝賽爾曲線
- Invalidate和PostInvalidate
- super.onTouchEvent(event)?
- setShadowLayer與陰影效果
- Shader
- ImageView的scaleType屬性
- 漸變
- LinearGradient
- 圖像混合模式
- PorterDuffXfermode
- 橡皮擦效果
- Matrix
- 離屏繪制
- Canvas和圖層
- Canvas簡介
- Canvas中常用操作總結
- Shape
- 圓角屬性
- Android常見動畫
- Android動畫簡介
- View動畫
- 自定義View動畫
- View動畫的特殊使用場景
- LayoutAnimation
- Activity的切換轉場效果
- 屬性動畫
- 幀動畫
- 屬性動畫監聽
- 插值器和估值器
- 工具
- dp和px的轉換
- 獲取屏幕寬高
- JNI
- javah命令
- C和Java相互調用
- WebView
- Android Studio快捷鍵
- Bitmap和Drawable圖像
- Bitmap簡要介紹
- 圖片縮放和裁剪效果
- 創建指定顏色的Bitmap圖像
- Gradle本地倉庫
- Gradle小技巧
- RxJava+Okhttp+Retrofit構建網絡模塊
- 服務器相關配置
- node環境配置
- 3D特效