Home是Android裝置開啟後第一個與使用者互動的應用程式。在其他應用程式運行於前台時,Home也將一直運行於後台。
在螢幕解析度為320*480像素的Android裝置上,豎屏時這個案頭有3快320*400px的地區組成,而每塊地區即每屏被劃分成16個80*100像素的儲存格;橫屏時則是由3塊424*296px的地區構成,每屏也是被劃分成了16個儲存格,但每個儲存格的大小為106*74px。(Android2.2系統現在已經達到了五屏)。
具體尺寸請看圖:
在Launcher的案頭可以添加三種類型的組件,分別是捷徑、即時檔案夾和案頭組件,其中案頭捷徑和即時檔案夾在案頭地區上均佔一個儲存格的大小,而案頭組件(widget)則根據功能的需要佔用一個或多個儲存格。
建立捷徑的方法有兩種:1、 在應用程式中構建一個Intent,然後以Broadcast的形式通知Launcher建立一個捷徑;2、 為應用程式的組件註冊一個符合特定條件的IntentFilter,然後就可以直接在Launcher的案頭添加啟動該組件的捷徑了。
看看添加捷徑的代碼(第一種):
MainActivity的代碼:(布局代碼略去)
Code:
- package com.myShortCut;
-
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Parcelable;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- /*
- * 案頭組件->捷徑->在應用程式中添加捷徑
- */
- public class HelloShortCut extends Activity implements OnClickListener
- {
- private Button bt_fire = null;
- private Button bt_police = null;
- private Intent directCall = null;
- private final String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
-
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- bt_fire = (Button) findViewById(R.id.bt_fire);
- bt_police = (Button) findViewById(R.id.bt_police);
-
- bt_fire.setOnClickListener(this);
- bt_police.setOnClickListener(this);
-
- directCall = new Intent(Intent.ACTION_CALL);
- }
-
-
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- Intent addShortCut = new Intent(ACTION_ADD_SHORTCUT);
- String nameToDial = null;
- Parcelable icon = null;
-
- switch (v.getId())
- {
- case R.id.bt_fire:
- nameToDial = "119";
- icon = Intent.ShortcutIconResource.fromContext(this,
- R.drawable.fire);
- break;
- case R.id.bt_police:
- nameToDial = "110";
- /*
- * ShortcutIconResource是Intent的
- * 一個內部類,專門用來構造捷徑的表徵圖,而Intent又實現了Parcelable介面,所以Intent對象和
- * ShortcutIconResource對象都可以用putExtra(String, Parcelable)這一重載方法將資訊填入到
- * 廣播Intent的附加資訊中去。
- */
- icon = Intent.ShortcutIconResource.fromContext(this,
- R.drawable.police);
- break;
- default:
- break;
- }
-
- addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME, nameToDial);
- addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
- directCall.setData(Uri.parse("tel:" + nameToDial));
- addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, directCall);
-
- this.sendBroadcast(addShortCut);
- }
- }
運行結果:
1、
2、 (Toast是系統提供的)
3、(成功添加之後)
4、 (刪除快捷表徵圖請長按表徵圖,然後拖到下方“抽屜”地區,那個“抽屜”就會變為垃圾箱的表徵圖)
參考書籍:《深入淺出GoogleAndroid》