如何实现背景屏幕颜色转换?
How do I achieve a background screen color transition?
我有一个游戏,我希望背景的屏幕颜色每 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()
获取布局的当前颜色时,过渡从灰白色开始,而不是布局的当前颜色。
非常感谢任何解决方案或建议!
如果 FrameLayout
背景是纯色(你的情况应该是这样),那么你可以使用以下代码
获得它的颜色
Drawable background = mainView.getBackground();
int color = ((ColorDrawable) background).getColor();
我有一个游戏,我希望背景的屏幕颜色每 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()
获取布局的当前颜色时,过渡从灰白色开始,而不是布局的当前颜色。
非常感谢任何解决方案或建议!
如果 FrameLayout
背景是纯色(你的情况应该是这样),那么你可以使用以下代码
Drawable background = mainView.getBackground();
int color = ((ColorDrawable) background).getColor();