1bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini/* 2bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * Copyright (C) 2013 The Android Open Source Project 3bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * 4bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * Licensed under the Apache License, Version 2.0 (the "License"); 5bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * you may not use this file except in compliance with the License. 6bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * You may obtain a copy of the License at 7bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * 8bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * http://www.apache.org/licenses/LICENSE-2.0 9bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * 10bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * Unless required by applicable law or agreed to in writing, software 11bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * distributed under the License is distributed on an "AS IS" BASIS, 12bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * See the License for the specific language governing permissions and 14bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * limitations under the License. 15bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini */ 16bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 17bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpinipackage com.example.android.supportv4.widget; 18bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 19bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.app.Activity; 20bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.widget.Button; 21bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.widget.LinearLayout; 22bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.widget.ProgressBar; 23bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.widget.TextView; 24bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.os.Bundle; 25bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.os.Handler; 26bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.support.v4.widget.ContentLoadingProgressBar; 27bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.view.View; 28bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.view.View.OnClickListener; 29bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.view.ViewTreeObserver; 30bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport android.view.Window; 31bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 32bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpiniimport com.example.android.supportv4.R; 33bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 34bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini/** 35bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * Demonstrates how to use the ContentLoadingProgressBar. By default, the 36bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * developer should start the ContentLoadingProgressBar with visibility of 37bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * "gone" or "invisible". The ContentLoadingProgressBar will be shown after the 38bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * default delay for at least a minimum time regardless of when the "hide" 39bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini * button is pressed. 40bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini */ 41bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpinipublic class ContentLoadingProgressBarActivity extends Activity implements 42bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini OnClickListener, ViewTreeObserver.OnGlobalLayoutListener { 43bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 44bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private Button mShowButton; 45bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private Button mHideButton; 46bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private ContentLoadingProgressBar mBar; 47bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private long mShowTime; 48bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private long mHideTime; 49bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private TextView mShowText; 50bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private TextView mShowTextDone; 51bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private TextView mHideText; 52bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private TextView mHideTextDone; 53bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private int mLastVisibility; 54bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini private long mVisibilityChangedTime; 55bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 56bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini @Override 57bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini protected void onCreate(Bundle savedInstanceState) { 58bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini super.onCreate(savedInstanceState); 59bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini setContentView(R.layout.content_loading_progressbar); 60bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 61bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mBar = (ContentLoadingProgressBar)findViewById(R.id.progressbar); 62bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowButton = (Button)findViewById(R.id.show); 63bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowButton.setOnClickListener(this); 64bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideButton = (Button)findViewById(R.id.hide); 65bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideButton.setOnClickListener(this); 66bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 67bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowText = (TextView)findViewById(R.id.show_text); 68bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowTextDone = (TextView)findViewById(R.id.show_text_done); 69bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideText = (TextView)findViewById(R.id.hide_text); 70bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideTextDone = (TextView)findViewById(R.id.hide_text_done); 71bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 72bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mLastVisibility = mBar.getVisibility(); 73bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 74bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mBar.getViewTreeObserver().addOnGlobalLayoutListener(this); 75bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 76bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 77bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini @Override 78bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini public void onClick(View v) { 79bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini switch (v.getId()) { 80bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini case R.id.show: 81bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mBar.show(); 82bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowTime = System.currentTimeMillis(); 83bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowText.setText("Show clicked at " + mShowTime); 84bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini break; 85bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini case R.id.hide: 86bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mBar.hide(); 87bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideTime = System.currentTimeMillis(); 88bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideText.setText("Hide clicked at " + mHideTime); 89bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini break; 90bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 91bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 92bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 93bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini @Override 94bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini public void onGlobalLayout() { 95bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini final int visibility = mBar.getVisibility(); 96bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini 97bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini if (mLastVisibility != visibility) { 98bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini if (visibility == View.VISIBLE) { 99bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mVisibilityChangedTime = System.currentTimeMillis(); 100bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mShowTextDone.setText("Shown at " 101bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini + (mVisibilityChangedTime - mShowTime)); 102bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } else { 103bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mHideTextDone.setText("Hidden after " 104bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini + (System.currentTimeMillis() - mVisibilityChangedTime)); 105bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 106bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini mLastVisibility = mBar.getVisibility(); 107bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 108bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini } 109bd6d975bf288efaa3392eb73d98579af3e7e4688Mindy DelliCarpini} 110