1326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell/* 2326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Copyright (C) 2007 The Android Open Source Project 3326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * 4326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * you may not use this file except in compliance with the License. 6326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * You may obtain a copy of the License at 7326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * 8326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 9326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * 10326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Unless required by applicable law or agreed to in writing, software 11326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * See the License for the specific language governing permissions and 14326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * limitations under the License. 15326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell */ 16326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.view; 18326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 19326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.content.Context; 20326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.util.AttributeSet; 21326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.util.Log; 22326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.widget.TextView; 231d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenimport com.android.frameworks.coretests.R; 24326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 25326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.os.Bundle; 26326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.widget.Button; 27326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.view.View; 28326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellimport android.app.Activity; 29326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 30326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell/** 31326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * Exercise View's ability to change their visibility: GONE, INVISIBLE and 32326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell * VISIBLE. 33326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell */ 34326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powellpublic class VisibilityCallback extends Activity { 35326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell private static final boolean DEBUG = false; 36326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 37326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell private MonitoredTextView mVictim; 38326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 39326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell @Override 40326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell protected void onCreate(Bundle icicle) { 41326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell super.onCreate(icicle); 42326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell setContentView(R.layout.visibility_callback); 43326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 44326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell // Find the view whose visibility will change 45326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mVictim = (MonitoredTextView)findViewById(R.id.victim); 46326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 47326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell // Find our buttons 48326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell Button visibleButton = (Button) findViewById(R.id.vis); 49326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell Button invisibleButton = (Button) findViewById(R.id.invis); 50326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell Button goneButton = (Button) findViewById(R.id.gone); 51326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 52326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell // Wire each button to a click listener 53326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell visibleButton.setOnClickListener(mVisibleListener); 54326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell invisibleButton.setOnClickListener(mInvisibleListener); 55326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell goneButton.setOnClickListener(mGoneListener); 56326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 57326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 58326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 59326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell View.OnClickListener mVisibleListener = new View.OnClickListener() { 60326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public void onClick(View v) { 61326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mVictim.setVisibility(View.VISIBLE); 62326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 63326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell }; 64326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 65326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell View.OnClickListener mInvisibleListener = new View.OnClickListener() { 66326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public void onClick(View v) { 67326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mVictim.setVisibility(View.INVISIBLE); 68326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 69326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell }; 70326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 71326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell View.OnClickListener mGoneListener = new View.OnClickListener() { 72326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public void onClick(View v) { 73326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mVictim.setVisibility(View.GONE); 74326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 75326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell }; 76326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 77326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public static class MonitoredTextView extends TextView { 78326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell private View mLastVisChangedView; 79326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell private int mLastChangedVisibility; 80326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 81326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public MonitoredTextView(Context context) { 82326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell super(context); 83326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 84326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 85326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public MonitoredTextView(Context context, AttributeSet attrs) { 86326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell super(context, attrs); 87326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 88326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 89326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public MonitoredTextView(Context context, AttributeSet attrs, int defStyle) { 90326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell super(context, attrs, defStyle); 91326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 92326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 93326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public View getLastVisChangedView() { 94326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell return mLastVisChangedView; 95326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 96326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 97326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell public int getLastChangedVisibility() { 98326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell return mLastChangedVisibility; 99326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 100326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 101326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell @Override 102326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell protected void onVisibilityChanged(View changedView, int visibility) { 103326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mLastVisChangedView = changedView; 104326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell mLastChangedVisibility = visibility; 105326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell 106326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell if (DEBUG) { 107326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell Log.d("viewVis", "visibility: " + visibility); 108326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 109326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 110326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell } 111326d808b858359464b2ffeb84f2e0a8e0c79b600Adam Powell} 112