1.獲取屏幕的分辨率
在 Activity 里使用如下代碼,寬度和高度的單位是像素
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
2.繪制文本
使用 FontMetrics 類
參考
http://www.javaeye.com/topic/474526
3.禁止自動橫豎屏切換
在AndroidManifest.xml的Activity節點加入如下屬性
android:screenOrientation="portrait"
portrait是縱向,landscape是橫向
4.Resources and Assets
無論是使用Res\raw還是使用Asset存儲資源文件,文件大小UNCOMPRESS限制為1MB
參考
http://wayfarer.javaeye.com/blog/547174
5.SDK 1.6 新增加SD卡寫入權限
在AndroidManifest.xml加入以下代碼
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
SDK1.6之前的項目自適應,無需此權限也可以寫入SD卡。
6.在eclipse中查看Android Framework源代碼
代碼下載
- SDK 1.5 http://www.box.net/shared/16au19tqlp
- SDK 1.6 http://www.box.net/shared/dh4dr9ir7j
- SDK 2.2 http://www.box.net/shared/dic2t0blj1
參考
http://www.javaeye.com/topic/534010
7.給View注冊ContextMenu
void setOnCreateContextMenuListener(View.OnCreateContextMenuListener l)
Register a callback to be invoked when the context menu for this view is being built.
8.給Preference設置Intent
Sets an Intent
to be used for startActivity(Intent)
when this Preference is clicked.
9.包含CheckBox的ListView
ListView item中加入checkbox后onListItemClick 事件無法觸發。
原因:checkbox的優先級高于ListItem于是屏蔽了ListItem的單擊事件。
解決方案:設置checkbox的android:focusable="false"
10.取得當前的Locale
Locale locale = context.getResources().getConfiguration().locale;
11.使用android.text.format.Time類代替java.util.Calendar類
The Time class is a faster replacement for the java.util.Calendar and java.util.GregorianCalendar classes. An instance of the Time class represents a moment in time, specified with second precision. It is modelled after struct tm, and in fact, uses struct tm to implement most of the functionality.
12.調整WebView字體大小
WebView.getSettings().setDefaultFontSize()
WebView.getSettings().setDefaultZoom()
13.View Animation總結
參考
- http://www.eoeandroid.com/viewthread.php?tid=564&highlight=
- http://www.eoeandroid.com/viewthread.php?tid=775
14.檢查網絡狀態
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return (info != null && info.isConnected());
}
public static boolean isWifiConnected(Context context) {
return getNetworkState(context, ConnectivityManager.TYPE_WIFI) == State.CONNECTED;
}
public static boolean isMobileConnected(Context context) {
return getNetworkState(context, ConnectivityManager.TYPE_MOBILE) == State.CONNECTED;
}
private static State getNetworkState(Context context, int networkType) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getNetworkInfo(networkType);
return info == null ? null : info.getState();
}
需要加入權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
15.Parse JSON String
參考
- http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/
- http://wiki.fasterxml.com/JacksonInFiveMinutes
- http://stackoverflow.com/questions/2818697/sending-and-parsing-json-in-android
16.設置EditText的輸入模式
url, password, email, 電話鍵盤等
設置 android:inputType 屬性
17.Crash Report
18.用戶解鎖消息
android.intent.action.USER_PRESENT
只能在代碼里注冊Receiver
19.屏幕消息
android.intent.action.SCREEN_ON
android.intent.action.SCREEN_OFF
只能在代碼里注冊Receiver