Hackfive 使用TextSwitcher和ImageSwitcher实现平滑过渡

时间:2023-03-09 19:50:20
Hackfive 使用TextSwitcher和ImageSwitcher实现平滑过渡

1. 应用场景:

  • 通过向左和向右的导航按钮浏览日期列表
  • 在日期选择空间中改变日期
  • 倒计时始终
  • 新闻刚要
2.用到的知识点是:
    TextSwitcher和ImageSwitcher
    TextSwitcher举例要获得这种让用户预约的过度效果,只需以下几个简单步骤: 
  • 通 过 findViewById() 方 法 获 取 TextSwitcher 对 象 的 引 用switcher,当然也可以直接在代码中构造该对象
  • 通过switcher.setFactory()方法指定TextSwitcher的View-Factory.
  • 通过switcher.setInAnimation()方法设置换入动画效果
  • 通过switcher.setOutAnimation()方法设置换出动画效果

TextSwitcher的工作原理是:首先通过ViewFactory创建两个用于在TextSwitcher中切换的视图,每当调用setText()方法时,TextSwitcher首先移除

当前视图并显示setOutAnimation()方法设置的动画,然后并将另一个视图切换进来,并显示setInAnimation()方法设置的动画。    
  
 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() {
@Override
public View makeView() {
System.out.println("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;
}
}