A. android API中被忽略的幾個函數介面
1、Throwable介面中的getStackTrace()方法(或者Thread類的getStackTrace()方法),根據這個方法可以得到函數的逐層調用地址,其返回值為StackTraceElement[];
2、StackTraceElement類,其中四個方法getClassName(),getFileName(),getLineNumber(),getMethodName()在調試程序列印Log時非常有用;
3、UncaughtExceptionHandler介面,再好的代碼異常難免,利用此介面可以對未捕獲的異常善後;
使用參見:Android使用UncaughtExceptionHandler捕獲全局異常
4、Resources類中的getIdentifier(name, defType, defPackage)方法,根據資源名稱獲取其ID,做UI時經常用到;
5、View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE來判斷的(╯□╰);(謝評論提醒,這裡面其實有一個坑:【android】view.isShown ()的用法)
6、Arrays類中的一系列關於數組操作的工具方法:binarySearch(),asList(),equals(),sort(),toString(),OfRange()等;
Collections類中的一系列關於集合操作的工具方法:sort(),reverse()等;
7、android.text.format.Formatter類中formatFileSize(Context, long)方法,用來格式化文件Size(B → KB → MB → GB);
8、android.media.ThumbnailUtils類,用來獲取媒體(圖片、視頻)縮略圖;
9、String類中的format(String, Object...)方法,用來格式化strings.xml中的字元串(多謝 @droider An 提示:Context類中getString(int, Object... )方法用起來更加方便);
10、View類中的三個方法:callOnClick(),performClick(),performLongClick(),用於觸發View的點擊事件;
11、TextUtils類中的isEmpty(CharSequence)方法,判斷字元串是否為null或"";
12、TextView類中的append(CharSequence)方法,添加文本。一些特殊文本直接用+連接會變成String;
13、View類中的getDrawingCache()等一系列方法,目前只知道可以用來截圖;
14、DecimalFormat類,用於字串格式化包括指定位數、百分數、科學計數法等;
15、System類中的array(src, srcPos, dest, destPos, length)方法,用來數組;
16、Fragment類中的onHiddenChanged(boolean)方法,使用FragmentTransaction中的hide(),show()時貌似Fragment的其它生命周期方法都不會被調用,太坑爹!
17、Activity類中的onWindowFocusChanged(boolean),onNewIntent(intent)等回調方法;
18、View類中的getLocationInWindow(int[])方法和getLocationOnScreen(int[])方法,獲取View在窗口/屏幕中的位置;
19、TextView類中的setTransformationMethod(TransformationMethod)方法,可用來實現「顯示密碼」功能;
20、TextWatcher介面,用來監聽文本輸入框內容的改變,可用來實現一系列具有特殊功能的文本輸入框;
21、View類中的setSelected(boolean)方法結合android:state_selected=""用來實現圖片選中效果;
22、Surface設置透明:SurfaceView.setZOrderOnTop(true);
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);但是會擋住其它控制項;
23、ListView或GridView類中的setFastScrollEnabled(boolean)方法,用來設置快速滾動滑塊是否可見,當然前提是item夠多;
24、PageTransformer介面,用來自定義ViewPager頁面切換動畫,用setPageTransformer(boolean, PageTransformer)方法來進行設置;
25、apache提供的一系列jar包:commons-lang.jar,commons-collections.jar,commons-beanutils.jar等,裡面很多方法可能是你曾經用幾十幾百行代碼實現過的,但是執行效率或許要差很多,比如:ArrayUtils,StringUtils……;
26、AndroidTestCase類,Android單元測試,在AndroidStudio中使用非常方便;
27、TextView類的setKeyListener(KeyListener)方法;
其中DigitsKeyListener類,使用getInstance(String accepted)方法即可指定EditText可輸入字元集;
28、ActivityLifecycleCallbacks介面,用於在Application類中監聽各Activity的狀態變化;
29、Context類中的createPackageContext(packageName, flags)方法,可用來獲取指定包名應用程序的Context對象。
B. 開發android應用需要哪些api
API 級別是一個整數值,它唯一標識了某版本 Android 平台所提供的 API 的版本。
Android 平台提供了一整套 API,應用程序可以用這些 API 與底層系統進行交互。 這套API由以下部分組成:
核心包和類
Manifest 文件中使用的 XML 格式的元素和屬性聲明
聲明和訪問資源時所用的 XML 格式的元素和屬性
一些預設的 Intent
應用程序可請求的許可權以及系統預設的許可權
Android 平台每個較高版本都會包含之前的 API 更新。
API 的更新機制使得新版本的 API 可以與早期版本保持兼容。 也就是說,大部分的 API 改動都是新增功能,或是引入新 API ,或是替代原有功能。 作為 API 升級過程中的一部分工作,被替換的舊功能被視為過時功能但不會被刪除。 因此,現有的應用程序仍然可以使用這些過時的功能。 在極少數情況下,一部分 API 可能會被修改或刪除,通常這種改動只是為了確保 API 的穩定性及應用程序或系統的安全性。 早期版本的 API 剩餘部分都將原封不動地帶入新版本。
Android 平台提供的每個版本的 API 都用一個整數值標識,名為「API級別」。 每個版本的 Android 平台只對應支持一個 API 級別,雖然這隱含了對所有之前版本 API 級別的支持(直至 API 級別 1)。 Android 平台的第一個版本提供了 API 級別 1 ,後續版本的級別依次遞增。
下表給出了 Android 平台每個版本對應支持的 API 級別。