小编use*_*486的帖子

自定义呈现Android应用小部件

我正在为Android创建一个应用程序小部件,由于它是由图形等自定义元素组成的,因此必须呈现为位图.

但是,我在这个过程中遇到了一些障碍.

1)有没有办法找到app小部件的最大可用空间?(或者:是否可以针对WVGA(或类似的宽)情况下的最小可用空间正确计算尺寸?

我不知道如何计算app小部件的最大可用空间.使用传统的app小部件,可以使用fill_parent,并且将使用所有空间.但是,将窗口小部件渲染为位图并避免拉伸时,必须计算正确的尺寸.文档概述了如何计算最小尺寸,但对于诸如WVGA之类的情况,横向模式中将存在未使用的空间 - 导致窗口小部件看起来比其他自然伸展的窗口小部件更短.

float density = getResources().getDisplayMetrics().density;
int cx = ((int)Math.ceil(appWidgetInfo.minWidth / density) + 2) / 74;
int cy = ((int)Math.ceil(appWidgetInfo.minHeight / density) + 2) / 74;
int portraitWidth = (int)Math.round((80.0f * cx - 2.0f) * density);
int portraitHeight = (int)Math.round((100.0f * cy - 2.0f) * density);
int landscapeWidth = (int)Math.round((106.0f * cx - 2.0f) * density);
int landscapeHeight = (int)Math.round((74.0f * cy - 2.0f) * density);
Run Code Online (Sandbox Code Playgroud)

计算cx和cy给出水平和垂直单元格的数量.从计算的dpi减去-2(例如74*cy - 2)是为了避免产生的像素数向下舍入的情况.(例如,在Nexus One的横向模式下,高度为110,而不是111(74*1.5).

2)将位图分配给ImageView(用作RemoteViews的一部分)以查看图像时,有两种方法:

2.1)通过使用setImageViewUri,并将位图保存为PNG文件.然后使用ContentProvider中的openFile()实现提供映像:

@Override
public ParcelFileDescriptor …
Run Code Online (Sandbox Code Playgroud)

android bitmap widget

7
推荐指数
1
解决办法
1324
查看次数

标签 统计

android ×1

bitmap ×1

widget ×1