發表文章

目前顯示的是 12月, 2019的文章

191230 Associate Android Developer

https://developers.google.com/certification/associate-android-developer 200101 Study guide https://developers.google.com/certification/associate-android-developer/study-guide/?authuser=0 Android core User interface Data management Debugging Testing  Android core Android Developers -> Toasts Android Developers -> Snackb ar > https://developer.android.com/training/snackbar Android Developers -> Localize your app App resources overview https://developer.android.com/guide/topics/resources/providing-resources.html?authuser=0 > Projects overview https://developer.android.com/studio/projects?authuser=0#mipmap   >> Add a module for a new device https://developer.android.com/studio/projects/add-app-module.html?authuser=0 >>> Create a library module https://developer.android.com/studio/projects/android-library.html?authuser=0#CreateLibrary Android Developers -> Application fundamentals Android Developers -> Create a notific

191225 Kotlin Smart cast to xxx is impossible, because yyy is a mutable property that could have been changed by this time.

Smart cast to xxx is impossible, because yyy is a mutable property that could have been changed by this time. 如果您遇上了以上的錯誤訊息 可參考以下連結中解答裡的第二種方法 https://stackoverflow.com/questions/44595529/smart-cast-to-type-is-impossible-because-variable-is-a-mutable-property-tha 如果想要對 let 做進一步的了解 可參考以下連結中的文章 https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84

191218 Android RecyclerView

androidx RecyclerView 使用 RecyclerView 有兩個重點 1. LayoutManager 2. Adapter 1. LayoutManager 就是看您的 RecyclerView 所要使用的佈局 常用的有 LinearLayoutManager (一維) 與 GridLayoutManager (二維) 2. Adapter 使用的是 RecyclerView.Adapter<VH extends ViewHolder> 先來看 RecyclerView.ViewHolder class ExampleViewHolder( v:View ): RecyclerView.ViewHolder( v ) {} 再來看  RecyclerView.Adapter<VH extends ViewHolder> class ExampleAdapter: RecyclerView.Adapter<ExampleViewHolder>()  有三個 abstract method 要實作 1. getItemCount() : 回傳 RecyclerView 中要顯示的個數。 2. onBindViewHolder(VH holder, int position) : 要顯示的資料在此指派。   onBindViewHolder(VH holder, int position) { holder.itemView.tv_name.text = "aaa" } 3. onCreateViewHolder(ViewGroup parent, int viewType): RecyclerView 中的 item 所要使用的 View 在此建立。   onCreateViewHolder(ViewGroup parent, int viewType): ExampleViewHolder { val li = LayoutInflater.from( parent. context ) val v = li.inflate( R.layout.recyclerview_ex

191218 Android ConstraintLayout Guideline

今天在設計 STB 主畫面 老闆前幾天曾表達說 以畫面左邊為主選單 右邊的區域再看要顯示什麼 所以我想先以畫面的五分之一來做為主選單的寬度 (不確定適不適合,看過後再來調整) 最先想到的是用 LinearLayout layout_weight 使用 1 與 4 但之前看過一篇文章 其中建議使用 ConstraintLayout 但 ConstraintLayout 可以用比例的方式來呈現嗎? 我用關鍵字 "Android Constraintlayout quarter" (因為我一開始想用四分之一,所以用 quarter 下去找) 找到以下這篇 https://stackoverflow.com/questions/45652296/constraintlayout-how-to-have-a-view-be-half-the-screen-width-and-centered 他使用了 Guideline androidx 的 Guideline 文件如下 https://developer.android.com/reference/androidx/constraintlayout/widget/Guideline 其中講到 垂直的參考線,其寬度為 0 而水平的參考線,其高度為 0

191212 Kotlin JNI

這幾天在處理 JNI,了解到了以下幾點。 1. package 要一致 2. class name 要一致 3. Method signature 要一致(名稱、參數與回傳型別) 4. Method 數量要一致(沒用到的也要宣告) 5. static method 要放在 companion object 裡 6. static method 前還要加上 @JvmStatic 舉例如下: class JniKotlinExample {     companion object     {         // static field 放這裡         init         {             System.loadLibrary( "JNIname" )         } // Init         @JvmStatic         external fun staticMethod( i: Int ): String?     } // Companion Object     // instance field 與 Method 放這裡 } // Class JniKotlinExample

191204 EasyPermissions hasPermissions

如果在 Kotlin 中呼叫 EasyPermissions.hasPermissions( Context, String...) 此函式第二個參數為 vararg 可以直接把 Permission 一個一個傳入 例: EasyPermissions.hasPermissions( this, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE ) 也可以將要判斷的 Permissions 以陣列的方式傳入 但在 Kotlin 中,必須在陣列前加上星號(*)才能正確的傳入。 例: val perms = arrayOf( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE ) EasyPermissions.hasPermissions( this, *perms ) 參考來源: https://github.com/googlesamples/easypermissions/issues/197 https://kotlinlang.org/docs/reference/functions.html      關鍵字:"variable number of arguments", "vararg"

191203 Android Realm

如果您遇上了以下這樣的問題 RealmException, xxx is not part of the schema for this Realm. 網路上的 Solution 都 try 過了一遍還是無解 可以看一下新增的 RealmObject / RealmModel 是否跟 RealmConfiguration 是在同一個 Module --- 如果不是同一個 Module 把新增的 RealmObject / RealmModel 移至 RealmConfiguration 所屬的 Module 中 此問題應該就可解決。