安卓原生工具類--android開發不要盲目寫工具了

[TOC]

前言

Android SDK原生 API中,有一些常用的工具類,運用得當可以省事省力省時,何況還是Android官方提供的,現在收集整理一些出來。也許這里面就有你想要的,不用自行寫工具類實現了

開發必備

PackageManager.checkSignatures () 檢查包簽名。
FragmentManager.enableDebugLogging () 開啟Fragment的debug日志記錄。**
onTrimMemory 內存緊張時候Android系統回調此方法,可以在里面進行內存回收。
TimingLogger,SDK自帶打印時間戳工具。可以分析某個方法執行的時間。用以性能分析。
官方文檔說明使用方法(翻譯):
一個實用程序類,幫助日志計時在方法調用中進行拆分。典型的用法是:
TimingLogger timings = new TimingLogger("TAG", "methodA"); 
// ... do some work A ... 
timings.addSplit("work A");
// ... do some work B ... 
timings.addSplit("work B");
timings.dumpToLog(); //輸出到日志
The dumpToLog call would add the following to the log:
D/TAG ( 3459): methodA: begin 
D/TAG ( 3459): methodA: 9 ms, work A 
D/TAG ( 3459): methodA: 1 ms, work B 
D/TAG ( 3459): methodA: end, 16 ms
但是,使用的時候會發現,有可能打印不出log,沒關系,在命令行輸入這條命令:
  adb shell setprop log.tag.TAG VERBOSE  //注意這里的tag.后面跟的TAG需要和設置的一樣
  //這條命令的意思是,把TAG為timing的這條log級別設置為VERBOSE,在v以上的Log都能打印出來。 
Application.registerActivityLifecycleCallbacks 注冊activity的生命周期方法回調。
可以用做全局Activity關閉管理,
獲取棧頂Acitivity彈出提示框………………

格式化相關

DateUtils.formatDateTime()   格式化時間日期格式。
DateFormat.format("yyyy-MM-dd HH:mm:ss", System.currentTimeMillis()); 
DateFormat.format("yy/MM/dd", Calendar.getInstance());
DateFormat.format("yyyy", new Date(2016,11,17));
Formatter.formatFileSize() 處理文件大小格式化工具。把文件大小轉換為KB,MB,GB這樣的字符串。
PhoneNumberUtils.formatNumber () 格式化電話號碼。

DateUtils

Android本身提供的日期時間工具類,里面有很多實用的工具集合。

DateUtils.isToady()   判斷傳入的日期時間是否為當天。  
DateUtils.getRelativeTimeSpanString  可以計算時間間隔比如“幾天前”,“幾個月前”,等等。

存貯相關

Context.getCacheDir() 獲取系統默認的緩存路徑。
ActivityManager.clearApplicationUserData() 清理用戶產生的數據。恢復的干凈的初始階段。
Environment.getExternalStoragePublicDirectory() 外部存儲器公共存儲文件夾。

文字相關

Linkify.addLinks() 為一個TextView添加鏈接。
TextUtils.isEmpty()  判空 同java中StringUtils.isEmpty()
UrlQuerySanitizer 對一個URL鏈接進行檢查和數據提取、解析等。

控件相關

AutoScrollHelper 在滾動View中長按邊緣滾動工具類。
ViewStub初始化階段不加載任何View,然而隨后以加載開發者給定布局文件。在懶加載 模式的View初始化過程中適合占位。
ThumbnailUtils 處理縮略圖,可以處理本地視頻獲取第一針圖片
android:weightSum 控制根布局總的權重和。(不常用)線性布局權重子控件直接設置亦可
ValueAnimator.reverse() 取消正在執行的動畫。

排序

AlphabetIndexer 字母索引類。
SortedList 排序列表。

事務相關(觸摸,點擊事件分發……)

android:duplicateParentState="true"  子View跟隨其Parent的狀態,如按擊等。比如某個按鈕很小,想要擴大其點擊區域,通常會再給其包裹一層布局,將點擊事件寫到Parent上,這時候如果希望被包裹按鈕的點擊效果對應的Selector繼續生效,就這么做。
getParent().requestDisallowInterceptTouchEvent(true) 屏蔽父view對事件的攔截處理。
HandlerThread 用以實現常見的Thread+Handler模型實現的復合型類。

廣播消息

LocalBroadcastManager 本地廣播。更安全的本地廣播機制,類似于EventBus的簡化版。
Messenger 對AIDL的簡化操作。

界面相關

過渡

android:animateLayoutChanges="true" 使布局中的某些子view的消失和增加具有動畫平滑過渡效果。
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT) 設置SurfaceView透明。
ArgbEvaluator.evaluate(float fraction, Object startValue, ObjectendValue) 顏色漸變,常見于導航欄、標題欄的顏色。

Fragment

FragmentManager.enableDebugLogging () 開啟Fragment的debug日志記錄。**

Fragment的setUserVisibleHint 在這個方法里面可以實現Fragment的懶加載,比如:

@Override  
public void setUserVisibleHint(boolean isVisibleToUser) {   
       if (isVisibleToUser) {  
             //加載
        } else {  
             //不加載
        }  
}  

這在ViewPager結合Fragment的代碼中實現懶加載很有用。因為Android官方默認當創建第一個Fragment時回創建第二個Fragment以確保用戶平滑滑動,第二個View已經被創建,這在某些時候會帶來一定的加載開銷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容