Android桌面组件开发之桌面快捷方式(一)
16lz
2021-01-24
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:- packagecom.myShortCut;
- importandroid.app.Activity;
- importandroid.content.Intent;
- importandroid.net.Uri;
- importandroid.os.Bundle;
- importandroid.os.Parcelable;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- /*
- *桌面组件->快捷方式->在应用程序中添加快捷方式
- */
- publicclassHelloShortCutextendsActivityimplementsOnClickListener
- {
- privateButtonbt_fire=null;
- privateButtonbt_police=null;
- privateIntentdirectCall=null;
- privatefinalStringACTION_ADD_SHORTCUT="com.android.launcher.action.INSTALL_SHORTCUT";
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState)
- {
- 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=newIntent(Intent.ACTION_CALL);
- }
- @Override
- publicvoidonClick(Viewv)
- {
- //TODOAuto-generatedmethodstub
- IntentaddShortCut=newIntent(ACTION_ADD_SHORTCUT);
- StringnameToDial=null;
- Parcelableicon=null;
- switch(v.getId())
- {
- caseR.id.bt_fire:
- nameToDial="119";
- icon=Intent.ShortcutIconResource.fromContext(this,
- R.drawable.fire);
- break;
- caseR.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》
更多相关文章
- Android(安卓)API Guides---App Manifest
- Android将死,Web OS才是王道——通过Google Chrome OS看Android
- 在 Android(安卓)上使用 XML 和 JSON,第 2 部分: 交付混合了 JSON
- Android沉浸式模式实现导航栏与状态栏的隐藏,上滑呼出导航栏与状
- Android多媒体开发 Pro Android(安卓)Media 第二章 创建自定义相
- Android(安卓)判断当前介面是否是在桌面
- 起来越像Android了?iOS 14从Android(安卓)中“窃取“ 了这8个有用
- Android菜鸟的成长笔记(4)——你真的理解了吗?
- Android编译错误:You have tried to change the API from what ha