3

我有一个应用程序小部件中的代码,当手机在主屏幕上的方向发生变化时,我想运行它,例如当键盘翻转时。我有一张想要在我的 appwidget 中的 imageview 中更改的图像。我不能使用与方向相关的不同布局(即“layout”和“layout-land”),因为直到运行时我才知道图像文件的名称,它是在运行时创建的。无论如何,只有在显示主屏幕、我的 appwidget 处于活动状态并且方向刚刚改变时,才会触发代码运行?

我可以收听 configuration_change 广播,但每次手机切换到横向或纵向时都会运行,我只希望它在显示主屏幕时发生。我想不出android中有什么好的方法来做到这一点。谢谢

瑞安

4

3 回答 3

3

对于在运行时生成的图像,没有一种好的方法可以做到这一点。

一种方法是构建图像的两个版本并具有两个可见的 ImageView,具体取决于所使用的布局/布局区域。(因此 RemoteViews 将更新两个 ImageViews,但只有正确的一个可见。)

于 2010-01-22T01:14:57.330 回答
0

在http://groups.google.com/group/android-developers/browse_thread/thread/0eb7c016be05e0b9/d31b312e2fa8530d有更多信息

基本上从 Activity 中的 onConfigurationChanged() 更新小部件,并在清单中为该 Activity 添加 android:configChanges="orientation" 。不好的是,这并没有涵盖所有用例。

于 2010-07-08T12:52:11.297 回答
0

杰夫,这个限制的原因是什么?我希望能够使用在运行时生成的图像,或者在运行时构造 RemoteView,而不是使用预编译的 XML——这太不灵活了。

于 2010-06-30T16:38:55.683 回答