發表文章

目前顯示的是 2018的文章

Android 另類的Guide Line - Barrier

圖片
ConstraintLayout的Barrier是1.1版本引入的一個非常實用的功能: https://developer.android.com/reference/android/support/constraint/Barrier Barrier 是用多個View 作為限制源來決定自身位置的一種輔助線

Android TextView autosizing 自動調整大小

圖片
遇見問題:當一個控件顯示的文本有點長的時候,可能在屏幕小的設備上就會變得顯示不完整,特別是那種不允許文本省略的按鈕。 最近又有這個需求,並且發現官方已經支持這個自適應大小的TextView了。 Android 8.0(API級別26)允許您指示TextView文本大小自動擴展或收縮,以根據其TextView特徵和邊界填充其佈局。此設置可以更輕鬆地使用動態內容優化不同屏幕上的文本大小。

Android ConstraintLayout - ConstraintSet 動態修改約束

圖片
原文地址: Constraint Layout [Animations | Dynamic Constraints | UI by Java] ( What the hell is this )[Part3] ConstraintLayout 熟悉的差不多了,你可以使用各種約束定位出你的框架大小位置,裡面也有很多很好用的工具,包含Guideline、bias、ratio、chain 等等 . . . ,不過今天要講的是如何動態修改約束。 作者 將基於上面的APP 來進行這篇文章的論述。 我有一個constraint layout ,這裡面總共有五個按鈕。 應用和重置按鈕除了應用和重置我們的動畫之外不做其他事情。 另外三個按鈕被用來進行我們的動畫。 我們通過應用不同的動畫來使這三個按鈕共同協作。 最重要的一點,我們在開始之前應該知道這三個按鈕的constraint。 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/applyButton" android:text="Apply" ... /> <Button android:id="@+id/resetButton" android:text="

Android 動畫利器MotionLayout

圖片
前言 constraintLayout 搭配constraintSets使用TransitionManager可以實現”對齊”動畫轉換 而上述這種方法,一但動畫開始,他是不可中斷的,您也無法告訴系統轉到轉換中的特定點 而MotionLayout解決了所有這些問題 MotionLayout 是一個在 ConstraintLayout 2.0 版本庫中新增的類,用於幫助 Android 開發者,在他們的 App 中,管理手勢以及動畫組件。 MotionLayout 作為 連接佈局過度和復雜的手勢操作之間的橋樑 而生。你可以把它當做介於屬性動畫框架、TransitionManager 和 CoordinatorLayout 之間的功能集合。

Android abstract class和interface

abstract class 和 interface 是Java語言中對於抽像類定義進行支持的兩種機制,正是由於這兩種機制的存在,才賦予了Java強大的面向對像能力。其實,兩者之間還是有很大的區別的,以下就會進行說明,若有誤,請留言糾正我。 在 abstract class 方式中,可以有自己的數據成員,也可以有非abstarct的成員方法,而在 interface 方式的實現中,只能夠有靜態的不能被修改的數據成員(也就是必須是static final的,不過在interface中一般不定義數據成員),所有的成員方法都是abstract的。從某種意義上說,interface是一種特殊形式的abstract class。

Android Keyguard 呼叫螢幕解鎖驗證

