textSwicher必须写 textSwitcher.setFactory(this);方法
package exle.li_yuweii.textswicher;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements ViewSwitcher.ViewFactory {
private TextSwitcher textSwitcher;
private Message obtain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textSwitcher = (TextSwitcher) findViewById(R.id.main_text_swicher);
textSwitcher.setFactory(this); //实现接口返回替换的view
textSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置渐入渐出动画
textSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
obtain = Message.obtain();
obtain.what = 0;
handler.sendMessage(obtain);
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
String text = String.valueOf(new Random().nextInt());
if (textSwitcher != null) {
textSwitcher.setText(text);
}
obtain = Message.obtain();
obtain.what = 0;
handler.sendMessageDelayed(obtain,1000); //handler延时发送
}
}
};
//重写方法,不写会报空指针异常
@Override
public View makeView() {
View view = null;
view = new TextView(this);
return view;
}
}