com.android.talkbacktests.testsession.DismissibleViewTest.java Source code

Java tutorial

Introduction

Here is the source code for com.android.talkbacktests.testsession.DismissibleViewTest.java

Source

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.android.talkbacktests.testsession;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.LinearLayout;

import com.android.talkbacktests.R;

public class DismissibleViewTest extends BaseTestContent implements View.OnClickListener {

    private View mDismissibleView;
    private LinearLayout mContainer;

    public DismissibleViewTest(Context context, String subtitle, String description) {
        super(context, subtitle, description);
    }

    @Override
    public View getView(final LayoutInflater inflater, ViewGroup container, Context context) {
        View view = inflater.inflate(R.layout.test_dismissible_view, container, false);

        view.findViewById(R.id.test_dismissible_view_dismiss_button).setOnClickListener(this);
        view.findViewById(R.id.test_dismissible_view_reset_button).setOnClickListener(this);

        mContainer = (LinearLayout) view.findViewById(R.id.test_dismissible_view_container);
        mDismissibleView = view.findViewById(R.id.dismissible_view);
        ViewCompat.setAccessibilityDelegate(mDismissibleView, new MyDelegate());

        return view;
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
        case R.id.test_dismissible_view_dismiss_button:
            if (mContainer.getChildCount() > 1) {
                mDismissibleView.performAccessibilityAction(AccessibilityNodeInfo.ACTION_DISMISS, null);
            }
            break;
        case R.id.test_dismissible_view_reset_button:
            if (mContainer.getChildCount() < 2) {
                mContainer.addView(mDismissibleView);
            }
            break;
        }
    }

    private final class MyDelegate extends AccessibilityDelegateCompat {

        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            info.addAction(AccessibilityNodeInfoCompat.ACTION_DISMISS);
        }

        @Override
        public boolean performAccessibilityAction(View host, int action, Bundle args) {
            switch (action) {
            case AccessibilityNodeInfoCompat.ACTION_DISMISS:
                mContainer.removeView(mDismissibleView);
                return true;
            default:
                return super.performAccessibilityAction(host, action, args);
            }
        }
    }
}