原创 集成AndFix熱修復

補丁文件的生成 使用apkpatch命令生成apatch包 下載官方提供的工具apkpatch,下載下來後的文件如下圖所示 打release包,bug版本打包生成old.apk  ,修復後的版本再打包生成new.apk,放到下面的問價夾

原创 Kotlin學習之嵌套類與內部類

嵌套類 嵌套類(Nested Class)就是嵌套在另外一個類當中的類,換句話說,我定義一個類,然後在這個類的裏面又去定義一個類。在Java裏面有內部類的概念。Kotlin和Java這一點是比較類似,但是有一些區別。 class Out

原创 Kotlin 泛型函數和星投影

 泛型函數 和Java類型,除了泛型類,函數本身也是支持泛型的。 fun <T> getValue(item: T): T { return item } 普通的函數是沒有<T>這部分內容的,表示這個是泛型函數,擁有一個泛型類型

原创 Kotlin 泛型詳解

Kotlin:聲明處協變 ,在類型參數聲明處提供 Java:使用處協變,具體使用的時候才聲明協變 我們隨便定義一個泛型如下: class B<T extends CharSequence>{ } 這個表示在實例化B的時候你提供

原创 Kotlin泛型(協變和逆變)實戰

 首先看看在Java中協變和逆變的栗子 public class Animal { } public class Cat extends Animal{ } @Override protected void onCreate(Bun

原创 MVP與Jetpack組合應用

搭建MVC框架 public class MainActivity extends AppCompatActivity { private ListView listView; private ArrayList<St

原创 Kotlin泛型 協變及逆變

首先看看在Java中的泛型 List<Object> list1; 這樣聲明,表示我可以給list1放置任何類型的對象。 List<String> list2; 這樣表明,list2只可以放置類型是String的對象。 但是在java

原创 拍照、下載apk的Android版本的適配問題(Android6.0 Android7.0 Android8.0)

在官方7.0的以上的系統中,嘗試傳遞 file://URI可能會觸發FileUriExposedException。google提供了FileProvider,使用它可以生成content://Uri來替代file://Uri 使用Fil

原创 CoordinatorLayout的使用 AppBarLayout

    核心代碼 <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" androi

原创 營銷活動標籤 在TextView末尾加標籤 使用SpannableStringBuilder實現

  1、每個item只有一個標籤的情況     核心代碼: 自定義一個TagTextView <com.example.nala.tagtextviewdemo.TagTextView android:id="@+id

原创 Kotlin的作用域函數 let、also、with、run、apply

作用域函數主要有下面這幾種,apply ,with  、run 、let 、以及 also 。這些函數非常類似,它們的主要區別: 引⽤上下⽂對象的⽅式 (this / it) 返回值 他們在開發中的使用場景主要有兩個,一是非空判斷,二是對

原创 Kotlin上傳相冊圖片到服務器

 打開圖庫拿到圖片 /** * 相冊 */ private fun takeGallery() { val intent = Intent(Intent.ACTION_PICK, Me

原创 Kotlin 回調函數

 高階函數的概念: 參數有函數類型或者返回值是函數類型的函數. 那麼什麼是函數類型呢? 函數類型可以有各種各樣不同的參數和返回值的類型的搭配,這些搭配屬於不同的函數類型。 例如: (() -> Unit)

原创 Kotlin學習之伴生對象companion object

對象聲明 我們都知道在在Java中 不可能單純有一個對象存在的,對象一定是通過類來創建它的實例的,通過new這個關鍵字來創建一個類的對象,這樣呢,這個對象纔會在內存當中創建出來。 在Kotlin當中,有這麼一個新的概念,可以直接聲明個對象

原创 kotlin學習之構造函數

 在 Kotlin 中的一個類可以有一個主構造函數以及一個或多個次構造函數。主構造函數是類頭的一部分:它跟在類名後面。 主構造函數 class Person constructor(username:String){ } 如果主構造函