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有关系吗?

谢谢解答
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值