我在設計中獲取主屏幕小部件的大小時遇到了一些問題。我已經閱讀了sdk文檔並完成了一些搜索,但我並沒有發現任何有用的東西。無論如何,我正在使用小部件提供程序的onAppWidgetOptionsChanged方法在API 16上的設備上獲取小部件大小,並且它在某些設備上報告不正確。它在Nexus S和Transformer Prime上運行正常,但它在我的S3上的值比我從屏幕截圖上測量的小。我已經說明了以dp而不是像素報道的事實。我猜測三星的發射器中增加了一些類型的保證金,但我找不到任何關聯。例如,當我使用2x2小部件時,onAppWidgetOptionsChanged報告154dp(〜293px)寬度和193dp(〜355px)高度,但我在Photoshop中測量了〜340px〜420px。這是三星唯一的問題,還是我會在許多非香草平臺上面對這個問題。代碼是非常基本的,但我發佈任何以防萬一。Android應用程序小部件大小問題
@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {
int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int minHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
Log.i("WidgetProvider","Widget size changed");
Log.i("WidgetProvider","minWidth: " + minWidth);
Log.i("WidgetProvider","minHeight: " + minHeight);
Log.i("WidgetProvider","maxWidth: " + maxWidth);
Log.i("WidgetProvider","maxHeight: " + maxHeight);
}
我正在使用報告的大小在我的小部件更新服務中生成位圖。我需要使用自定義位圖,因爲我想爲自己的小部件使用自定義字體和背景。在API 16以下的設備上,我只是將位圖設置爲widget信息xml中定義的minWidth和minHeight。在某些設備上,這會留下比我更喜歡的小部件更多的填充,但圖像未失真。據我瞭解,在早期的設備中無法獲得小部件的大小。另外,我不相信自定義字體可以在應用程序窗口小部件的TextView中使用。它是否正確?我曾嘗試在圖像上使用fitXY,但在某些設備上看起來很糟糕。是否有更多可預測的方式來完成自定義背景和自定義字體的小部件?任何建議將不勝感激。謝謝!
我很確定沒有可預測的方式來獲取所有設備和發射器的尺寸。特別是三星TouchWiz有自己的填充規則。看看http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/ – 2013-08-05 12:44:37