想象一下你需要一个循环展示图片信息或者文字信息的功能,比如下面的一些例子:
改变视图中的内容是大部分应用的一项最基本的功能,但是它可以被做的很有意思。如果我们用最基本的TextView,你就会发现在变换内容的时候一点都不赏心悦目。想象一下如果在变换内容的时候加上一点效果该有多好。所以为了让切换效果更吸引人,Android提供了TextSwitcher和ImageSwitcher这两个类。TextSwitcher可以替代TextView,ImageSwitcher可以替代ImageView。
TextView和TextSwitcher差不多。用我们之前的例子,假设我们在一些日期里面进行切换。每当用户点击Button的时候,我们需要将TextView的内容进行改变。如果我们用TextView,那么我们需要的方法是:mTextView.setText("something")。我们的代码差不多是下面这个样子的:
private TextView mTextView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTextView = (TextView) findViewById(R.id.your_textview); ... mTextView.setText("something"); }
TextSwitcher的工作原理如下,它使用工厂(factory)来创建新的View,每当我们调用setText()的时候,它将旧的View用setOutAnimation()中设置的动画将它移除退出,然后使用setInAnimaiton()中设置的动画,将新视图移入。让我们来看看如何使用它:
public class MainActivity extends Activity { private static final String[] TEXTS = { "First", "Second", "Third" }; private int mTextsPosition = 0; private TextSwitcher mTextSwitcher; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview); mTextSwitcher.setFactory(new ViewFactory() { //重写makeView函数 @Override public View makeView() { TextView t = new TextView(MainActivity.this); t.setGravity(Gravity.CENTER); return t; } }); //设置进入退出动画 mTextSwitcher.setInAnimation(this, android.R.anim.fade_in); mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out); onSwitchText(null); } public void onSwitchText(View v) { mTextSwitcher.setText(TEXTS[mTextsPosition]); setNextPosition(); } private void setNextPosition() { mTextsPosition = (mTextsPosition + 1) % TEXTS.length; } }
就像上面这样,当用户设置新的文本的时候,我们就会看到赏心悦目的动画效果了。旧文字淡出,新文字淡入。这个技巧同样也适用于其他的动画效果,你可以设定自定义的动画。ImageSwitcher的使用方法与TextSwitcher是一样的。
TextSwitcher和ImageSwitcher方法提供了一个非常简单的添加动画的方法。他们的工作就是使呆板的切换变得更加引人注目。但是要注意,可不要乱用,你不会希望你的程序看起来像是一个圣诞树一样的。
http://developer.android.com/reference/android/widget/TextSwitcher.html
http://developer.android.com/guide/topics/graphics/view-animation.html
转载请注明原地址,谢谢!
http://blog.csdn.net/kost_/article/details/13632037
代码下载地址:
http://download.csdn.net/detail/u011418185/6477855