玩转Android---组件篇---TextSwitcher
2015-07-30 19:38
633 查看
原址:http://hualang.iteye.com/category/143855
还记得有一次淘宝的电话面试的时候问了我一个关于Android的问题:如何让一个数字在组件上从0到n连续的显示变化,用到了什么方法的问题。今天将这个问题解答一下
这里,用到的是TextSwitcher,它仅仅包含子类型TextView,TextSwitcher用来使得屏幕上的Label产生动画效果,每当setText(CharSequence)被调用时,TextSwitcher使用动画方式将当前的文字内容消失并显示新的内容
下面看看实例中的使用以及效果
MainActivity.java
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package org.loulijun.android01;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity implements ViewFactory {
private TextSwitcher mSwitcher;
private int mCounter = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSwitcher = (TextSwitcher)findViewById(R.id.switcher);
mSwitcher.setFactory(this);
Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
mSwitcher.setInAnimation(in);
mSwitcher.setOutAnimation(out);
Button nextButton = (Button)findViewById(R.id.next);
nextButton.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
mCounter++;
updateCounter();
}
});
updateCounter();
}
private void updateCounter()
{
mSwitcher.setText(String.valueOf(mCounter));
}
public View makeView()
{
TextView t = new TextView(this);
t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
t.setTextSize(36);
return t;
}
}
main.xml
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一个"
/>
<TextSwitcher
android:id="@+id/switcher"
android:background="#00FFFF"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
上效果图:
![](http://dl.iteye.com/upload/attachment/524124/0237d2cd-2047-347c-a4c0-e2bf1eee4010.gif)
![](http://dl.iteye.com/upload/attachment/524126/98cb7aca-ba41-3c67-ba4e-6386dc894658.gif)
当然,如果要是让其自动的变换的话,可以使用一下hander或者线程,让其变化的主要是TextSwitcher组件中的setText方法。
查看图片附件
还记得有一次淘宝的电话面试的时候问了我一个关于Android的问题:如何让一个数字在组件上从0到n连续的显示变化,用到了什么方法的问题。今天将这个问题解答一下
这里,用到的是TextSwitcher,它仅仅包含子类型TextView,TextSwitcher用来使得屏幕上的Label产生动画效果,每当setText(CharSequence)被调用时,TextSwitcher使用动画方式将当前的文字内容消失并显示新的内容
下面看看实例中的使用以及效果
MainActivity.java
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package org.loulijun.android01;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity implements ViewFactory {
private TextSwitcher mSwitcher;
private int mCounter = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSwitcher = (TextSwitcher)findViewById(R.id.switcher);
mSwitcher.setFactory(this);
Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
mSwitcher.setInAnimation(in);
mSwitcher.setOutAnimation(out);
Button nextButton = (Button)findViewById(R.id.next);
nextButton.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
mCounter++;
updateCounter();
}
});
updateCounter();
}
private void updateCounter()
{
mSwitcher.setText(String.valueOf(mCounter));
}
public View makeView()
{
TextView t = new TextView(this);
t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
t.setTextSize(36);
return t;
}
}
main.xml
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一个"
/>
<TextSwitcher
android:id="@+id/switcher"
android:background="#00FFFF"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
上效果图:
![](http://dl.iteye.com/upload/attachment/524124/0237d2cd-2047-347c-a4c0-e2bf1eee4010.gif)
![](http://dl.iteye.com/upload/attachment/524126/98cb7aca-ba41-3c67-ba4e-6386dc894658.gif)
当然,如果要是让其自动的变换的话,可以使用一下hander或者线程,让其变化的主要是TextSwitcher组件中的setText方法。
查看图片附件
相关文章推荐
- 玩转Android--组件篇---Handler的使用
- 玩转Android---组件篇---AnalogClock,DigitalClock
- 玩转Android---2D图形及动画---Frame动画
- 玩转Android---2D图形及动画---View类使用
- 玩转Android---组件篇---SeekBar,RatingBar,Chronometer
- 玩转Android---组件篇---Handler的使用(2)
- 让你的 EditText 全部清除
- Android的ListView中给RadioGroup添加setOnCheckChangeListener的问题之一
- android省市区三级联动案例:(三)主要功能实现
- android省市区三级联动案例:(三)布局文件
- Android内存泄漏分析及调试
- 关于 android 程序中的 context
- Chromium on Android: Android在系统Chromium为了实现主消息循环分析
- android省市区三级联动案例:(一)运行效果
- Android中Handler的简单应用(一)
- android ViewDragHelper完全解析 自定义ViewGroup神器
- android沉浸式状态栏实现细节
- android Json解析
- AndroidStudio界面出现乱码
- Android 使用javaMail jar包 发送邮件