应用小部件方向代码

3
我有一个appwidget中的代码,我想在手机主屏幕方向改变时运行它,就像键盘翻转时一样。我有一个图像,我想在我的appwidget中的imageview中更改它。我不能使用与方向相关联的不同布局(即“layout”和“layout-land”),因为我不知道图像文件的名称,直到运行时才创建。是否有任何方法只触发代码运行,如果主屏幕显示,我的appwidget处于活动状态,并且方向刚刚改变?
我可以监听configuration_change广播,但每次手机切换到横向或纵向模式都会运行它,我只想在主屏幕显示时发生。我无法想出在Android中做到这一点的好方法。谢谢
Ryan

有没有办法知道主屏幕是否在活动堆栈的顶部?或者找出它是什么? - rgrandy
理论上是可以的,请参考http://stackoverflow.com/questions/6285410/android-detect-if-an-activity-is-on-the-top-of-the-history-stack,但主屏幕是一个特定的Activity,这可能会因使用的设备而异。 - Dan J
3个回答

3

对于在运行时生成的图像,没有一种很好的方法来处理。

一种方法是构建两个版本的图像,并有两个ImageView,具体显示取决于使用的layout/layout-land。 (因此,RemoteViews将更新两个ImageView,但只有正确的一个可见。)


0
Jeff,这个限制的原因是什么?我希望能够使用在运行时生成的图像,或者也可以在运行时构建RemoteView,而不是使用预编译的XML - 这样太没有灵活性了。

0

你可以使用Service而不是Activity来完成它。 这肯定会涵盖更多的用例,但仍然存在一种情况,即存在一个AppWidget并且你的应用程序已关闭。 - Mario Lenci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接