gpt4 book ai didi

android - 确定主屏幕的 appwidgets 空间网格大小

转载 作者:太空狗 更新时间:2023-10-29 13:32:18 26 4
gpt4 key购买 nike

我为平板电脑开发了一个可调整大小的应用程序小部件。应用程序小部件在大多数具有大多数启动器的设备上运行良好,但是存在一些方向问题,尤其是在纵向模式下的 GO-HD 启动器上。 app-widget 的高度太大,看起来不好看。

为了解决这个问题,我创建了一个方法来允许用户在应用程序小部件空间中设置任何额外的边距,他想让它看起来不错。例如,他可以在设备处于纵向模式时额外设置 20 像素的上边距,而在横向模式时仅设置 5 像素等。

现在我正在创建一个允许用户设置边距的 Activity 。我想制作一个小的预览区域(它将是一个线性布局,具有相同的背景可绘制应用程序小部件),以便用户了解应用程序小部件在具有这些边距的主屏幕上的外观.其实我也这么做了,但结果与现实相去甚远。

所以我的问题是:

有什么方法可以获取启动器应用程序用来将应用程序小部件放置在主屏幕上的网格单元格的大小(或接近大小)?请注意,我知道并非所有启动器都遵循 Android 公式,但我想要的是找到一种方法来计算它的近似值。

----编辑----

为了更好地理解我的问题,我创建了一个屏幕截图:

shot

首先,应用程序小部件的背景是一个形状 xml 文件,根本没有图形或尺寸。由 Android 在可用空间中绘制它。在我看来,这是最好的 GUI 设计(至少在背景方面)。现在在屏幕 1 中,您可以在默认的 Android 启动器中看到纵向模式的小部件,它看起来非常漂亮并且可以重新调整大小。在屏幕 2 和 3 中,您可以在 GO-HD 启动器(横向和纵向模式)中看到它,在此启动器中,它在横向模式下看起来很小,在纵向模式下看起来很大。我可以通过让用户调整边距来解决这个问题,如您在屏幕 4 中所见。

如果您将预览(屏幕 4 中央的暗区)与 Android 默认启动器中的原始应用程序小部件进行比较,您会发现两者并不匹配。我要问的是如何向用户呈现更好的预览(最接近实际的应用程序小部件)。

谢谢,请原谅我的英语

最佳答案

你有没有实现AppWidgetProvider.onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle)?所有行为良好的启动器都应该报告一些关于您放置的小部件的指标,您可以使用如下代码从 bundle 中检索这些指标:

int minwidth_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int maxwidth_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int minheight_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxheight_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

请注意,这里没有单元格的概念 - 这些指标对应于您的小部件的实际大小,无论它占用了多少单元格。

股票发射器将这些映射到不同的方向,如下所示:

minwidth -> portrait width
minheight -> landscape height
maxwidth -> landscape width
maxheight -> portrait height

任何在两个方向上保持相同行数和列数并调整单元格大小以适应屏幕的启动器都应该以相同的方式映射这些内容。请注意,假设这些关系始终保持不变,如果您嵌入到对其小部件执行异常操作的启动器中 - 仅将它们放置在屏幕的一部分,或者在不同方向使用不同数量的行或列,则可能会产生不良结果。

或者,某些启动器可能会以最小值和最大值报告当前方向的指标,并在方向发生变化时简单地用新指标再次调用您。但是,如果您只对当前方向感兴趣,则这些发射器的行为与标准发射器的行为兼容。

关于android - 确定主屏幕的 appwidgets 空间网格大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com