我正在对Java中的一些自定义控件进行编程,并使用动画进行过渡/褪色/动作。

我这样做的方式是,我正在启动一个新线程,并对变量进行调整,并使用 paint() 方法。

例子:

现在,我的问题是,例如,我正在实现淡入淡出的问题。我要做的就是通过 byte x //between 0-255 并画一个矩形 alphaLevel += x, ,例如(在伪代码中):

byte increment = 40;

for (byte i = 0; i < 255; i += increment)
{
    _parentClass.setAlphaLevel (i);
    _parentClass.repaint();
    Thread.sleep (10);    
}

_parentClass.setAlphaLevel (255);

我想知道的是,最低的是什么,我应该将睡眠设置为最高,以使动画看起来不稳定?目标设备刷新速率或与人眼睛的任何东西都有任何待办事项吗?同样的问题再次使用步骤。是否有一个网站可以为我提供可以复制的好数字。

我问的原因是要在电池操作的设备上运行,因此最大程度地提高了效率,因此CPU时间=更少的电池。您会设置什么?

谢谢。

有帮助吗?

解决方案

您要寻找的技术称为“双重缓冲”。

遗憾的是,我没有时间向您展示一个例子,但这就是您需要研究的内容。

其他提示

我个人建议调查 三叉戟动画库, ,即使您在移动上下文中使用它(似乎是从您的问题来看),库似乎只有100k。

我不确定它适合您的情况,但是值得一试。

在一个挑剔的地方... byte Java中的数据类型并非未签名,因此其范围实际上是-128至127。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top