Подтвердить что ты не робот

AlphaAnimation не работает

Я искал решение моей проблемы. Но мой код, похоже, в порядке.

Я попытаюсь объяснить: у меня есть TextView с android: alpha = "0" в моем определении макета. Я хочу (при щелчке по изображению) показать, что TextView с AlphaAnimation, от 0.0f до 1.0f.

Моя проблема в том, что когда я нажимаю изображение, ничего не происходит. Но странно, что если я установил его альфа-1 в определении макета, и я нажму на изображение, я смогу увидеть анимацию (альфа-1 → альфа 0 → альфа 1).

Что я делаю неправильно?

Мой код:

TextView tv = (TextView) findViewById(R.id.number);

AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
animation1.setDuration(1000);
animation1.setFillAfter(true);
tv.startAnimation(animation1);

Спасибо заранее.

4b9b3361

Ответ 1

Проблема в android:alpha="0". Это свойство устанавливает прозрачность представления http://developer.android.com/reference/android/view/View.html#attr_android:alpha

Когда свойство alpha равно 0, анимация меняет прозрачность от 0*0.0f=0 до 0*1.0f=0. Когда для свойства alpha установлено значение 1, анимация меняет прозрачность от 1*0.0f=0 до 1*1.0f=1. Вот почему в первом случае вы не можете видеть текст, а во втором все работает так, как ожидалось.

Чтобы сделать все, вы должны установить свойство видимости в невидимое в макете xml. И перед началом вызова альфа-анимации tv.setVisibility(View.VISIBLE);

Ответ 2

Более простой способ представлен в этом ответе:

tv.animate().alpha(1).setDuration(1000);

Ответ 3

на самом деле, у Android есть ДВА альфа-свойства для просмотра

    /**
     * The opacity of the View. This is a value from 0 to 1, where 0 means
     * completely transparent and 1 means completely opaque.
     */
    @ViewDebug.ExportedProperty
    float mAlpha = 1f;

    /**
     * The opacity of the view as manipulated by the Fade transition. This is a hidden
     * property only used by transitions, which is composited with the other alpha
     * values to calculate the final visual alpha value.
     */
    float mTransitionAlpha = 1f;


/**
 * Calculates the visual alpha of this view, which is a combination of the actual
 * alpha value and the transitionAlpha value (if set).
 */
private float getFinalAlpha() {
    if (mTransformationInfo != null) {
        return mTransformationInfo.mAlpha * mTransformationInfo.mTransitionAlpha;
    }
    return 1;
}

вид финальной альфы является продуктом двух альфа

View # setAlpha (float) & Просмотр # animate() & Android: альфа → Малфа

AlphaAnimation → mTransitionAlpha