Intereting Posts
Действия Android vs Views Размер шрифта пользовательского предпочтения больше, чем стандартное предпочтение в android 5 Android padlayout row padding Запуск службы в отдельном потоке Как изменить размер растрового изображения эффективно и без потери качества в андроиде Вкладки ActionBar с несколькими фрагментами FLAG_TURN_SCREEN_ON не всегда работает Плагин Crashlytics (2.2.2) не может быть инициализирован в Android Studio (1.1.0) Phonegap-plugin-facebook-connect: нет функции обратного вызова после FB.Login Контактные маяки: непоследовательные и ненадежные результаты при определении расстояния маяка Создайте андроид ELF двоичный с nasm? Как автоматически заполнить электронный адрес электронной почты с идентификатором электронной почты, с помощью которого устройство зарегистрировано Android – onStop () будет вызываться с задержкой Агрегаты препроцессора Gradle Запретить нежелательные вызовы метода CONNECT из HttpURLConnection

Android-анимация Alpha

У меня есть анимация

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <alpha android:fromAlpha="0.2" android:toAlpha="1.0" android:duration="500"/> </set> 

И ImageView

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings" android:alpha="0.2"/> 

И код:

 final Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha); final ImageView iv = (ImageView) findViewById(R.id.listViewIcon); anim .setFillAfter(true); iv.startAnimation(anim); 

Итак, в начале у меня есть ImageView с альфа-0,2, и в конце я хочу иметь ImageView с альфа-1. Но он не работает так – когда анимация начинает добавляться больше альфы, а анимация заканчивается с альфа-0,2

Что мне нужно изменить, чтобы оживить мое изображение с 0.2-> 1?

Я проверил с разными настройками – я установил android: alpha = "1.0", fromAlpa = "1.0" toAlpha = "0.2", он работает, как я и ожидал, – от альфы 1 до 0,2. Похоже, что альфа из ImageView умножается на альфа от анимации …

Попробуй это

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(1000); animation1.setStartOffset(5000); animation1.setFillAfter(true); iv.startAnimation(animation1) 

Установка альфа- 1 до начала анимации работала для меня:

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(500); iv.setAlpha(1f); iv.startAnimation(animation1); 

По крайней мере, на моих тестах нет мерцания из-за настройки альфа до начала анимации. Это просто отлично работает.

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings"/> 

Удалите android:apha=0.2 из XML-> ImageView.

Хм …

Дело не так, и, возможно, в правильной работе анимаций в Android API.

Дело в том, что когда вы устанавливаете в своем коде альфа значение 0.2f основано на настройках в файле xml для android, это означает, что:

 0.2f = 0.2f of 0.2f (20% from 100%) ie from 0.2f / 5 = 0.04f 1f = 0.2f 

Таким образом, ваша анимация фактически работает от 0.04f до 0.2f

setFillAfter(true) конечно работает, но вам нужно понять, что в конце вашей анимации ImageView будет иметь значение альфа 0.2f вместо одного, потому что вы указываете 0.2f как минимально приемлемое значение в анимации (своего рода максимальная альфа-версия канал).

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

Вы должны понимать, что ваши анимации напрямую зависят от двух вещей:

  • LayoutParams анимированного просмотра
  • Параметры анимации.

Параметры анимации управляют вашими LayoutParams в методах setFillAfter \ setFillBefore .

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