Как сделать затухание изображения на экране активности Android?

Я хотел бы отобразить фотографию на экране активности Android с постепенным и непрерывным переходом от бледной монотонной сепии к окончательному полному цвету. Я знаю, как это сделать на Java Image/BufferedImage для графического объекта, но, к сожалению, я ничего не знаю о среде программирования Android. Может ли кто-нибудь помочь?


person Hiroshi Iwatani    schedule 08.04.2010    source источник


Ответы (4)


Привет, Хироши, ты можешь сделать это для постепенного появления:

  ImageView myImageView= (ImageView)findViewById(R.id.myImageView);
  Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
  myImageView.startAnimation(myFadeInAnimation); //Set animation to your ImageView

и внутри вашей папки res\anim\ файл анимации fadein.xml

<?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="3000"/>
</set>

но для постепенного перехода от сепии к полному цвету необходимо использовать TransitionDrawable

person Jorgesys    schedule 08.04.2010
comment
Работает просто отлично. Вам, вероятно, не понадобится android:repeatCount="infinite", хотя... - person Bojan Radivojevic Bomber; 29.06.2012

Я хотел, чтобы изображение исчезало (а затем исчезало) после перехода от полной непрозрачности к 0. Вот как я это сделал:

Animation a = new AlphaAnimation(1.00f, 0.00f);

a.setDuration(1000);
a.setAnimationListener(new AnimationListener() {

    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }

    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    public void onAnimationEnd(Animation animation) {
        yourView.setVisibility(View.GONE);

    }
});

yourView.startAnimation(a);
person Ricky    schedule 17.06.2011
comment
спасибо, это помогло мне с анимацией внутри recyclerview - person AndyRoid; 01.01.2015

Одним из методов для этого было бы использование набора анимаций. Глянь сюда;

http://developer.android.com/guide/topics/resources/available-resources.html#animation

Некоторый пример кода, который я сделал (бесконечный цикл исчезает в этом примере);

В файле анимации .xml;

<alpha android:fromAlpha="1.0" 
       android:toAlpha="0.3"  
       android:duration="7000"
       android:repeatMode="restart"
       android:repeatCount="infinite"/>

В java-файле;

 ImageView introanim = (ImageView) findViewById(R.id.introanim);
    Animation StoryAnimation = AnimationUtils.loadAnimation(this, R.anim.intro_anim);
    introanim.startAnimation(StoryAnimation);

Вы можете переходить от фона/изображения сепии к чему угодно...

person Mike Droid    schedule 08.04.2010
comment
Спасибо Хорхе и Майк. Я попробую ваши способы сделать. - person Hiroshi Iwatani; 09.04.2010

Еще одно гораздо более простое решение - просто поместить заглушку метода onClick в ваш ImageView, который вы хотите исчезнуть, а затем внутри метода вы добавите это:

view.animate().alpha(0).setDuration(2000);      

/* Alpha attribute translates to opacity. 
A solid View means that the alpha attribute is set to 1 (which is the 
default) and completely invisible is 0 */
person Emanuel Adrian Lucaci    schedule 23.01.2020