Android案頭組件開發之案頭捷徑(一)

來源:互聯網
上載者:User

 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:
  1. package com.myShortCut;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.net.Uri;  
  6. import android.os.Bundle;  
  7. import android.os.Parcelable;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. /* 
  12.  * 案頭組件->捷徑->在應用程式中添加捷徑 
  13.  */  
  14. public class HelloShortCut extends Activity implements OnClickListener  
  15. {  
  16.     private Button bt_fire = null;  
  17.     private Button bt_police = null;  
  18.     private Intent directCall = null;  
  19.     private final String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";  
  20.   
  21.   
  22.     /** Called when the activity is first created. */  
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState)  
  25.     {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.main);  
  28.   
  29.         bt_fire = (Button) findViewById(R.id.bt_fire);  
  30.         bt_police = (Button) findViewById(R.id.bt_police);  
  31.   
  32.         bt_fire.setOnClickListener(this);  
  33.         bt_police.setOnClickListener(this);  
  34.   
  35.         directCall = new Intent(Intent.ACTION_CALL);  
  36.     }  
  37.   
  38.   
  39.     @Override  
  40.     public void onClick(View v)  
  41.     {  
  42.         // TODO Auto-generated method stub  
  43.         Intent addShortCut = new Intent(ACTION_ADD_SHORTCUT);  
  44.         String nameToDial = null;  
  45.         Parcelable icon = null;  
  46.   
  47.         switch (v.getId())  
  48.         {  
  49.             case R.id.bt_fire:  
  50.                 nameToDial = "119";  
  51.                 icon = Intent.ShortcutIconResource.fromContext(this,  
  52.                     R.drawable.fire);  
  53.                 break;  
  54.             case R.id.bt_police:  
  55.                 nameToDial = "110";  
  56.                 /* 
  57.                  * ShortcutIconResource是Intent的 
  58.                  * 一個內部類,專門用來構造捷徑的表徵圖,而Intent又實現了Parcelable介面,所以Intent對象和 
  59.                  * ShortcutIconResource對象都可以用putExtra(String, Parcelable)這一重載方法將資訊填入到 
  60.                  * 廣播Intent的附加資訊中去。 
  61.                  */  
  62.                 icon = Intent.ShortcutIconResource.fromContext(this,  
  63.                     R.drawable.police);  
  64.                 break;  
  65.             default:  
  66.                 break;  
  67.         }  
  68.   
  69.         addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME, nameToDial);  
  70.         addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);  
  71.         directCall.setData(Uri.parse("tel:" + nameToDial));  
  72.         addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, directCall);  
  73.   
  74.         this.sendBroadcast(addShortCut);  
  75.     }  
  76. }  

運行結果:

1、 

2、 (Toast是系統提供的)

3、(成功添加之後)

4、 (刪除快捷表徵圖請長按表徵圖,然後拖到下方“抽屜”地區,那個“抽屜”就會變為垃圾箱的表徵圖)

參考書籍:《深入淺出GoogleAndroid》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: