11

我對我寫的動態壁紙有定位問題。基本上,畫布將根據在其上方打開的應用程序旋轉。我測試了這一點,並意識到onSurfaceChanged()方法在從方向改變的以前打開的應用程序返回主屏幕時觸發。當應用程序打開並且方向改變時,防止動態壁紙方向改變?

我想一個更好的問題是,爲什麼我的動態壁紙表面更改當一個應用程序打開,它的方向改變?有沒有辦法阻止我的動態壁紙方向不斷變化?謝謝,希望有道理?

+0

您是否在清單中定義方向?或甚至編程?如果不是的話,[this](http://stackoverflow.com/q/2150287/404469)問題的答案應該有所幫助。 – gary 2010-12-23 00:21:34

+0

在動態壁紙中不會使用任何活動(除了設置活動)。一個LWP擴展了WallpaperService,它在onCreateEngine()函數中創建引擎類的一個實例。 – worked 2010-12-23 19:46:37

回答

1

Android應用程序在方向更改時重新啓動活動。 您可以使用

  1. 機器人:在你的清單configChanges。當運行時發生配置更改時,默認情況下關閉並重新啓動該活動,但使用此屬性聲明配置將會阻止活動重新啓動。相反,該活動仍在運行,並調用其方法。
  2. 使用機器人:screenOrientatin =「肖像」或「景觀」這將迫使應用程序在您指定的模式下運行。但它不會阻止關閉和重新啓動活動。
1

您可以在android.service.wallpaper.WallpaperService中處理屏幕方向。 引擎類下面的方法:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) 

...只是相應地處理該事件。

CAN NOT添加安卓configChanges也不安卓screenOrientation到WallpaperService! (你在創建一個動態壁紙時使用的)

我會添加此作爲評論「Anirudha」的答案,但我沒有足夠的聲譽這樣做。