原创 ToolBar

一、ToolBar樣式使用一覽 1、include <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.co

原创 從點擊屏幕到事件處理的事件分發源碼流程

從點擊屏幕到事件處理的事件分發源碼流程 有事沒事先來張圖 怎麼打印出來的,代碼先奉上 Thread.dumpStack(); 在dispatchTouchEvent(MotionEvent event)方法中執行該方法 通

原创 SearchView

佈局: XML佈局: <android.support.v7.widget.SearchView android:id="@+id/search_view" android:layout_width="wr

原创 StartActivity路上的mParent

源碼基於API26 mParent幹嘛來着,帶着這個疑問上車了 通過源碼發現在Activity中attach()方法中賦值了,事實上還有個方法也可以賦值,即setParent(Activity parent). 不多說直接看

原创 源碼探探之StartActivity(一)

源碼基於API 26 startActivity()上車 @Override public void startActivity(Intent intent) { this.startActivity(intent,

原创 源碼探探之startActivity(二)

源碼基於API26 在上一篇中,講到由ActivityThread啓動activity了 ActivityThread即我們平時提到的主線程,上一篇中AMS處理啓動activity的task和record信息後通過binder

原创 Jetpack之Navigation源碼學習(二)

如果有人不相信代碼是簡單的,那是因爲他們沒有意識到人生有多複雜。 本篇梳理NavGraph的構建和加載流程 NavHostFragement#onInflate(Context context, AttributeSet attrs

原创 Constranint佈局配置和使用教程

項目配置 注:可從Api level 9開始使用 ext{ constraint = '1.0.2' } implementation "com.android.support.constraint:constraint-la

原创 RxJava操作符使用

一、創建操作 Create 使用一個函數從頭開始創建一個Observable 一個形式正確的有限Observable必須嘗試調用觀察者的onCompleted正好一次或者它的onError正好一次,而且此後不能再調用觀察者的任何其它

原创 AtomicBoolean意義何在

AtomicBoolean意義何在 提供了一種在多線程中安全處理業務邏輯的方案 private var started = AtomicBoolean(false) if (started.compareAndSet(false, tru

原创 Android獲取座標細則

Android座標系: x軸向右,y軸向下,z軸向上 View相對座標 getTop() View的上離x軸方向父佈局的距離 getLeft() View的左離y軸方向父佈局的距離 getBottom() View的

原创 DataBind配置及簡要使用

配置 在Moudle級的gradle裏添加 //使用dataBinding dataBinding { enabled true } 簡要使用 佈局 <?xml version="1.0" encoding="utf-8"?>

原创 Fragment判斷可見性

判斷可見性 addFragment或者replaceFrament @Override public void onResume() { super.onResume(); //TODO now visible to us

原创 Retrofit與LiveData結合

Retrofit與LiveData結合 寫上題目有點不知道怎麼寫了的很短暫的尷尬 有個問題,爲什麼我們可以直接更改service接口方法的返回值。 先解釋一波,相信我們都對Rxjava+Retrofit使用很熟悉了吧,回憶一下步驟

原创 Jetpack之Navigation源碼學習(一)

如果有人不相信代碼是簡單的,那是因爲他們沒有意識到人生有多複雜。 本篇按照使用流程進行梳理代碼結構 Navigation Navigation.findNavController(it).navigate(R.id.action_p