Hack5-用TextSwitcher和ImageSwitcher打造漂亮的动画效果

想象一下你需要一个循环展示图片信息或者文字信息的功能,比如下面的一些例子:


  • 用左右键按钮来切换不同的日期列表
  • 在日期选择器(Date picker)中改变数字
  • 倒计时时钟
  • 最新头条


改变视图中的内容是大部分应用的一项最基本的功能,但是它可以被做的很有意思。如果我们用最基本的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");
}

用过之后你可能就会注意到了,每当我们切换TextView的内容的时候,它立即就会改变。为了给这个过渡添加动画而显得不那么生硬,TextSwitcher正是我们所需要的。对于变换屏幕上的标签或文字,TextSwitcher非常的有用。每当变换被调用的时候,TextSwitcher使当前的文字按照某一动画退出,使要显示的文字按照某一个动画进入。按照下面的步骤,我们可以得到一个更加吸引人的变换效果:


  1. 使用findViewById()方法获取View,或者是像普通的View一样在代码中创建它。
  2. 使用switcher.setFactory()方法来设置一个factory。
  3. 使用switcher.setInAnimation()来设置进入动画。
  4. 使用switcher.setOutAnimation()来设置退出动画。


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是一样的。


5.1 总结


TextSwitcher和ImageSwitcher方法提供了一个非常简单的添加动画的方法。他们的工作就是使呆板的切换变得更加引人注目。但是要注意,可不要乱用,你不会希望你的程序看起来像是一个圣诞树一样的。


5.2 相关链接


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


你可能感兴趣的:(android,animation,TextSwitcher,ImageSwitcher)