1*90c8c64dSAndroid Build Coastguard Worker /* 2*90c8c64dSAndroid Build Coastguard Worker * Copyright 2013 The Android Open Source Project 3*90c8c64dSAndroid Build Coastguard Worker * 4*90c8c64dSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*90c8c64dSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*90c8c64dSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*90c8c64dSAndroid Build Coastguard Worker * 8*90c8c64dSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*90c8c64dSAndroid Build Coastguard Worker * 10*90c8c64dSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*90c8c64dSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*90c8c64dSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*90c8c64dSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*90c8c64dSAndroid Build Coastguard Worker * limitations under the License. 15*90c8c64dSAndroid Build Coastguard Worker */ 16*90c8c64dSAndroid Build Coastguard Worker 17*90c8c64dSAndroid Build Coastguard Worker package com.example.android.textswitcher; 18*90c8c64dSAndroid Build Coastguard Worker 19*90c8c64dSAndroid Build Coastguard Worker import android.app.Activity; 20*90c8c64dSAndroid Build Coastguard Worker import android.os.Bundle; 21*90c8c64dSAndroid Build Coastguard Worker import android.view.Gravity; 22*90c8c64dSAndroid Build Coastguard Worker import android.view.View; 23*90c8c64dSAndroid Build Coastguard Worker import android.view.animation.Animation; 24*90c8c64dSAndroid Build Coastguard Worker import android.view.animation.AnimationUtils; 25*90c8c64dSAndroid Build Coastguard Worker import android.widget.Button; 26*90c8c64dSAndroid Build Coastguard Worker import android.widget.TextSwitcher; 27*90c8c64dSAndroid Build Coastguard Worker import android.widget.TextView; 28*90c8c64dSAndroid Build Coastguard Worker import android.widget.ViewSwitcher.ViewFactory; 29*90c8c64dSAndroid Build Coastguard Worker 30*90c8c64dSAndroid Build Coastguard Worker /** 31*90c8c64dSAndroid Build Coastguard Worker * This sample shows the use of the {@link android.widget.TextSwitcher} View with animations. A 32*90c8c64dSAndroid Build Coastguard Worker * {@link android.widget.TextSwitcher} is a special type of {@link android.widget.ViewSwitcher} that animates 33*90c8c64dSAndroid Build Coastguard Worker * the current text out and new text in when 34*90c8c64dSAndroid Build Coastguard Worker * {@link android.widget.TextSwitcher#setText(CharSequence)} is called. 35*90c8c64dSAndroid Build Coastguard Worker */ 36*90c8c64dSAndroid Build Coastguard Worker public class MainActivity extends Activity { 37*90c8c64dSAndroid Build Coastguard Worker private TextSwitcher mSwitcher; 38*90c8c64dSAndroid Build Coastguard Worker private int mCounter = 0; 39*90c8c64dSAndroid Build Coastguard Worker 40*90c8c64dSAndroid Build Coastguard Worker @Override onCreate(Bundle savedInstanceState)41*90c8c64dSAndroid Build Coastguard Worker protected void onCreate(Bundle savedInstanceState) { 42*90c8c64dSAndroid Build Coastguard Worker super.onCreate(savedInstanceState); 43*90c8c64dSAndroid Build Coastguard Worker setContentView(R.layout.sample_main); 44*90c8c64dSAndroid Build Coastguard Worker 45*90c8c64dSAndroid Build Coastguard Worker // Get the TextSwitcher view from the layout 46*90c8c64dSAndroid Build Coastguard Worker mSwitcher = (TextSwitcher) findViewById(R.id.switcher); 47*90c8c64dSAndroid Build Coastguard Worker 48*90c8c64dSAndroid Build Coastguard Worker // BEGIN_INCLUDE(setup) 49*90c8c64dSAndroid Build Coastguard Worker // Set the factory used to create TextViews to switch between. 50*90c8c64dSAndroid Build Coastguard Worker mSwitcher.setFactory(mFactory); 51*90c8c64dSAndroid Build Coastguard Worker 52*90c8c64dSAndroid Build Coastguard Worker /* 53*90c8c64dSAndroid Build Coastguard Worker * Set the in and out animations. Using the fade_in/out animations 54*90c8c64dSAndroid Build Coastguard Worker * provided by the framework. 55*90c8c64dSAndroid Build Coastguard Worker */ 56*90c8c64dSAndroid Build Coastguard Worker Animation in = AnimationUtils.loadAnimation(this, 57*90c8c64dSAndroid Build Coastguard Worker android.R.anim.fade_in); 58*90c8c64dSAndroid Build Coastguard Worker Animation out = AnimationUtils.loadAnimation(this, 59*90c8c64dSAndroid Build Coastguard Worker android.R.anim.fade_out); 60*90c8c64dSAndroid Build Coastguard Worker mSwitcher.setInAnimation(in); 61*90c8c64dSAndroid Build Coastguard Worker mSwitcher.setOutAnimation(out); 62*90c8c64dSAndroid Build Coastguard Worker // END_INCLUDE(setup) 63*90c8c64dSAndroid Build Coastguard Worker 64*90c8c64dSAndroid Build Coastguard Worker /* 65*90c8c64dSAndroid Build Coastguard Worker * Setup the 'next' button. The counter is incremented when clicked and 66*90c8c64dSAndroid Build Coastguard Worker * the new value is displayed in the TextSwitcher. The change of text is 67*90c8c64dSAndroid Build Coastguard Worker * automatically animated using the in/out animations set above. 68*90c8c64dSAndroid Build Coastguard Worker */ 69*90c8c64dSAndroid Build Coastguard Worker Button nextButton = (Button) findViewById(R.id.button); 70*90c8c64dSAndroid Build Coastguard Worker nextButton.setOnClickListener(new View.OnClickListener() { 71*90c8c64dSAndroid Build Coastguard Worker 72*90c8c64dSAndroid Build Coastguard Worker @Override 73*90c8c64dSAndroid Build Coastguard Worker public void onClick(View v) { 74*90c8c64dSAndroid Build Coastguard Worker mCounter++; 75*90c8c64dSAndroid Build Coastguard Worker // BEGIN_INCLUDE(settext) 76*90c8c64dSAndroid Build Coastguard Worker mSwitcher.setText(String.valueOf(mCounter)); 77*90c8c64dSAndroid Build Coastguard Worker // END_INCLUDE(settext) 78*90c8c64dSAndroid Build Coastguard Worker } 79*90c8c64dSAndroid Build Coastguard Worker }); 80*90c8c64dSAndroid Build Coastguard Worker 81*90c8c64dSAndroid Build Coastguard Worker // Set the initial text without an animation 82*90c8c64dSAndroid Build Coastguard Worker mSwitcher.setCurrentText(String.valueOf(mCounter)); 83*90c8c64dSAndroid Build Coastguard Worker 84*90c8c64dSAndroid Build Coastguard Worker } 85*90c8c64dSAndroid Build Coastguard Worker 86*90c8c64dSAndroid Build Coastguard Worker // BEGIN_INCLUDE(factory) 87*90c8c64dSAndroid Build Coastguard Worker /** 88*90c8c64dSAndroid Build Coastguard Worker * The {@link android.widget.ViewSwitcher.ViewFactory} used to create {@link android.widget.TextView}s that the 89*90c8c64dSAndroid Build Coastguard Worker * {@link android.widget.TextSwitcher} will switch between. 90*90c8c64dSAndroid Build Coastguard Worker */ 91*90c8c64dSAndroid Build Coastguard Worker private ViewFactory mFactory = new ViewFactory() { 92*90c8c64dSAndroid Build Coastguard Worker 93*90c8c64dSAndroid Build Coastguard Worker @Override 94*90c8c64dSAndroid Build Coastguard Worker public View makeView() { 95*90c8c64dSAndroid Build Coastguard Worker 96*90c8c64dSAndroid Build Coastguard Worker // Create a new TextView 97*90c8c64dSAndroid Build Coastguard Worker TextView t = new TextView(MainActivity.this); 98*90c8c64dSAndroid Build Coastguard Worker t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 99*90c8c64dSAndroid Build Coastguard Worker t.setTextAppearance(MainActivity.this, android.R.style.TextAppearance_Large); 100*90c8c64dSAndroid Build Coastguard Worker return t; 101*90c8c64dSAndroid Build Coastguard Worker } 102*90c8c64dSAndroid Build Coastguard Worker }; 103*90c8c64dSAndroid Build Coastguard Worker // END_INCLUDE(factory) 104*90c8c64dSAndroid Build Coastguard Worker } 105