zoukankan      html  css  js  c++  java
  • 文本切换器(TextSwitcher)的功能和用法

          TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果。与ImageSwitcher相似的是,使用TextSwitcher也需要设置一个ViewFactory。与ImageSwitcher不同的是,TextSwitcher所需的ViewFactory的makeView()方法必须返回一个TextView组件。

         实例:文本切换器TextSwitccher

         界面布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
      >
      <!-- 定义一个TextSwitcher,并指定了文本切换时的动画效果 -->
       <TextSwitcher android:id="@+id/textSwitcher"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:inAnimation="@android:anim/slide_in_left"
           android:outAnimation="@android:anim/slide_out_right"
           android:onClick="next"/>
    </LinearLayout>

    上面的布局文件中定义了一个TextSwitcher,并为该文本切换器指定了文本切换时的动画效果。接下来Activity只要为该TextSwitcher设置ViewFactory,该TextSwitcher即可正常工作。

        下面是该Activity的代码:

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Color;
    import android.view.Menu;
    import android.view.View;
    import android.widget.TextSwitcher;
    import android.widget.TextView;
    import android.widget.ViewSwitcher;
    
    public class TextSwitcherTest extends Activity {
        TextSwitcher textSwitcher; 
        
        String[] strs=new String[]{
                "疯狂Java讲义",
                "轻量级Java EE企业应用实战",
                "疯狂Android讲义",
                "疯狂Ajax讲义"
        };
        int curStr;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.text_switcher_test);
            textSwitcher=(TextSwitcher)findViewById(R.id.textSwitcher);
            textSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
                
                @Override
                public View makeView() {
                    // TODO Auto-generated method stub
                    TextView tv=new TextView(TextSwitcherTest.this);
                    tv.setTextSize(40);
                    tv.setTextColor(Color.MAGENTA);
                    return tv;
                }
            });
            next(null);
        }
         
        //事件处理函数,控制显示下一个字符串
        public void next(View source)
        {
            textSwitcher.setText(strs[curStr++%strs.length]);
            
        }
        
        
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.text_switcher_test, menu);
            return true;
        }
    
    }

         上面的代码重写了ViewFactory的makeView()方法,该方法返回一个TextView,这样即可让TextSwitcher正常工作。当程序要切换TextSwitcher显示文本时,调用TextSwitcher的setText()方法修改文本即可。

         运行上面的Activity代码可以考到如下效果:

  • 相关阅读:
    P4097 [HEOI2013]Segment 李超线段树
    P3592 [POI2015]MYJ
    P3698 [CQOI2017]小Q的棋盘
    P4098 [HEOI2013]ALO 可持久化01Trie
    P2331 [SCOI2005]最大子矩阵
    P4099 [HEOI2013]SAO
    loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移
    CF765F Souvenirs 离线+线段树+主席树
    CF1097D Makoto and a Blackboard
    loj #6570. 毛毛虫计数
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3388517.html
Copyright © 2011-2022 走看看