原创 kotlin集合: 集合間操作 : intersect/subtract/union/minus/plus/retainAll

集合間操作 intersect(…) : 返回一個集合,其中包含此集合和指定集合所包含的所有元素,交集 subtract(…) : 返回一個集合,其中包含此數組包含但未包含在指定集合中的所有元素,差集 union(…) : 返回

原创 kotlin 集合 : any/none/all

any : 是否至少有一個 /** * 是否有(符合條件的)元素 */ private fun any() { //判斷集合元素,如果集合爲空,返回false, 集合中存有一個或多個元素時返回true val

原创 kotlin 集合:filter/groupBy

過濾與分組 filter private fun filter() { val mList = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) val resultList

原创 kotlin 集合 : take/takeWhile/takeIf/takeUnless 與 drop/dropLast/dropLastWhile/dropWhile

一、take take private fun take() { val mList = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) //take函數是根據傳入的參數挑

原创 Java 值傳遞 與 引用傳遞

java中方法參數傳遞方式是按值傳遞。 如果參數是基本類型,傳遞的是基本類型的【字面量值的拷貝】。 如果參數是引用類型,傳遞的是該參量所引用的對象在堆中【地址值的拷貝】。 參考: Java 值傳遞 or 引用傳遞? J

原创 RxPermissions:動態權限申請

參考: tbruyelle / RxPermissions RxPermission權限申請 依賴導入 allprojects { repositories { ... maven {

原创 rxjava : collectInto、collect、all、any、將集合中元素以逗號連接並返回

參考: RxJava 算術和聚合操作符 tbruyelle / RxPermissions tbruyelle / RxPermissions : 無界面fragment collectInto /**

原创 Android :狀態欄的高度獲取

獲取狀態欄高度 /** * 方式一: 通過反射獲取狀態欄高度 */ @SuppressLint("PrivateApi") private fun getStatusBarHeight

原创 ARouter 與 IProvider服務調用,IInterceptor登陸攔截

參考: xingfu0809 / ArouterLogin : 基於Arouter的登錄攔截 IProvider base模塊 : 定義服務接口 import com.alibaba.android.arouter.facad

原创 jitpack maven倉庫的使用

參考: gson-plugin如何在JitPack發佈(四) 官方 jitpack 官方集成文檔 jitpack 首頁查詢所有庫和版本 實踐 我的實踐 : 基於okhttp攔截器,支持手機上查看日誌,切換域名環境 我的實踐 : g

原创 dialog 與構造者模式

import android.app.Dialog; import android.content.Context; import android.graphics.Bitmap; import android.graphics

原创 kotlin : map

//參考: https://www.jianshu.com/p/da5cc9072f1e fun main() { // create() iterator() } /** * 遍歷 */ priva

原创 gradle :task

task執行順序dependsOn 一個 Task 是由一序列 Action (動作)組成的,當運行一個 Task 的時候,這個 Task 裏的 Action 序列會按順序依次執行。 doFirst\doLast之外的代碼只是配置

原创 gradle:統一版本

統一第三方庫的版本: 參考:Android組件化開發實踐(十):通過Gradle插件統一規範 示例一: configurations.all { resolutionStrategy { force

原创 設計模式:模版模式

準備: 抽象類和模版: public abstract class Game { abstract void init(); abstract void start(); abstract void