Представление не доступно в режиме разговора после анимации - PullRequest
0 голосов
/ 03 октября 2019

Столкнулся с очень странной проблемой и не смог найти решения здесь или в других блогах.

Изначально представление невидимо и с использованием AlphaAnimation и ScaleAnimation делает его видимым.

Код анимации

public void scaleView(View v, int delay) {

        AnimationSet animatorSet = new AnimationSet(true);
        animatorSet.setFillAfter(true);
        animatorSet.setInterpolator(new LinearOutSlowInInterpolator());

        AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
        animation1.setDuration(200);
        animation1.setStartOffset(delay);

        ScaleAnimation fadeIn = new ScaleAnimation(0.5f, 1f, 0.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        fadeIn.setDuration(200);
        fadeIn.setStartOffset(delay);

        animatorSet.addAnimation(animation1);
        animatorSet.addAnimation(fadeIn);

        animatorSet.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                v.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
                v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });


        v.startAnimation(animatorSet);

    }

Просмотр

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llContainerMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:background="@color/app_bg_f8"
    android:gravity="center"
    android:orientation="vertical">

        <RelativeLayout
        android:id="@+id/rlFacebook"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginStart="@dimen/dp_20"
        android:layout_marginEnd="@dimen/dp_20"
        android:layout_marginBottom="@dimen/dp_10"
        android:contentDescription="@string/lbl_login_with_facebook"
        android:importantForAccessibility="yes"
        android:visibility="invisible">

        <LinearLayout
        android:id="@+id/llLoginWithFacebook"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_facebook_login_32"
        android:minHeight="@dimen/dp_48">

        <ImageView
        android:layout_width="25dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="@dimen/dp_16"
        android:scaleType="center"
        android:src="@drawable/ic_facebook_logo" />

        <View
        style="@style/ShadowVertical"
        android:layout_marginStart="@dimen/dp_10"
        android:layout_marginEnd="@dimen/dp_10" />

        <TextView
        android:id="@+id/txtFacebook"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginEnd="@dimen/dp_10"
        android:gravity="center_vertical"
        android:maxLines="1"
        android:text="@string/lbl_login_with_facebook"
        android:textColor="@color/white"
        android:textSize="@dimen/sp_16" />
        </LinearLayout>

        <ImageView
        android:id="@+id/imgLoginWithFacebook"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/llLoginWithFacebook"
        android:layout_alignTop="@+id/llLoginWithFacebook"
        android:layout_alignEnd="@id/llLoginWithFacebook"
        android:layout_alignBottom="@id/llLoginWithFacebook"
        android:background="@drawable/bg_ripple_32" />

    </RelativeLayout>

</RelativeLayout>

Мои усилия по обеспечению доступности

1) Добавлено описание контента:

android:contentDescription="@string/lbl_login_with_facebook"

2) Достаточно добавить описание контента в поле зрения, но, тем не менее, оно не работает, поэтому после добавления анимации я добавляю фокус и говорю компилятору, что это важно дляследующий фрагмент:

v.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);

Но все же, не повезло, чтобы получить фокус. Может кто-нибудь помочь мне разобраться, как сделать его доступным?

1 Ответ

0 голосов
/ 09 октября 2019

Я думаю, у вас есть простая ошибка в вашем коде. Попробуйте изменить это:

v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);

на это

v.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
...