Android animate background color

Анимировать изменение цвета фона просмотра на Android

Как вы анимируете изменение цвета фона представления на Android?

У меня есть вид с красным цветом фона. Цвет фона представления меняется на синий. Как я могу сделать плавный переход между цветами?

Если это невозможно сделать с помощью представлений, альтернатива будет приветствоваться.

В итоге я нашел (довольно хорошее) решение этой проблемы!

Вы можете использовать TransitionDrawable для достижения этой цели. Например, в файле XML в папке drawable вы можете написать что-то вроде:

Затем в вашем XML для фактического представления вы бы ссылались на этот TransitionDrawable в android:background атрибуте.

На этом этапе вы можете инициировать переход в своем коде по команде, выполнив:

Или запустите переход в обратном порядке, вызвав:

См . Ответ Романа о другом решении, использующем API-интерфейс анимации свойств, который не был доступен на момент публикации этого ответа.

Вы можете использовать новый Property Animation Api для цветной анимации:

Для обратной совместимости с Android 2.x используйте библиотеку Nine Old Androids от Jake Wharton.

Этот getColor метод устарел в Android M, поэтому у вас есть два варианта:

Если вы используете библиотеку поддержки, вам необходимо заменить getColor вызовы на:

если вы не используете библиотеку поддержки, вам необходимо заменить getColor вызовы на:

В зависимости от того, как ваш вид получает цвет фона и как вы получаете целевой цвет, есть несколько разных способов сделать это.

Первые два используют фреймворк Android Property Animation .

  • Ваш вид имеет фоновый цвет, определенный как argb значение в XML-файле.
  • Ваш вид ранее имел свой цвет, установленный view.setBackgroundColor()
  • Ваш вид имеет цвет фона, определенный в рисовании, который НЕ определяет никаких дополнительных свойств, таких как радиус обводки или угла.
  • Ваш вид имеет цвет фона, заданный в режиме рисования, и вы хотите удалить любые дополнительные свойства, такие как обводки или угловые радиусы, имейте в виду, что удаление дополнительных свойств не будет анимированным.

Аниматор объекта работает путем вызова, view.setBackgroundColor который заменяет определенный объект рисования, если только он не является экземпляром a ColorDrawable , которым он редко является. Это означает, что любые дополнительные свойства фона из рисованного объекта, такого как обводка или углы, будут удалены.

  • Ваш вид имеет цвет фона, заданный в чертеже, который также устанавливает свойства, такие как обводка или угловые радиусы, и вы хотите изменить его на новый цвет, который определяется во время работы.
  • Ваше представление должно переключаться между двумя объектами рисования, которые были определены до развертывания.

У меня были некоторые проблемы с производительностью отрисовок Transition, которые запускаются при открытии DrawerLayout, которые я не смог решить, поэтому, если вы столкнетесь с неожиданным заиканием, вы можете столкнуться с той же ошибкой, что и я.

Читайте также:  Плеер для андроид с синхронизацией

Вам нужно будет изменить пример Value Animator, если вы хотите использовать рисование StateLists или LayerLists , в противном случае он потерпит крах на final GradientDrawable background = (GradientDrawable) view.getBackground(); линии.

Создайте и используйте ObjectAnimator как это.

Вы также можете загрузить определение анимации из xml, используя AnimatorInflater, как это делает XMight в Android objectAnimator animate backgroundColor of Layout

Создайте и используйте ValueAnimator следующим образом:

Используйте TransitionDrawable следующим образом:

Вы можете отменить анимацию, вызвав .reverse() экземпляр анимации.

Есть несколько других способов сделать анимацию, но эти три, вероятно, наиболее распространенные. Я обычно использую ValueAnimator.

Источник

Анимировать изменение цвета фона на Android

Как вы анимировать изменение цвета фона представления на Android?

У меня есть вид с красным цветом фона. Цвет фона представления изменяется на синий. Как сделать плавный переход между цветами?

Если это не может быть сделано с видом, альтернатива будет приветствоваться.

12 ответов

Я в конечном итоге выяснить (очень хорошее) решение этой проблемы!

можно использовать TransitionDrawable для этого. Например, в XML-файле в папке drawable вы можете написать что-то вроде:

тогда в вашем XML для фактического представления вы бы ссылались на этот TransitionDrawable в .

на этом этапе вы можете инициировать переход в вашем коде по команде делать:

или запустите переход в обратном порядке, вызвав:

посмотреть Роман для другого решения с использованием API анимации свойств, который не был доступен в то время, когда этот ответ был первоначально опубликован.

вы можете использовать new Свойство Анимации Api цвета анимация:

Для обратной совместимости с Android 2.X использование девять старых андроидов библиотека от Джейка Уортон.

на getColor метод был устаревшим в Android M, поэтому у вас есть два варианта:

если вы используете библиотеку поддержки, вам нужно заменить getColor звонки с:

если вы не используете библиотека поддержки, вам нужно заменить getColor звонки с:

в зависимости от того, как ваш вид получает свой цвет фона и как вы получаете свой целевой цвет есть несколько различных способов сделать это.

первые два использует Анимация Свойств Android основы.

  • ваш вид имеет свой цвет фона, определенный как argb значение в xml-файле.
  • ваш вид ранее имел свой цвет, установленный view.setBackgroundColor()
  • ваш вид имеет свой цвет фона, определенный в drawable, что НЕ определяет любые дополнительные свойства, такие как ход или угловые радиусы.
  • ваш вид имеет свой цвет фона, определенный в drawable, и вы хотите удалить любые дополнительные свойства, такие как штрихи или угловые радиусы, имейте в виду, что удаление дополнительных свойств не будет анимировано.

