【问题标题】:appWidget Orientation CodeappWidget 定位代码
【发布时间】:2010-01-10 01:24:27
【问题描述】:

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

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

瑞恩

【问题讨论】:

  • 有没有办法知道主屏幕是否在活动堆栈的顶部?或找出是什么?
  • 理论上是的,见stackoverflow.com/questions/6285410/…,但是主屏幕是一个特定的Activity,可能会根据你使用的设备而有所不同。

标签: android android-widget screen-orientation android-appwidget


【解决方案1】:

对于运行时生成的图像没有很好的方法。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 您可以使用服务而不是活动来执行此操作。这肯定会涵盖更多用例,但仍然存在有 AppWidget 并且您的应用已关闭的情况。
      猜你喜欢
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      相关资源
      最近更新 更多