0

我只是计划实现一个视图,其边框颜色在运行时基于计时器不断变化。例如,最初视图的边框将是绿色(计时器 = 20 秒),并且每隔一秒绿色就会消失,一旦超过一半(计时器 = 10 秒)的视图......边框颜色应该变为橙色和一旦它到达定时器的结束(定时器 = 5 秒),它应该是红色的,并且手机应该振动(很容易做到)....如果有人熟悉 zynga poker,它与我想要实现的相同。
现在实现它的一种方法可能是有一个后端计时器,并基于它有“n”个可绘制对象,并继续每秒更改视图的背景。但这需要很多图像,我认为这不是实现它的最佳方式。
只是想知道我是否可以编写一个自定义视图并实现表面视图并围绕它做一些事情以便可以做到这一点。有人对如何实现这一目标有任何想法吗?这可以使用自定义视图周围的任何动画来完成吗?非常感谢有关此的任何想法。

提前致谢

4

3 回答 3

2

运行 timertask,并通过将视图的背景值设置为样式来更改视图的边框。喜欢,

view.setBackground(R.drawable.border_style_green);

所以在定时器任务中,不断检查时间,改变边框。

注意 - border_style_green 是一个 XML 文件,它具有您可以设置边框、圆角到视图等的样式。

于 2012-04-26T09:51:05.990 回答
1

我的建议是使用 android 的动画框架。如果您的应用程序的目标版本低于蜂窝,请使用NineOldAndroids

正如已经建议的那样,通过将 shapeDrawable 分配给您的视图来设置边框

view.setBackground(R.drawable.border_style_green);

你像这样启动动画师。(此代码将在 1000 毫秒内从 currentColor 变为红色)

    ObjectAnimator animator = ObjectAnimator.ofFloat(this, "color", currentColor,Color.RED);
    animator.setEvaluator(new ArgbEvaluator());
    animator.setDuration(1000);
    animator.start();

然后在您的活动中实施:

public void setColor(int color){
            currentColor = color;
    view.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
}
于 2012-04-26T10:00:44.503 回答
0

如果视图是 html 页面:使用 Jquery 进行此实现。通过ajax,您也可以调用后端。jQuery延迟函数

于 2012-04-26T09:54:10.233 回答