Android手机桌面
Android提供了一个桌面(用户启动后第一次看到的界面)。手机桌面的作用类似于PC的桌面,通常用于放置一些常用的程序和功能。
在Android桌面上首先看到的壁纸(手机桌面上的图片),还可以看到手机桌面上规则排列的多个图标,这些图标就是Android桌面组件,分别代表快捷方式
与桌面控件
;,每个快捷方式只占用桌面的一个摆放位置;桌面控件可以很大,一个桌面空间可以占据多个摆放位置。
管理手机桌面
Android系统允许普通用户动态地添加、删除桌面组件。
1.删除桌面组件
删除Android桌面组件的步骤如下:
- 在屏幕上长按指定组件,直到桌面上方出现“删除”图标。
- 将指定组件拖到桌面上方的“删除”图标上。
2.添加桌面组件
给Android桌面添加快捷方式的步骤如下:
- 进入手机的程序列表界面,长按需要添加快捷方式的程序,此时可以看到程序图标会自动切换到桌面。
- 拖动该程序图标,将它放到指定位置即可。
为Android桌面添加桌面控件的步骤如下:
- 长按手机桌面,然后单击屏幕右下角的“WIDGETS”按钮,进入Widget列表界面。
- 长按需要添加的桌面控件,此时桌面控件自动切换到桌面。
- 拖动该桌面控件,将其放到指定位置即可。
注意:不同手机操作稍有不同。
改变手机壁纸
Android允许使用WallpaperManager来改变手机壁纸,其方法如下所示:
- setBitmap(Bitmap bitmap):将壁纸设置为bitmap所代表的位图。
- setResource(int resid):将壁纸设置为resid资源所代表的图片。
- setStream(InputStream data):将壁纸设置为data数据所代表的图片。
开发动态壁纸
动态壁纸,就是指手机桌面不再是简单的图片,而是运行中的动画,这个动画是由程序实时绘制的。
在Android应用中开发动态壁纸的步骤如下:
- 开发一个子类继承WallpaperService基类。
- 继承WallpaperService基类时必须重写onCreateEngine()方法,该方法返回WallpaperService.Engine子类对象。
- 我们需要实现WallpaperService.Engine子类,并重写其中的public void onVisibilityChanged(boolean visible)、public void onOffsetsChanged()方法。
定义好Service类之后,需要在AndroidManifest.xml文件中配置如下两项:
- 指定运行状态壁纸,需要
android.permission.BIND_WALLPAPER
权限。 - 为动态壁纸指定
meta-data
配置。
通过程序添加快捷方式
在程序中把一个软件的快捷方式添加到桌面上,只需要如下三步即可:
- 创建一个添加快捷方式的Intent,该Intent的Action属性值应该为
com.android.launcher.action.INSTALL_SHORTCUT
。 - 通过为该Intent添加Extra属性来设置快捷方式的标题、图标及快捷方式对应启动程序。
- 调用sendBroadcast()方法发送广播即可添加快捷方式。
管理桌面控件
桌面控件,就是指能直接显示在Android系统桌面上的小程序。
开发桌面控件
桌面控件是通过BroadcastReceiver的形式来进行控制的,因此每个桌面控件都对应一个BroadcastReceiver。
开发桌面控件,我们只需要开发一个继承AppWidgetProvider的子类,并重写APPWidgetProvider不同状态的生命周期方法即可。APPWidgetProvider里提供了如下4个不同的生命周期方法:
- onUpdate():负责更新桌面控件的方法;实现桌面控件通常会考虑重写该方法。
- onDelete():当一个或多个桌面控件被删除时回调该方法。
- onEnabled():当接收到ACTION_APPWIDGET_ENABLED Broadcast时回调该方法。
- onDisabled():当接收到ACTION_APPWIDGET_DISABLED Broadcast时回调该方法。
开发桌面控件只需要定义一个APPWidgetProvider的子类,并重写它的onUpdate()方法即可。重写该方法按如下步骤进行:
- 创建一个RemoteViews对象,创建该对象时可以指定加载指定的界面布局文件。
- 如果需要改变上一步所加载的界面布局文件的内容,则可通过RemoteViews对象进行修改。
- 创建一个ComponentName对象。
- 调用APPWidgetManager更新桌面控件。
显示带数据集的桌面控件
Android为RemoteViews提供了如下方法:
- setRemoteAdapter(int viewId,Intent intent):该方法可以使用Intent更新RemoteViews中viewId对应的组件。
上面方法的Intent参数应该封装一个RemoteViewsService参数,该参数的主要作用是为RemoteViews中viewId对应的组件提供列表项。
网友评论