上下滚动TextSwitcher实例详解

上下滚动TextSwitcher实例详解

Android 上下滚动TextSwitcher实例详解

1.在activity中需要代码声明

textSwitcher = (TextSwitcher)findViewById(R.id.text_switcher);
    textSwitcher.setFactory(new ViewFactory() {

      @Override
      public View makeView() {
        TextView tv = new  TextView(MainActivity.this);
        tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16.0F);
        tv.setTextColor(Color.RED);
        return tv;
      }
    });

    textSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in));
    textSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out)); 

2.两个anim动画xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true"
  android:shareInterpolator="false"  android:zAdjustment="top">
  <translate
    android:duration="3000"
    android:fromYDelta="100%p"
    android:toYDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:fillAfter="true"
  android:shareInterpolator="false"  android:zAdjustment="top">

   <translate
    android:duration="3000"
    android:fromYDelta="0"
    android:toYDelta="-100%p" />
</set> 
<style name="pop_anim">
    <item name="android:windowEnterAnimation">@anim/anim_in</item>
  <item name="android:windowExitAnimation">@anim/anim_out</item>
  </style>

3.用线程或者定时器实现循环翻动。

Thread t = new Thread(new Runnable() {

    @Override
    public void run() {
      while (!flag) {
        Message msg = new Message();
        msg.what = 1;
        msg.obj = getItem[i];
        handler.sendMessage(msg);
        if (i== 2) {
          i = 0;
        }
        try {
          t.sleep(3000);
          i++;

        } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }

    }

4.hanlder更新ui

private Handler handler = new Handler(){
    public void handleMessage(android.os.Message msg) {

      textSwitcher.setText((String)msg.obj);

      super.handleMessage(msg);
    };
  };

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

01-30 23:42