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);
		};
	};






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值