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