前言 一個窗口里面的所有的普通View都會共享一個Surface,這個Surface保存在ViewRootImpl里面。但是SurfaceView不同,SurfaceView...

前言 一個窗口里面的所有的普通View都會共享一個Surface,這個Surface保存在ViewRootImpl里面。但是SurfaceView不同,SurfaceView...
JVM運行時數據區: 虛擬機棧虛擬機棧包含了局部變量表,操作數棧,動態鏈接,方法出口等。每個方法從執行到完成就是一個棧幀入棧到出棧的過程,出棧以后會返回一條字節指令的地址( ...
前言 Glide 這個三方庫使用起來非常簡單Glide.with(this).load("").into(imageView)。便可以將資源圖片加載到對應的控件上面而且 Gl...
一、背景 1.1、控件效果 要實現的自定義控件效果大致如下,實現過程中用到了比較多的自定義View的API,覺得比較有代表性,就分享出來也當做學習總結項目代碼已上傳githu...
WebSettings用于管理WebView狀態配置,當WebView第一次被創建時,WebView包含著一個默認的配置,這些默認的配置將通過get方法返回,通過WebVie...
在《iPhone屏幕分辨率和適配規則(基礎篇)》,《iPhone屏幕分辨率和適配規則(規則篇)》和《iPhone屏幕分辨率和視頻規則(實現篇)》中已經介紹了iPhone的屏幕...
一、 拆分使用 先創建被觀察者和觀察者,然后建立訂閱關系,這樣在觀察者中就會接收到個生命周期的回調: 運行結果: 二、 鏈式調用(一般都是這種寫法): 三、更簡單的觀察者 C...
理一下Handler消息分發流程,一定離不開這幾個類:Handler:用于消息發送和接收Message:消息MessageQueue:消息隊列,用于存儲消息Looper:循環...
首先是來一段寫了一萬遍的代碼,Handler的基本使用 毫無疑問textView直接被改成了“二二三四”,那第一個問題問題來了: 一、可不可以在子線程里直接修改textVie...
責任鏈模式(Chain of Responsibility Pattern):避免請求發送者與接收者耦合在一起,讓多個對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這...
構造者模式(Builder Pattern)主要用于復雜對象的構建,將一個復雜對象的構造過程和它的表現層分離開來。 直接擼個蓋房子的例子。這里三個類: BuildingDes...
沒有MVVM!沒有MVVM!沒有MVVM! 一、dataBinding用法 app的build.gradle中添加依賴: 定義一個mode,兩種寫法是一樣的l: 布局的寫法要...
APT(Annotation Processing Tool),根據注解自動給生成代碼。JavaPoet,代碼生成框架。要自動生成類文件,JavaPoet并不是必須的,比如J...
這里的組件化每個模塊可以單獨運行、打包、測試,可隨意拆卸、隨意組裝,既不互相依賴又可以互相調用。是通過在一個Project下通過創建多個Module實現的。假設三個模塊:Ap...
通常項目中使用MVP架構并不會像MVP基礎結構Demo中這樣直接把類寫死,而是要進行基類抽取,面向接口。 創建三個基類:BaseModel、BaseView、BasePres...
AOP:面向切面編程。什么是切面?在開發過程中經常會遇到這樣的邏輯,在點擊不同的按鈕跳轉的時候都需要判斷是否已經登錄,在數據庫增刪改之前都要先進行備份操作。這種共同的邏輯就可...
本文實現通過OpenGL在屏幕上畫出一寫簡單圖形(三角形、等腰三角形、矩形)。 開擼碼前先了解一些概念性的東西: 什么是OpenGL?Open Graphics Librar...