赞
踩
TextSwitcher 是 ViewSwitcher 的 子 类, 它 与 ImageSwitcher 很 相 似, 都 需 要 设 置 一 个ViewFactory,并且都可以设置切换时所显示的动画效果。不同的是 TextSwitcher 在实现 ViewFactory接口中的 makeView() 方法时,需要返回一个 TextView 组件。
<TextSwitcher
android:id="@+id/textSwitcher"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<?xml version="1.0"encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns app="http://schemas.android.com/apk/res-auto" xmlns tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/bg" tools context="com.mingrisoft.MainActivity"> <!--定义文本切换器并设置文本切换时的动画效果--> <TextSwitcher android:id="@+id/textSwitcher" android:layout_width="260dp" android:layout_height="100dp" android:layout_marginTop="50dp" android:layout_marginLeft="50dp" android:inAnimation="@anim/in_animation" android:outAnimation="@anim/out_animation"> </Textswitcher> </RelativeLayout>
注意:在XML文件中设置TextSwitcher组件时,需要指定文字切换时进入与退出的动画文件,如代码中的“anim/in_animation”文字切换时的进入动画文件,“anim/out_animation”文字切换时的退出动画文件。这两个动画文件需要手动创建
public class MainActivity extends Activity{ //定义文本切换器 private TextSwitcher textSwitcher; //定义用于计算诗句数组下标 private int index; //定义唐诗数组 String[] poetry = new String[]{ "望庐山瀑布", "[作者]李白", "日照香炉生紫烟,", "避看瀑布挂前川。", "飞流直下三千尺,", "疑是银河落九天。" }; @Override protected void onCreate(Bundle savedInstancestate){ super.onCreate(savedInstancestate); setContentview(R.layout.activity_main); } }
在主活动的 onCreate() 方法中,首先获取布局文件中的 TextSwitcher 组件,然后为其设置1 个 ViewFactory,并重写makeView() 方法,最后在重写的 makeView() 方法中创建 1 个用于显示唐诗文字的 TextView。
//获取文本切换器组件
textSwitcher (TextSwitcher)findviewById(R.id.textswitcher);
//为文本切换器设置Factory
textSwitcher.setFactory(new ViewSwitcher.ViewFactory(){
@Override
public View makeview(){
//创建文本框组件用于显示唐诗文字
Textview textview = new Textview(MainActivity.this);
textView.setTextsize(30);
//设置文字大小
textView.setTextColor(Color.BLACK);
//设置文字颜色为黑色
return textView;
}
})
重写onTouchEvent()方法,在该方法中实现单击手机或模拟器屏幕时切换显示的唐诗文字。具体代码如下:
@Override
public boolean onTouchEvent(MotionEvent event){
//判断手指单击屏幕时
if (event.getAction()==MotionEvent.ACTION_DOWN){
//切换显示的诗句文字
textSwitcher.setText(poetry[index++%poetry.length ])
return super.onTouchEvent(event);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。