аниматор объектов работает, вызывая view.setBackgroundColor который заменяет определенный drawable если это не экземпляр ColorDrawable , что редко бывает. Это означает, что любые дополнительные свойства фона из drawable как штрих или углы будут удалены.

  • ваш вид имеет свой цвет фона, определенный в drawable, который также устанавливает свойства, такие как штрихи или угловые радиусы, и вы хотите изменить его на новый цвет, который решается во время работы.
Читайте также:  Взломанный видеорегистратор для андроида

использовать a переход drawable если:

  • ваше представление должно переключаться между двумя drawable, которые были определены до развертывания.

у меня были некоторые проблемы с производительностью с переходными чертежами, которые запускаются во время открытия DrawerLayout, который я не смог решить, поэтому, если вы столкнетесь с неожиданным заиканием, Вы можете столкнуться с той же ошибкой, что и я.

вам придется изменить пример аниматора значений, если вы хотите использовать выигрышного StateLists или LayerLists drawable, в противном случае он рухнет на final GradientDrawable background = (GradientDrawable) view.getBackground(); линии.

создать и использовать ObjectAnimator такой.

вы также можете загрузить определение анимации из xml с помощью AnimatorInflater, как XMight делает в Android objectAnimator анимировать фон макета

создайте и используйте ValueAnimator следующим образом:

используйте TransitionDrawable как это:

вы можете отменить анимацию, позвонив .reverse() на экземпляре анимации.

есть несколько других способов сделать анимацию, но эти три, пожалуй, самая распространенная. Обычно я использую ValueAnimator.

вы можете сделать аниматор объект. Например, у меня есть targetView, и я хочу изменить цвет фона:

Если вы хотите цветную анимацию, как это,

этот код поможет вам:

еще один простой способ достичь этого-выполнить переход через AlphaAnimation.

  1. сделайте свой вид ViewGroup
  2. добавьте дочернее представление к нему по индексу 0 с размерами макета match_parent
  3. дайте вашему ребенку тот же фон, что и контейнер
  4. изменить фон контейнера на целевой цвет
  5. выцветание ребенка с помощью AlphaAnimation.
  6. удалите ребенка, когда анимация будет завершена (с помощью AnimationListener)

Это метод, который я использую в базовой активности для изменения фона. Я использую GradientDrawables, сгенерированные в коде, но могут быть адаптированы в соответствии.

обновление: в случае, если кто-то работает в той же проблеме, которую я нашел, по какой-то причине на Android setCrossFadeEnabled(true) вызвать нежелательный эффект белого, поэтому мне пришлось переключиться на сплошной цвет для

Источник

Animated Gradient Background in Android

Adding Animated Gradient Background in your app is really easy by using xml and java code. Animated moving gradients background between gradients as animation makes your android app really awesome. You might have seen this type of background color animation in Instagram app’s Login Screen. Instagram app keeps on transforming background from one gradient to another very beautifully. So this can be achieved very easily by transforming gradients background using animation list.

Let’s Get it Working

In this tutorial, we are going to learn how to create a moving gradient background. To really understand the creation of animated gradient background we will create an app. This app will contain the login screen and animated background the same as you might have seen in the login screen of Instagram.

Читайте также:  Экран блокировки разблокировки андроид

Step 1) Creating New Project

Create a new project in Android Studio from File ⇒ New Project Fill the required information like project name and package name of the project. When it prompts you to select the default activity, select Empty Activity and proceed.

Step 2) Defining strings,colors and styles

2.1 Add the below string values to the strings.xml located in res ⇒ values ⇒ strings.xml.

2.2 Add the below color values to the colors.xml located in res ⇒ values ⇒ colors.xml.

2.3 Add the below style values to the styles.xml located in res ⇒ values ⇒ styles.xml.

Step 3) Adding gradient drawable

Before creating layout we have to write custom gradient drawable for the layout’s background. We will create 4 drawable resource files in a drawable folder by right click on drawable ⇒ New ⇒ Drawable resource file name is the same as the name of the following drawable XML files.

3.1 drawable_purple_gradient.xml

Add the below code to the drawable_purple_gradient.xml. This file will generate a purple color gradient background.

Purple Gradient Drawable

3.2 drawable_amber_gradient.xml

Add the below code to the drawable_amber_gradient.xml. This file will generate an amber color gradient background.

Amber Gradient Drawable

3.3 drawable_green_gradient.xml

Add the below code to the drawable_green_gradient.xml. This file will generate a green color gradient background.

Green Gradient Drawable

3.4 drawable_red_gradient.xml

Add the below code to the drawable_red_gradient.xml. This file will generate a red color gradient background.

Red Gradient Drawable

Step 4) Adding gradient animation list

Again Create new drawable resource file by right click on drawable ⇒ New ⇒ Drawable resource file name it drawable_gradient_animation_list.xml and add the below code to it. This file will create an animation list for gradient drawables.

Step 5) Create activity_main.xml

Now create a layout file for the MainActivity.java i.e activity_main.xml and add the below code in your layout file. The code will create a simple login form containing logo on the top, 2 input fields email and password, login button and gradient at the background.

activity_main.xml would result a screen like this:

Step 6) Create MainActivity class

Create a class named MainActivity and add the below code. Here I have written the code to animate the background of constraint layout which I have described above in activity_main.xml.

Step 7) Run App

Register the above-created MainActivity in AndroidManifest.xml as the main activity and run the app by clicking the run button on Android Studio and see the beautiful background animation.

The Image Below shows the screen shots captured when background animation started.

Animated Gradient Background Screens

Please feel free to comment as well as ask questions. And, yeah! If this post helps you please do share!

Enjoy Coding and Share Knowledge

Источник

Оцените статью