您的位置:首页 > 移动开发 > Android开发

Android Widget学习笔记

2016-02-20 18:20 549 查看
学习目标:

1)掌握Widget的用途;2)掌握Widget的特点和用法步骤。

Widget的用途:类似便签

Widget特点:快捷、方便;个性化、可自定义功能;可及时控制更新Widget显示内容

Widget用法步骤:

1)绘制Widget布局;2)配置Widget的基本属性;3)定义AppWidgetProvider;4)提供Configuration Activity

学习目标:

1)掌握Android Widget基础用法及步骤;2)Android Widget实现一个基本的时钟功能

用发步骤流程图:

绘制Widget布局==》配置Widget的基本属性==》定义AppWidgetProvider==》提供Configuration Activity

课程目标:Android Widget实现一个基础的时钟功能

具体效果:1)可以自动更新时间;2)可以添加和删除时钟Widget

=========在地铁霍营站往东直门方向那一站有个有个比较大的长方形液晶表=========

1)绘制Widget布局:widget.xml,默认只支持部分控件

2)配置Widget的基本属性:

在res目录下创建xml文件夹,再在此xml文件夹下创建资源类型为AppWidget Provider的文件,比如叫做widgetconfig.xml,注意res目录下的文件名都必须小写!!!

在widgetconfig.xml中配置minWidth、minHeight、initialLayout、updatePeriodMillis(刷新时间间隔,默认至少30分钟),至此Widget基本属性配置完毕!!!

3)新建一个类,继承自AppWidgetProvider,并重写onDeleted(widget被从屏幕移除)、onDisabled(最后一个widget被从屏幕移除)、onEnabled(第一个widget被添加到屏幕上)、onReceive、onUpdate(widget被刷新)方法。

然后!!!定义一个类,继承自Service,当第一个widget被添加到屏幕上时(AppWidgetProvider的onEnabled方法)启动此服务,该Service里面执行更新时间的操作。注意Service乃四大组件之一,需要注册

当最后一个widget被从屏幕移除时(AppWidgetProvider的onDisabled方法)停止此服务。

启动自定义服务代码:context.startService(new Intent(context, TimerService.class));

停止自定义服务代码:context.stopService(new Intent(context, TimerService.class));

@Override
public void onCreate(){
    super.onCreate();
    timer = new Timer();
    timer.schedule(
      new TimerTask(){
           @Override
           public void run(){

                 updateViews();
           }
      },0,1000);
}
注意在自定义Service的onDestroy回调方法中将timer置为null,以停止倒计时

private void updateViews(){
	String time = sdf.format(new Date());
	RemoteViews rv = new RemoteViews(getPackageName(), R.layout.widget);
	rv.setTextViewText(R.id.tv, time);
	AppWidgetManager manager = AppWidgetManager.getInstance(getApplicationContext());
	ComponentName cn = new ComponentName(getApplicationContext(), WidgetProvider.class);
	manager.updateAppWidget(cn, rv);
}
</pre><pre name="code" class="java">最后,AndroidManifest.xml文件中还有一些细节配置,此处省略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: