首页 > 代码库 > Hackfive 使用TextSwitcher和ImageSwitcher实现平滑过渡

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()方法设置的动画。    
  
 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             @Override12             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 }  

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