App Widget ————android 新一代移动操作系统的特征

本文介绍了移动操作系统中窗口小部件、快捷方式与实时文件夹的功能,包括窗口小部件的创建、配置与更新,快捷方式的添加与直接放置到桌面上的方法,以及实时文件夹的配置与作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

窗口小部件(App Widget)、 快捷方式和实时文件夹充分体现了新一代移动操作系统的特征.

App Widget 窗口小部件 ,也可直接称为 Widget, 是一种可以放在Android 桌面上的应用程序, 这一功能是从SDK 1.5开始引入的.

先看一个示意图:

每一个Widget 实际上就是一个 BroadcastReceiver, 它们通过 XML 文件来描述 Widget 的细节. AppWidget 框架通过Broadcast intents 和Widget 通信

Widget 更新组件必须使用 RemoteViews 作为代理来更新, 具体步骤如下:

(1) 建立一个 XML 布局文件,在该布局文件中定义Widget 中显示的组件,要注意,Widget 并不是支持所有的 Android 组件。只能使用以下组件类:

1) 用于布局的组件类

FrameLayout  ,LinearLayout, RelativeLayout,

2) 可视组件类 10个

AnalogClock(世界时间,即不同时区时钟), Button, Chronometer(精密计时器, 秒表), ImageButton,  ImageView, ProgressBar, TextView

Widget 之所以不能使用其他的组件类, 是因为Widget 上的组件是通过RemoteVeiw 进行更新的.

(2) 创建Widget 描述文件. 该文件是 XML 格式,必须放在res\xml 目录中。基本格式如下:

<appwidget-provider xmlns:android=http://schemas.android.com/apk/res/android"

     android:minWidth="294dp"

     android:minHeight="146dp"

     android:updatePeriodMillis="3600000"

     android:initialLayout="@layout/main"  />

其中minWidth ,minHeight 表示Widget 的最小宽度和最小高度, updatePeriodMillis 表示Widget 更新的时间间隔(ms),也就是每隔指定时间就会调用onUpdate方法更新Widget,如果为0, 表示不更新. initialLayout 表示Widget 的XML布局文件.也就是第一步建立的布局文件。

这里介绍一下Widget 的摆放规则:  Android 将桌面分成若干个单元格,每一个单元格的尺寸可以认为是 74 像素(pixels) , 如果手机屏幕分辨率为 320 X480,屏幕会被分成16个单元格, Widget 的大小只能是这些格尺寸的整数倍. 

(3) 建立Widget 类,这个类必须继承AppWidgetProvider, AppWidgetProvider 是BroadcastReceiver 的子类, 在AppWidgetProvider 类实现几个方法,其中onUpdate 是最常用的方法

(4) 最后一步,在AndroidManifest.xml 文件中定义一个receiver ,以便系统和Widget 进行通信.例如:

<receiver  android:name=".ZgctWidget">

      <meta-data  android:name="android.appwidget.provier"

             android:resource="@xml/appwidget_provider" />

      <intent-filter>

         <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

     </intent-filter>

</receiver>

具体代码请参见 ch15_digitclock 数字时钟 工程 和ch15_digitclock_activity可以选择风格的数字时钟 工程, 可以选择风格数字时钟示意图如下:

二  快捷方式

添加快捷方式分为向快捷方式列表中添加,直接将快捷方式放在桌面上

(1)  要将应用程序添加到快捷方式列表中,android 系统自动完成了,也就是说,只要程序安装正确,都会在快捷方式列表中看到,在这里开发者提出来,主要是熟悉流程代码,用户要自己实现从快捷方式列表到桌面这个过程,必须在AndroidManifest.xml 作如下配置

<activity android:name=".AddCompassShortcut" android:label="电子罗盘"
   android:icon="@drawable/compass_shortcut">
   <intent-filter>
    <action android:name="android.intent.action.CREATE_SHORTCUT" />
   </intent-filter>
  </activity>

具体代码请参见 ch15_addshortcut工程

(2) 要实现将应用程序直接添加到桌面, 可以通过广播的方式实现

例如,添加电子罗盘快捷方式到桌面上代码如下:

// 安装电子罗盘快捷方式
    Intent installShortCut = new Intent(
      "com.android.launcher.action.INSTALL_SHORTCUT");
    installShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "电子罗盘");
    Parcelable icon = Intent.ShortcutIconResource.fromContext(this,
      R.drawable.compass_shortcut);
    installShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
      icon);
    Intent compassIntent = new Intent(
      "net.blogjava.mobile.compass.COMPASS", Uri
        .parse("compass://host"));
    installShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
      compassIntent);
    sendBroadcast(installShortCut);
    Toast.makeText(this, "快捷方式安装成功", Toast.LENGTH_SHORT).show();

特别注意, 与上一种情况不同,直接添加到桌面 需要声明找开安装权限:  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

具体代码请参见 ch15_installshortcut工程

三  实时文件夹 (LiveFolder)

与快捷方式不同,实时文件夹不是用来启动程序的,用来 访问其他应用程序中的数据,它通过ContentProvider 来获得其他应用程序中的数据.

要增加实时文件夹,需要配置建立实时文件夹的Activity 的代码:

<activity android:name=".AddLiveFolder" android:label="电话本"  android:icon="@drawable/phone">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />              
            </intent-filter>

</activity>

这里只要将AddLiveFolder 添加到任何的 Android 应用程序中,并启动程序,系统会自动将这个程序添加到实时文件夹列表中。

具体代码请参见 ch15_livefolder 工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值