2010-10-11 1 views
37

Я уже несколько дней борюсь за это, наконец, просто решил спросить. Это так просто, что мне нужно пропустить что-то очень простое.Android - Мигающее изображение с использованием анимации Alpha fade

У меня есть страница компоновки XML с определенным изображением. У меня есть две страницы XML XML, одна для изменения альфа от 0 до 1, а другая от 1 до 0, чтобы создать «мигающий» эффект. Таким образом, alphaAnimation определяется в XML, мне просто нужно это назвать.

Изображение всплывает, но эффект циклического мигания отсутствует.

public class blinker extends Activity { 

    //create name of animation 
Animation myFadeInAnimation; 
Animation myFadeOutAnimation; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.scanning_view); 

//grab the imageview and load the animations 
    ImageView myImageView = (ImageView) findViewById(R.id.blinkingView01); 
    Animation myFadeInAnimation = AnimationUtils.loadAnimation(null, R.anim.fade_in); 
    Animation myFadeOutAnimation = AnimationUtils.loadAnimation(null, R.anim.fade_out); 

//fade it in, and fade it out. 
    myImageView.startAnimation(myFadeInAnimation); 
    myImageView.startAnimation(myFadeOutAnimation); 
    } 
} 

Два макеты XML Анимация в Anim ресурса:

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="50" android:repeatCount="infinite"/> 
</set> 

И другие:

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="1000" android:repeatCount="infinite"/> 
</set> 
+0

сообщение кода XML. – Wroclai

+1

Привет, Чарли, любите своего шоу-человека. :) Я отредактировал оригинальный пост, добавленный в два файла XML (fade_in.xml и fade_out.xml) – Keith

ответ

27

Почему бы не использовать android:repeatMode="reverse"

+0

Еще одна проблема. Появится экран, но нет анимации. – Keith

+0

Почему ваш первый параметр null вместо этого в: nimationUtils.loadAnimation (null, ...? – methodin

+0

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

85

Лучший способ анимации замирания:

ImageView myImageView = (ImageView) findViewById(R.id.imageView2); 
Animation myFadeInAnimation = AnimationUtils.loadAnimation(Splash.this, R.anim.tween); 
myImageView.startAnimation(myFadeInAnimation); 

в вашем Резе/Анит/создать tween.xml подростковых 1s начинают непрозрачности от 0 до 1 и обратной Бесконечный ...

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<alpha 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:duration="1000" 
    android:repeatMode="reverse" 
    android:repeatCount="infinite" /> 
</set> 
+3

Это сработало для меня !! Я сохранил от Альфы как 0,2, так что вид не исчезает полностью. Спасибо Buchs, +1 за это. – Shraddha

+0

Для меня он повторяется только один раз: в и из. Тогда он ничего не делает. – brainmurphy1

+2

@ brainmurphy1, возможно, вы забыли 'android: repeatCount =" infin "'. Счетчик повторений должен быть положительным или бесконечным. –

12

Вы можете использовать ниже альфа-анимацию, чтобы установить мигающие эффекты для взглядов в андроид.

blinkanimation= new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible 
blinkanimation.setDuration(300); // duration 
blinkanimation.setInterpolator(new LinearInterpolator()); // do not alter animation rate 
blinkanimation.setRepeatCount(3); // Repeat animation infinitely 
blinkanimation.setRepeatMode(Animation.REVERSE); 

После этого добавить анимацию к вашему мнению, как,

view.setAnimation(blinkanimation); 

или

view.startAnimation(blinkanimation); 
+0

как изменить продолжительность в этом методе? – Hamid

+1

Измените его в blinkanimation.setDuration (ваша продолжительность); @Hamid – KarthikKPN

+0

LinearInterpolator по умолчанию один, нет необходимости явно устанавливать его – YTerle

 Смежные вопросы

  • Нет связанных вопросов^_^