如何实现背景屏幕颜色过渡?

时间:2015-03-25 01:12:25

标签: java android colors android-framelayout

我有一个游戏,我希望背景的屏幕颜色每10点从一种颜色过渡到另一种颜色。这是我创建的一个方法来尝试它:

private void backgroundColorswitch(Rectangle rect) {
    int color = mainView.getSolidColor(); /*I am trying to get the mainView's color for the transition's start color*/
    int red =   (color >> 16) & 0xFF;
    int green = (color >> 8) & 0xFF;
    int blue =  (color >> 0) & 0xFF;
    int alpha = (color >> 24) & 0xFF;
    colorFade = ObjectAnimator.ofObject(mainView, "backgroundColor", new ArgbEvaluator(), Color.argb(alpha, red, green, blue), rect.getColor() - 1000000); /*I want the transition to end on a faded version of the color of the rectangles that also change every 10 points*/
    colorFade.setDuration(2000); //length of transition
    mainView.post(new Runnable() {
        @Override
        public void run() {
            colorFade.start(); //Runs the animation
        }
    });
}

每10个部分都会得到照顾,但我想知道是否有更好的方法可以解决这个问题。我如何获得FrameLayout的颜色,因为颜色更改结束的颜色是正确的,但是当我使用mainView.getSolidColor()获取布局的当前颜色时,转换从灰白色开始,而不是布局的当前颜色。

非常感谢任何解决方案或建议!

1 个答案:

答案 0 :(得分:1)

如果FrameLayout背景为纯色(并且应该在您的情况下),那么您可以使用以下代码获取它的颜色

Drawable background = mainView.getBackground();
int color = ((ColorDrawable) background).getColor();