widget转屏后显示的view是新生成的一个对象,与原本显示的view已经不一样了

设计:
使用自定义view显示动态变化的内容。比如RSS,Mail,Message等自动接收到的信息。
当有内容发生变化的时候,Widget先将Model内容改变,然后呼叫自定义view的invalidate()
触发onDraw去刷新页面内容。
问题:
普通情况下可以正确处理自动刷新,当将手机转屏后会对内容的变化无响应,但是如果手动点击
屏幕去触发其刷新是有效果的。
原因:
widget转屏后显示的view是新生成的一个对象,与原本显示的view已经不一样了。
解决:
在自定义view中增加一个属性,记录当前显示view的引用,这样当有内容变化的时候去刷新此
引用,可实现实时刷新内容。

用RemoteView中的setInt(int viewId, String methodName, int value) 來搭配View中的setBackgroundResource (int resid) 應該可行..用法如下:
xxx.setInt(R.id.widget, "setBackgroundResource ",R.drawable.carrystick_bg1)


正确。哈哈,最后是看了music的widget的源码,发现原来它用了2个刷新,如果id存在就用updateAppWidget(int[] appWidgetIds, RemoteViews views) 刷新,如果ID不存在就用的updateAppWidget(ComponentName provider, RemoteViews views) ,跟着它的写法。在onUpdate函数中检测int[] appWidgetids,如果为NULL,就用第2个函数刷新就OK了。。。.这个函数Set the RemoteViews to use for all AppWidget instances for the supplied AppWidget provider。问题暂时得到解决。。


比如有一个天气预报的竖屏下296dp*92dp的AppWidget,需要横屏显示怎么弄,需要再做一个横屏下的AppWidget吗?

请有经验的解答一下。

还有一个就是SDK2.1下的APIDEMO中的AppWidget例子无法实现定时更新(根据XML里面的android:updatePeriodMillis),但是SDK1.5下面的就可以自动更新?这是为什么呢,和SDK有关系吗?

谢谢解答
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值