如何确定android小部件使用的位图大小

时间:2015-08-16 02:40:03

标签: android bitmap widget

我现在正在尝试为Android 4.4编写可调整大小的Android小部件。

它在Android Studio的模拟器和我的Sony Xperia Z2手机中运行良好。但是我朋友的华为手机出了问题。图像分辨率非常低,看起来很糟糕。

小部件仅包含一个ImageView ,并且我会在进行更新时将位图设置到其中。

我想知道位图应该是什么尺寸。在搜索互联网后,我试图通过

获取小部件的大小
 Bundle widgetOpts = appWidgetManager.getAppWidgetOptions(widgetId);
 int dpwidth = widgetOpts.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
 int dpheight = widgetOpts.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

并用密度

计算多个位图的大小
DisplayMetrics dm = context.getResources().getDisplayMetrics();
int width = (int)(dpwidth * dm.density);
int height = (int)(dpheight * dm.density);
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

在她的华为手机中,2x1小部件的价值是这样的:

OPTION_APPWIDGET_MAX_WIDTH 74
OPTION_APPWIDGET_MAX_HEIGHT 34
Density 2.0
DensityDpi 320
ScaledDensity 2.0
xdpi 315.31
ydpi 315.65
screen width 720
screen height 1184

并且Sony Xperia Z2中的值就像这样

OPTION_APPWIDGET_MAX_WIDTH 225
OPTION_APPWIDGET_MAX_HEIGHT 97
Density 3.0
DensityDpi 480
ScaledDensity 3.0
xdpi 428.625
ydpi 427.789
screen width 1080
screen height 1776

在Sony Xperia Z2中,dpwidth *密度= 675px,超过屏幕宽度的一半(在主屏幕中,2x1小部件的宽度应该小于我认为的屏幕的一半);在华为,dpwidth *密度= 148px,不到屏幕宽度的四分之一。 它们中的任何一个都看起来像小部件的宽度(以像素为单位)。

有什么建议吗?

在Sony Xperia Z2中: my widget in sony xperia z2

在华为: my widget in huawei

0 个答案:

没有答案