`
huangxiaoshi8896513
  • 浏览: 8558 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

窗口小部件(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) 要实现将应用程序直接添加到桌面, 可以通过广播的方式实现

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

....................................................................

特别注意, 与上一种情况不同,直接添加到桌面 需要声明找开安装权限:  <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 工程

原文:http://www.verydemo.com/demo_c131_i159618.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics