##使用TextSwitcher和ImageSwitcher实现平滑过渡
为了是循环浏览过渡过程的视觉效果更自然,Android提供了TextSwitcher和ImageSwitcher分别替代TextView和ImageView。TextView.setText()内容是立即改变的,TextSwitcher可添加内容切换的动画效果。步骤:
- findViewById获取TextSwitcher对象的引用,也可以在代码中直接构造。
- switcher.setFactory指定View的Factory。
- switcher.setInAnimation()设置换入动画
- switcher.setOutAnimation()设置换出动画
TextSwitcher的工作原理是:首先通过ViewFactory创建两个用于在TextSwitcher中切换的视图,每当调用setText方法时,首先移除当前视图并显示setOutAnimation设置的动画,然后将另一个视图切换进来并显示setInAnimation设置的动画。
mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview);
mTextSwitcher.setFactory(new ViewFactory() {
@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);
##为ViewGroup的子视图添加动画效果
默认情况下,添加到ViewGroup的子视图是直接显示出来的。Android提供了LayoutAnimationController类用于为布局或者ViewGroup的子视图添加动画效果。注意:不可以为每个子视图分别指定不同的动画,但是可决定各个子视图显示动画的时间。使用LayoutAnimationController的方法有两种,直接在代码中使用或者在XML文件中配置。
Animation animation = AnimationUtils.loadAnimation(this, R.anim.list_animation);
LayoutAnimationController lc = new LayoutAnimationController(animation, 0.5f);
listView.setLayoutAnimation(lc);