圖片
android 的 Keyguard 可以用來呼叫螢幕解鎖來驗證,運用在有做自動登入時,避免使用者手機被偷,可以在app的重要功能再次要求解鎖 先檢查手機是否有開啟螢幕鎖定。 在Activity 叫起驗證頁,可以客制Title、Description private void showAuthenticationScreen() { if (keyguardManager.isKeyguardSecure()) { // Custom title description Intent intent = keyguardManager.createConfirmDeviceCredentialIntent("This is a custom title", "This is a custom description"); if (intent != null) { startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS); }else{ this.result.setText("Secure lock screen hasn't set up"); } }else{ this.result.setText("Secure lock screen hasn't set up"); } } 接收解鎖結果: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS) { if (resultCode == RESULT_OK) { this.result.setText("Success"); } else {

撰寫第一支 script - 輸入大量圖片檔名

用途:使用Android Animation-List 需要大量輸入圖片的檔名,我們都需要一組可以重覆或判斷資訊的指令, 身為工程師的我就應該寫個程式解決這件事。 #!/bin/bash for i in {1..104}; do ZERO_NUM=$(printf "%03d" $i); echo \<item >> tmp.txt echo android:drawable=\"@drawable/winning_screen$ZERO_NUM\" >> tmp.txt echo android:duration=\"@integer/winning_gif_duration\"\/\> >> tmp.txt done 副檔名sh 之後command line輸入即可 sh firstScript.sh tmp.txt <item android:drawable="@drawable/winning_screen001" android:duration="@integer/winning_gif_duration"/> <item android:drawable="@drawable/winning_screen002" android:duration="@integer/winning_gif_duration"/> <item android:drawable="@drawable/winning_screen003" android:duration="@integer/winning_gif_duration"/> . . . <item android:drawable="@drawable/winning_screen102" android:duration="@integer/winni

Android DataBinding實現MVVM架構 Get Started

圖片
DataBinding 是Google官方發布的一個框架,顧名思義即為數據綁定,實現了MVVM架構, 增強了xml的功能, 大幅度精簡了java代碼量,使代碼邏輯更加清晰。 MVVM 相對於 MVP,其實就是將 Presenter 層替換成了 ViewModel 層。 DataBinding 能夠省去我們一直以來的findViewById() 步驟,大量減少Activity 內的代碼,數據能夠單向或雙向綁定到layout 文件中,有助於防止內存洩漏,而且能自動進行空檢測以避免空指針異常。

Android 遊戲轉盤動畫 轉盤指針動畫

圖片
原作者Github https://github.com/thanhniencung/LuckyWheel 自己的Github: https://github.com/YangQiRen/LuckyWheel

Android Glide 圓角圖片與圓形圖片

圖片
廢話不多說,先貼程式碼 圓角圖片:

Android文字大小sp和dp的差異

注意到這個問題的原因是因為,每個人手機 系統文字大小 都不一樣,App title或者有些TextView裡面的字變大,導致title文字被切掉一半等問題。

android 適應文字大小變化的圖檔 9-Patch NinePatch

圖片
什麼是NinePatch圖檔 NinePatch是一種「可延展」的PNG圖檔。NinePatch圖檔的用途是製作「可隨文字大小縮放」的圖片。

Android MPAndroidChart自適應Markerview

圖片
前言 Android裡面只要用過圖表的應該都知道 MPAndroidChart 這個庫。這個庫在iOS裡面也有對應 圖表 ,所以一般移動端做 圖表 ,Android和iOS兩端都要實現同樣的效果,他們是不錯的一個選擇。 但是,對於圖表這種包含的情況非常複雜的東西 ,很難滿足大家各種各樣的需求,所以很多都需要自定義。下面就是給大家分享一下自己寫的自適應 MarkerView。 圖片:

Git 代碼管理中 .gitignore 文件無效的解決方法

圖片
在用 Git 進行代碼管理的過程中,我們會發現後添加進去的 .gitignore 文件,或者是中途修改了 .gitignore 文件後,.gitignore 文件沒有生效,我們需要通過清除 track 緩存和 強制 track 來解決問題 在用Git 進行代碼管理的時候,我們會用.gitignore 文件來描述哪些文件是不需要進行版本管理的,也就是被忽略掉。如果我們在第一次提交的時候,忘記添加.gitignore 文件或者在首次添加了.gitignore 文件之後,又對.gitignore 文件進行了修改,你會發現這兩種情況下,.gitignore 文件是不生效的!

Google Api 金鑰權限設定

圖片
在Google cloud platform 的控制台頁面 點選憑證 -> 找到你的API金鑰 -> 點選編輯金鑰

Base64從命令列解碼

在Mac上使用pbpaste 如果剪貼板中有編碼文本,則可以使用pbpaste通過base64管道,而不必手動粘貼到終端。 使用X(xclip)時有相同的命令,但我自己從未使用過這些命令。 使用pbpaste: pbpaste | base64 --decode > ./decode.bin