發表文章

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