博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之AppWidget
阅读量:6229 次
发布时间:2019-06-21

本文共 2235 字,大约阅读时间需要 7 分钟。

1.Widget设计步骤

  需要修改三个XML,一个class:

  1)第一个xml是布局XML文件(如:main.xml),是这个widget的。一般来说如果用这个部件显示时间,那就只在这个布局XML中声明一个textview就OK了。

  2)第二个xml是widget_provider.xml,主要是用于声明一个appwidget的。其中,Layout就是指定上面那个main.xml。

  3)第三个xml是AndroidManifest.xml,注册broadcastReceiver信息。

  4)最后那个class用于做一些业务逻辑操作。让其继承类AppWidgetProvider。AppWidgetProvider中有许多方法,一般情况下我们只是覆写onUpdate(Context,AppWidgetManager,int[])方法。

2.代码案例

  1)main.xml

  

  2)hello_widget_provider.xml

  3)AndroidManifest.xml

    
    
      
    
    
  

  4)HelloWidgetProvider.java

public class HelloWidgetProvider extends AppWidgetProvider { 
  /** Called when the activity is first created. */ 
  @Override 
  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000); 
  } 
  public class MyTime extends TimerTask { 
    RemoteViews remoteViews; 
    AppWidgetManager appWidgetManager; 
    ComponentName thisWidget; 
    DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());   
    public MyTime(Context context, AppWidgetManager appWidgetManager) {        this.appWidgetManager = appWidgetManager;        remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);        thisWidget = new ComponentName(context, HelloWidgetProvider.class);      }  
    @Override      public void run() {        remoteViews.setTextViewText(R.id.tvCurrTime, "Time = " + format.format(new Date()));        appWidgetManager.updateAppWidget(thisWidget, remoteViews);      }    } }  

  代码解释:RemoteView是用来描述一个垮进程显示的view,也就是说这个view是在另外一个进程显示的。它inflate于layout资源文件。并且提供了可以修改过view内容的一些简单基础的操作。 

  AppWidget---RemoteView,AppWidgetProvider是一个BrocaseReceiver,只是接受到Enable, Update,disale,delete这些message,而真正显示界面的是AppWidgetHostView(这是在Launcher里面实现的),这中间就是通过RemoteView来沟通。通过RemoteView告诉Launcher你想要的AppWidget是长什么样。

源自:http://www.cnblogs.com/devinzhang/archive/2012/01/26/2329790.html

转载于:https://www.cnblogs.com/colife/p/5483997.html

你可能感兴趣的文章
7月份前端资源分享
查看>>
搜狗手机助手联合腾讯御安全 共建APP安全生态环境
查看>>
Codeigniter 4.0-dev 版源码学习笔记之五——相对于 3.x 的变化
查看>>
(译 & 转载) 2016 JavaScript 后起之秀
查看>>
GB(一)
查看>>
方面和服务,差别大吗?
查看>>
Infor喜获中国智能制造与电商物流大奖
查看>>
瑞士科学家研发飞行夹克,用户可以像鸟一样任意飞翔
查看>>
互金启示录:流量思维的末路
查看>>
「镁客·请讲」镁伽机器人黄瑜清:有需求没供给,协作机器人市场存在“两极现象”...
查看>>
GoPro 研发无人机意欲如何?
查看>>
Ubuntu 16.04清楚Dash历史记录
查看>>
随机生成数的方法
查看>>
Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)...
查看>>
大型分布式C++框架《二:大包处理过程》
查看>>
携手科技出版巨擎 推动中国IT人才成长 51CTO与人民邮电出版社达成战略合作
查看>>
11g RAC 如何备份OCR,利用备份恢复OCR,ocrdump
查看>>
WCF序列化
查看>>
uCos-III移植到STM32F10x
查看>>
Centos下源码包安装lamp常见的几个小问题
查看>>