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