`
贫僧不吃肉
  • 浏览: 63026 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【Android开发】TextSwitcher 使用详解

阅读更多

TextSwitcher 字面理解是文字交换器,是ViewSwitcher的子类,从ViewSwitcher来看,是View交换器,TextSwitcher继承自ViewSwitcher,显然是交换TextView。

 

效果图:


应用分为三步:
1.得到 TextSwitcher 实例对象
  TextSwitcher switcher = (TextSwitcher) findViewById(R.id.textSwitcher);
2.为switcher指定ViewSwitcher.ViewFactory工厂,该工厂会产生出转换时需要的View
  switcher.setFactory(this);
3.为switcher设定显示的内容,该方法执行,就会切换到下个View
  switcher.setText(String.valueOf(new Random().nextInt()));

其中 要实现ViewSwitcher.ViewFactory中的makeView()方法
// 重写 ViewSwitcher.ViewFactory 的 makeView()方法,返回一个 View,TextSwitcher 交换时使用
@Override
public View makeView() {
TextView textView = new TextView(this);
textView.setTextSize(36);
return textView;
}

如果不适用ViewSwitcher.ViewFactory,也可以使用下面的方式代替
//如果不用switcher.setFactory()方法设置转换时的View,也可以调用两次switcher.addView(view,index,params);
//其中view为要切换的View,index为索引,params是添加时的宽,高参数
// TextView textView1 = new TextView(this);
// textView1.setTextSize(36);
// textView1.setTextColor(Color.RED);
// TextView textView2 = new TextView(this);
// textView2.setTextSize(36);
// textView2.setTextColor(Color.YELLOW);
// switcher.addView(textView1, 0,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
// switcher.addView(textView2, 1,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

代码:

Java代码 复制代码 收藏代码
  1. package com.zhou.activity;   
  2.   
  3. import java.util.Random;   
  4.   
  5. import android.app.Activity;   
  6. import android.os.Bundle;   
  7. import android.view.View;   
  8. import android.view.animation.Animation;   
  9. import android.view.animation.AnimationUtils;   
  10. import android.widget.Button;   
  11. import android.widget.TextSwitcher;   
  12. import android.widget.TextView;   
  13. import android.widget.ViewSwitcher;   
  14.   
  15. public class TextSwitcherActivity extends Activity implements ViewSwitcher.ViewFactory{   
  16.     @Override  
  17.     protected void onCreate(Bundle savedInstanceState) {   
  18.         super.onCreate(savedInstanceState);   
  19.         this.setContentView(R.layout.textswithcer);   
  20.         //设置标题   
  21.         setTitle("文字转换器");   
  22.         //取得文字转换器   
  23.         final TextSwitcher switcher = (TextSwitcher) findViewById(R.id.textSwitcher);   
  24.         // 指定转换器的 ViewSwitcher.ViewFactory,ViewSwitcher.ViewFactory会为TextSwitcher提供转换的View   
  25.         switcher.setFactory(this);   
  26.            
  27.         //如果不用switcher.setFactory()方法设置转换时的View,也可以调用两次switcher.addView(view,index,params);   
  28.         //其中view为要切换的View,index为索引,params是添加时的宽,高参数   
  29. //      TextView textView1 = new TextView(this);   
  30. //      textView1.setTextSize(36);   
  31. //      textView1.setTextColor(Color.RED);   
  32. //      TextView textView2 = new TextView(this);   
  33. //      textView2.setTextSize(36);   
  34. //      textView2.setTextColor(Color.YELLOW);   
  35. //      switcher.addView(textView1, 0,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));   
  36. //      switcher.addView(textView2, 1,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));   
  37.            
  38.         // 设置转换时的淡入和淡出动画效果(可选)   
  39.         Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);   
  40.         Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);   
  41.         switcher.setInAnimation(in);   
  42.         switcher.setOutAnimation(out);   
  43.   
  44.         // 单击一次按钮改变一次文字   
  45.         Button btnChange = (Button) this.findViewById(R.id.btnChange);   
  46.         btnChange.setOnClickListener(new View.OnClickListener() {   
  47.             @Override  
  48.             public void onClick(View v) {   
  49.                 //为TextSwitcher设置显示内容,执行一次switcher.setText()方法,就会切换到下一个View   
  50.                 switcher.setText(String.valueOf(new Random().nextInt()));   
  51.             }   
  52.         });   
  53.     }   
  54.     // 重写 ViewSwitcher.ViewFactory 的 makeView()方法,返回一个 View,TextSwitcher 交换时使用   
  55.     @Override  
  56.     public View makeView() {   
  57.         TextView textView = new TextView(this);   
  58.         textView.setTextSize(36);   
  59.         return textView;   
  60.     }   
  61. }  

 

 

 

 

ps: 关于如何更改TextSwitcher字体颜色的问题

 

这个问题咋一看简单,但是没有门路的话,半天也解决不了,我也遇到了这个问题,我的TextSwitcher默认颜色是灰色,和我的背景图颜色差不多了,想改个颜色,但是找了很久也找不到解决办法。

弄了一小时才找到解决的办法(还要感谢某群的群主“飞雪无情”)给我的提示~~

 

现特贴出解决方案(其实很简单,但是一时想不到的话,也会让人很抓狂):

 

	  public View makeView() {   
	        TextView tv = new TextView(this);   
	        tv.setTextSize(36);  
	        tv.setTextColor(Color.BLACK);	   
	        return tv;   
	    } 

 

修改TextSwitcher的makeView()中的 tv.setTextColor(Color.BLACK);   就好了。

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Android 中textSwitcher与imageSwitcher的使用

    在Android开发中,`TextSwitcher`和`ImageSwitcher`是两种非常实用的视图切换组件,主要用于在界面上动态地展示文本或图像。它们都继承自`ViewSwitcher`类,提供了一种平滑过渡的效果,使得界面在内容更新时更加流畅...

    Android 上下滚动TextSwitcher实例详解

    在Android开发中,TextSwitcher是一个非常有用的组件,它用于在界面上动态切换文本内容,通常搭配动画效果,使得文本的切换更为流畅和吸引人。本文将深入探讨如何在Android中实现上下滚动的TextSwitcher实例。 首先...

    Android TextSwitcher文本切换器和ViewFlipper使用详解

    在Android开发中,TextSwitcher和ViewFlipper是两种用于实现动态内容切换的视图组件。它们可以帮助开发者创建丰富的用户界面,特别是在展示滚动文本、广告轮播或动态更新信息的场景下。 首先,我们来详细了解**...

    Android控件及布局的使用

    ### Android控件及布局的使用知识点详解 #### 第一章:Android基础 ##### 1.1 Android开发环境搭建 - **安装JDK (Java Development Kit)**:Java是Android开发的基础语言,因此首先需要安装JDK。可以从Oracle官网...

    自定义TextView实现垂直自动轮播

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例中,我们探讨的是如何自定义一个TextView来实现垂直自动轮播功能,这个控件名为`ScrollTextView`,它继承了`TextSwitcher`。`TextSwitcher...

    android视图组和布局

    在Android开发中,屏幕元素体系的构建基于视图(View)与视图组(ViewGroup)。视图组是一个特殊的视图,它的主要功能是容纳并管理一系列的子视图。这一体系的层次结构丰富,能够构建出复杂多变的用户界面。 - **...

    android viewflipper手势拖动效果(An-Beer工作室)

    【Android ViewFlipper 手势拖动效果详解】 在 Android 应用开发中,ViewFlipper 是一个非常有用的布局组件,它可以实现多个视图(View)之间的切换,并且支持手势滑动切换效果,使得用户界面更加生动和交互性更强...

    android学习文档--控件2.pptx

    综上所述,`ImageView`、`DatePicker` 和 `TimePicker` 是 Android 应用开发中经常使用的控件。通过合理利用这些控件,开发者可以轻松地为应用增添丰富的交互功能。同时,熟练掌握这些控件的基本用法和高级特性对于...

    Android中文API

    在Android应用程序开发过程中,用户界面的构建与维护是一项至关重要的任务。Android系统通过一系列精细设计的API来支持开发者构建高质量、高性能的用户界面。本文主要探讨Android如何绘制视图以及如何创建自定义组件...

Global site tag (gtag.js) - Google Analytics