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