动态更改View的边框

时间:2012-04-26 09:47:24

标签: android android-layout android-widget

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

提前致谢

3 个答案:

答案 0 :(得分:2)

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

view.setBackground(R.drawable.border_style_green);

因此在计时器任务中,不断检查时间,并更改边框。

注意 - border_style_green是一个XML文件,其格式可以设置边框,圆角设置为视图等。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

如果view是html页面:使用Jquery进行此实现。通过ajax你也可以打电话给后端。 Jquery delay function