티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Animate change of view background color on Android

안드로이드에서 뷰의 배경 색상을 애니메이션하기

 문제 내용 

How do you animate the change of background color of a view on Android?

안드로이드에서 뷰의 배경 색상 변경을 애니메이션화하려면 어떻게 해야 하나요?

 

For example:

예를 들어,

 

I have a view with a red background color. The background color of the view changes to blue. How can I do a smooth transition between colors?

빨간색 배경 색상을 가진 뷰가 있고, 그 뷰의 배경 색상이 파란색으로 변경된다면, 색상 간의 부드러운 전환을 어떻게 구현할 수 있을까요?

 

If this can't be done with views, an alternative will be welcome.

만약 뷰로는 이것이 불가능하다면, 대안이 있다면 환영합니다.

 

 

 

 높은 점수를 받은 Solution 

You can use new Property Animation Api for color animation:

뷰의 배경 색상을 애니메이션화하기 위해 새로운 Property Animation API를 사용할 수 있습니다.
int colorFrom = getResources().getColor(R.color.red);
int colorTo = getResources().getColor(R.color.blue);
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
colorAnimation.setDuration(250); // milliseconds
colorAnimation.addUpdateListener(new AnimatorUpdateListener() {

    @Override
    public void onAnimationUpdate(ValueAnimator animator) {
        textView.setBackgroundColor((int) animator.getAnimatedValue());
    }

});
colorAnimation.start();

 

For backward compatibility with Android 2.x use Nine Old Androids library from Jake Wharton.

Android 2.x와의 하위 호환을 위해 Jake Wharton의 Nine Old Androids 라이브러리를 사용할 수도 있습니다.

 

The getColor method was deprecated in Android M, so you have two choices:

getColor 메소드는 Android M에서 더 이상 사용되지 않으므로 두 가지 선택지가 있습니다:

 

  • If you use the support library, you need to replace the getColor calls with:
  • ContextCompat.getColor(this, R.color.red);
  • if you don't use the support library, you need to replace the getColor calls with:
  • getColor(R.color.red);
support library를 사용하는 경우, getColor 호출을 다음과 같이 바꾸어야 합니다:

support library를 사용하지 않는 경우, getColor 호출을 다음과 같이 바꾸어야 합니다:

 

 

 

 가장 최근 달린 Solution 

You can use ValueAnimator like this:

ValueAnimator를 다음과 같이 사용할 수 있습니다.
 fun startColorAnimation(v: View) {
    val colorStart = v.solidColor
    val colorEnd = Color.RED
    val colorAnim: ValueAnimator = ObjectAnimator.ofInt(v, "backgroundColor", colorStart, colorEnd)
    colorAnim.setDuration(1000)
    colorAnim.setEvaluator(ArgbEvaluator())
    colorAnim.repeatCount = 1
    colorAnim.repeatMode = ValueAnimator.REVERSE
    colorAnim.start()
}

 

 

출처 : https://stackoverflow.com/questions/2614545/animate-change-of-view-background-color-on-android

반응형
댓글
공지사항
최근에 올라온 글