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. packagecom.myShortCut;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.net.Uri;
  5. importandroid.os.Bundle;
  6. importandroid.os.Parcelable;
  7. importandroid.view.View;
  8. importandroid.view.View.OnClickListener;
  9. importandroid.widget.Button;
  10. /*
  11. *桌面组件->快捷方式->在应用程序中添加快捷方式
  12. */
  13. publicclassHelloShortCutextendsActivityimplementsOnClickListener
  14. {
  15. privateButtonbt_fire=null;
  16. privateButtonbt_police=null;
  17. privateIntentdirectCall=null;
  18. privatefinalStringACTION_ADD_SHORTCUT="com.android.launcher.action.INSTALL_SHORTCUT";
  19. /**Calledwhentheactivityisfirstcreated.*/
  20. @Override
  21. publicvoidonCreate(BundlesavedInstanceState)
  22. {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. bt_fire=(Button)findViewById(R.id.bt_fire);
  26. bt_police=(Button)findViewById(R.id.bt_police);
  27. bt_fire.setOnClickListener(this);
  28. bt_police.setOnClickListener(this);
  29. directCall=newIntent(Intent.ACTION_CALL);
  30. }
  31. @Override
  32. publicvoidonClick(Viewv)
  33. {
  34. //TODOAuto-generatedmethodstub
  35. IntentaddShortCut=newIntent(ACTION_ADD_SHORTCUT);
  36. StringnameToDial=null;
  37. Parcelableicon=null;
  38. switch(v.getId())
  39. {
  40. caseR.id.bt_fire:
  41. nameToDial="119";
  42. icon=Intent.ShortcutIconResource.fromContext(this,
  43. R.drawable.fire);
  44. break;
  45. caseR.id.bt_police:
  46. nameToDial="110";
  47. /*
  48. *ShortcutIconResource是Intent的
  49. *一个内部类,专门用来构造快捷方式的图标,而Intent又实现了Parcelable接口,所以Intent对象和
  50. *ShortcutIconResource对象都可以用putExtra(String,Parcelable)这一重载方法将信息填入到
  51. *广播Intent的附加信息中去。
  52. */
  53. icon=Intent.ShortcutIconResource.fromContext(this,
  54. R.drawable.police);
  55. break;
  56. default:
  57. break;
  58. }
  59. addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME,nameToDial);
  60. addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,icon);
  61. directCall.setData(Uri.parse("tel:"+nameToDial));
  62. addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,directCall);
  63. this.sendBroadcast(addShortCut);
  64. }
  65. }

运行结果:

1、

2、 (Toast是系统提供的)

3、(成功添加之后)

4、 (删除快捷图标请长按图标,然后拖到下方“抽屉”区域,那个“抽屉”就会变为垃圾箱的图标)

参考书籍:《深入浅出GoogleAndroid》

更多相关文章

  1. Android(安卓)API Guides---App Manifest
  2. Android将死,Web OS才是王道——通过Google Chrome OS看Android
  3. 在 Android(安卓)上使用 XML 和 JSON,第 2 部分: 交付混合了 JSON
  4. Android沉浸式模式实现导航栏与状态栏的隐藏,上滑呼出导航栏与状
  5. Android多媒体开发 Pro Android(安卓)Media 第二章 创建自定义相
  6. Android(安卓)判断当前介面是否是在桌面
  7. 起来越像Android了?iOS 14从Android(安卓)中“窃取“ 了这8个有用
  8. Android菜鸟的成长笔记(4)——你真的理解了吗?
  9. Android编译错误:You have tried to change the API from what ha

随机推荐

  1. Android(安卓)NDK开发起步Hello Jni
  2. 【Android】 使用okhttp实现注册登录功能
  3. Android(安卓)----可伸缩的控件
  4. QuickSand图片点击后分裂成几份消失效果
  5. android小特效(持续更新...)
  6. 新建Android项目的时候,选择SDK的区别
  7. Appium元素定位(name、classname、相对路
  8. android中判断sim卡状态和读取联系人资料
  9. nodejs的交叉(跨平台)编译(to android)
  10. 【Android】强大的SpannableStringBuilde