Hackfive 使用TextSwitcher和ImageSwitcher实现平滑过渡
1. 应用场景:
- 通过向左和向右的导航按钮浏览日期列表
- 在日期选择空间中改变日期
- 倒计时始终
- 新闻刚要
2.用到的知识点是:
TextSwitcher和ImageSwitcher
TextSwitcher举例要获得这种让用户预约的过度效果,只需以下几个简单步骤:
- 通 过 findViewById() 方 法 获 取 TextSwitcher 对 象 的 引 用switcher,当然也可以直接在代码中构造该对象
- 通过switcher.setFactory()方法指定TextSwitcher的View-Factory.
- 通过switcher.setInAnimation()方法设置换入动画效果
- 通过switcher.setOutAnimation()方法设置换出动画效果
当前视图并显示setOutAnimation()方法设置的动画,然后并将另一个视图切换进来,并显示setInAnimation()方法设置的动画。
1 public class MainActivity extends Activity { 2 private static final String[] TEXTS = { "First", "Second", "Third" }; 3 private int mTextsPosition = 0; 4 private TextSwitcher mTextSwitcher; 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.main); 9 mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview); 10 mTextSwitcher.setFactory(new ViewFactory() { 11 @Override 12 public View makeView() { 13 System.out.println("makeView"); 14 TextView t = new TextView(MainActivity.this); 15 t.setGravity(Gravity.CENTER); 16 return t; 17 } 18 }); 19 mTextSwitcher.setInAnimation(this, android.R.anim.fade_in); 20 mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out); 21 onSwitchText(null); 22 } 23 public void onSwitchText(View v) { 24 mTextSwitcher.setText(TEXTS[mTextsPosition]); 25 setNextPosition(); 26 } 27 private void setNextPosition() { 28 mTextsPosition = (mTextsPosition + 1) % TEXTS.length; 29 } 30 }