【问题标题】:Maximum Refresh Rate of A Widget小部件的最大刷新率
【发布时间】:2010-10-17 14:23:56
【问题描述】:

我知道默认是 30 分钟,但是我正在考虑在小部件中制作游戏

这需要毫秒级的响应....有没有人弄乱了描述用来实现此目的的闹钟定时?它运作良好吗?

我还没有完成该项目的软件弧,因为我在网上看到很多关于此的投诉,所以在我去冒险之前需要知道这是否可行......但游戏将包含一个屏幕的大部件尺寸...许多区域可以点击并与之交互以及多个纹理动画

看起来我可以在画布上绘制然后将其弹出到位图来执行此操作...但这仍然让我有点困惑,所以如果有人知道一些好的教程,我将不胜感激

这是我被告知的作品:

代码: 油漆 p = 新油漆(); p.setAntiAlias(true); p.setStyle(Style.STROKE); p.setStrokeWidth(8); p.setColor(0xFFFF0000);

        Bitmap bitmap = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawArc(new RectF(10, 10, 90, 90), 0, 270, false, p);

       // RemoteViews views = new RemoteViews(updateService.getPackageName(), R.layout.main);
        RemoteViews updateViews = null;

        updateViews.setImageViewBitmap(R.id.canvas, bitmap);

        ComponentName componentName = new ComponentName(updateService, DashboardAppWidgetProvider.class);
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(updateService);
        appWidgetManager.updateAppWidget(componentName, views);

但我正在努力解决此代码具有画布 ID 的概念以及如何使用它,因此我无法测试此代码

(我是一名经验丰富的 c/c++/c#/dx/opengl coder,第一次使用 android 和 java)

谢谢!

【问题讨论】:

    标签: android android-widget widget


    【解决方案1】:

    但是我正在考虑在小部件中制作游戏

    我不建议这样做。

    这需要毫秒响应

    考虑到主屏幕与您的游戏代码在不同的进程中运行,这是非常不切实际的。

    有没有人弄乱了描述用来实现此目的的闹钟定时?效果好吗?

    AlarmManager 不是为每秒触发多个事件而设计的。

    但游戏会包含一个屏幕大小的大部件

    您不能指定“一屏大小”的应用小部件。您必须指定一个尺寸,并且该尺寸不能因硬件屏幕尺寸而异。

    许多可供点击和交互的区域以及多个纹理动画

    应用小部件中无法使用动画。

    看起来我可以在画布上绘制,然后将其弹出到位图上来执行此操作

    考虑到您的代码和主屏幕在不同的进程中运行,这将是低效的。

    您可以编写一个替代主屏幕并将您的游戏放入其中。然后,你的性能限制就会消失,你可以做动画和任何你想做的事情。当然,您需要添加很多主屏幕功能,否则用户不会希望将您的应用作为主屏幕。

    【讨论】:

    • 嗯,谢谢您的投入...我同意我正在做的事情有一定的限制,但我不认为这是不可能的....我意识到 Alarmanager 不是设计的为此,但我之前看到有人使用它,那么它可以使用的最大速度是多少?
    • 指定尺寸并不难,它将以每像素为基础,以小尺寸手机为尺寸......市场上也总是可以有多个版本
    • 动画非常有可能,我只需要更改位图呈现的内容
    • 您对画布绘制无效的最后评论...为什么没有看到任何有关此的文档?主屏幕处于不同的进程有什么关系?
    • @Greg Mort:“指定尺寸并不困难,它将以每个像素为基础,以缩小尺寸的手机为尺寸”——这不会给你“一个屏幕的尺寸”。 “动画非常有可能,我只需要更改位图呈现的内容”——Android 中的“动画”一词通常指补间动画(应用小部件不可能)或帧动画(可能但仅适用于预编译资源)。 “我们关于画布绘制无效的最后评论”- 绘制到 Canvas 是有效的,跨进程边界“将其弹出到位图”将不会。
    【解决方案2】:

    动画是可能的,但非常有限。

    主屏幕小部件的进程优先级似乎非常低。 您可以根据需要尽可能多地触发警报,但是当设备处于睡眠模式左右时,会出现一些正确停止警报的问题,否则您会遇到设备功耗的实际问题。

    您设置的任何警报都会触发一个事件,但只要 cpu 或多或少地工作,您就永远不会获得相同的执行时间。

    问题的另一个原因是图形的刷新率。你可以在这样的警报事件中绘制任何你想要的东西,但是 android 的小部件抽屉有一个非常糟糕的刷新模型。你永远不会知道,真正为用户绘制的图形。

    我是新的“动画滚动时钟小部件”(http://www.androidzoom.com/android_applications/lifestyle/animated-rolling-clock-widget_lviw.html?nav=recategorized) 的开发人员,要让我们按预期工作,需要处理一些真正困难的事情。 如果你试试这个,你会发现刷新速度非常快的局限性。

    如需详细问题,您可以使用与此应用程序相关联的官方电子邮件地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2020-11-28
      • 2021-11-18
      • 2021-01-10
      • 2011-06-06
      相关资源
      最近更新 更多