編輯:關於Android編程
1.每個Activity都有一個自己的window:
在activity的onCreate方法中,調用setContentView方法,其調用的是getWindow().setContentView()方法。
而getWindow()返回的Window 對象其實是Window抽象類的子類PhoneWindow.
mWindow = PolicyManager.makeNewWindow(this);
該句code是在Activity的attach()方法中調用。
2.在UI線程中調用invalidate()方法,即執行刷新操作—調用view 的onDraw()方法,但是如果在UI的子線程中,需要使用postInvalidate()方法。
3.應用程序寫日志的Tag獲取,如下:
private static String TAG = CameraTestActivity.class.getSimpleName();
4.java方法中可變參數支持,如下例子:
[java]
private static String findSettableValue(Collection<String> supportedValues,
String... desiredValues) {
String result = null;
if (supportedValues != null) {
for (String desiredValue : desiredValues) {
if (supportedValues.contains(desiredValue)) {
result = desiredValue;
break;
}
}
}
return result;
}
//調用:
1)
flashMode = findSettableValue(parameters.getSupportedFlashModes(),
Camera.Parameters.FLASH_MODE_TORCH, // string 常量"torch"
Camera.Parameters.FLASH_MODE_ON); // string常量"on"
2)
flashMode = findSettableValue(parameters.getSupportedFlashModes(),
Camera.Parameters.FLASH_MODE_OFF); // string常量"off"
5.分享接口:
[java]
Intent i=new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT,"這裡是標題");
i.putExtra(Intent.EXTRA_TEXT, "這裡是分享內容");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(i, "分享"));
6.使用應用程序包名啟動外部應用:
[java]
//1)使用Intent的setComponent方法
Intent intent = new Intent();
intent.setComponent(new ComponentName(“包名”, “包名.主類名”));
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
//2)使用包管理器
Intent intent = new Intent();
intent = getPackageManager().getLaunchIntentForPackage(“包名”);
startActivity(intent);
7.使用Collections接口進行排序:
[java]
//1)定義一個排序的類:
private static class ByFirstStringComparator implements Comparator<String[]>, Serializable {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareTo(o2[0]);
}
}
//2)使用:
Collections.sort(listArray, new ByFirstStringComparator());
8.再按一次後退鍵退出應用程序:
[java]
private static Boolean isExit = false;
private static Boolean hasTask = false;
Timer tExit = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
isExit = false;
hasTask = true;
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("TabHost_Index.java onKeyDown");
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(isExit == false ) {
isExit = true;
Toast.makeText(this, "再按一次後退鍵退出應用程序", Toast.LENGTH_SHORT).show();
if(!hasTask) {
tExit.schedule(task, 2000);
}
} else {
finish();
System.exit(0);
}
}
return false;
}
9.開啟和關閉Android APN網絡,即接入點設置
10.eclipse xml 編輯設置:
1)修改Eclipse的XML格式化配置
這一步的配置是使格式化的效果為控件的每個屬性配置占一行。進入 Window/Preferences,展開到 XML/XML Files/Editor,
勾選 Split multiple attributes each on a new line
經此配置後,每次使用快捷鍵 Ctrl+Shift+F 鍵格式化後每個屬性配置就會占一行。
2)壓縮節點的聲明方式
這步的目的是將沒有子節點的元素的聲明方式進行壓縮,如將 <TextView ...></TextView>轉化為 <TextView .../>。
方法為在XML文件內空白地方點擊鼠標右鍵,選擇 Source/Cleanup Document...
11.殺死後台進程
[java]
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses("name.of.your.package");
需要一個權限
KILL_BACKGROUND_PROCESSES
12.獲取手機型號和系統版本號
[java]
<span style="color:#cccccc;"></span><pre name="code" class="java">String sdk=android.os.Build.VERSION.SDK;// SDK號
String model=android.os.Build.MODEL; // 手機型號
String release=android.os.Build.VERSION.RELEASE;</pre><pre name="code" class="java">// android系統版本號</pre>
<pre></pre>
<pre name="code" class="java"><pre name="code" class="java">// 獲取手機的DeviceID,即手機的唯一標識。
// GSM網絡:IMEI號
// ESN,CDMA網絡:MEID號
// 獲取不到時,返回null
// 需要權限:READ_PHONE_STATE
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = tm.getDeviceId();
</pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
</pre>
13.使用Handler發送消息:
[java]
1) 創建Handler:
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
swtich(msg.what){
case msgId:
// 消息為msgId的處理
break;
case msgId2:
// 消息為msgId2的處理
break;
default:
break;
}
}
}
2) 程序中發送消息:
Message m = new Message();
m.what=msgid;
handler.sendMessage(m);
如果需要傳遞數據,可以使用如下:
Bundle b = new Bundle();
b.putString(key,value);
b.putString(key1,value2);
m.setData(b);
handler.sendMessage(b);
14.使用SharePreferences 保存數據:
[java]
1) 從文件中獲取值:
// 得到SharePreferences對象,每個相同的sharedFileName返回的是相同的對象,即單例模式。
//0:Context.MODE_PRIVATE
//1:Context.MODE_WORLD_READABLE
//2:Context.MODE_WORLD_WRITEABLE
//3:Context.MODE_APPEND
//4:Context.MODE_MULTI_PROCESS
//8:Context.MODE_ENABLE_WRITE_AHEAD_LOGGING
SharedPreferences configSharedPref = mContext.getSharedPreferences("sharedFileName",0);
String str = configSharedPref.getString("key","defaultValue");
2) 修改保存的數據:
SharePreferences.Editor configEditor = configSharedPref.edit();
configEditor.putString("key","new value");
configEdit.commit();
15.創建桌面快捷方式:
[java]
Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name));
shortcutIntent.putExtra("duplicate", false);
Intent appIntent = new Intent(mContext, MainActivity.class);
appIntent.setAction("android.intent.action.MAIN");
appIntent.addCategory("android.intent.category.LAUNCHER");
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, appIntent);
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(mContext, R.drawable.icon);
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,iconRes);
sendBroadcast(shortcutIntent);
組件—服務後台長期運行的沒有界面的一個activity。 電話竊聽器:需求:1.沒有界面,一般用戶看不到,開機自動啟動2.長期的後台運行,監視當前用
效果圖如下:PopupWindow 是一個可以顯示在當前 Activity 之上的浮動容器,PopupWindow 彈出的位置是能夠改變的,按照有無偏移量,可以分為無偏移
新浪微博是全中國最主流,最具人氣,當前最火爆的微博產品。用一句話隨意記錄生活,用手機隨時隨地發微博。微博同樣也可以和朋友聊私信,你可以關注你想關注的人,了解
本來不想寫關於struts2的學習筆記了,由於感覺關於struts2的理論知識比較簡單,所以才打算不寫,但是在學習過程中,特別是在Myeclipse中編碼練習的時候,遇到