android TextView 垂直滚动 用动画实现

项目中需要让TextView 滚动一会显示一行一会显示一行

想了下用移动动画实现。但是实际中在整这个动画时调了好久。主要用到的动画方式是移动动画:TranslateAnimation


代码:

/**
	 * 动画组装
	 */
	private void noticeBarAniset() {
		showNotice(timeNum);//调用TextView 显示
		timeNum++;
		
		AnimationSet animSet = new AnimationSet(true);

		TranslateAnimation translateUp0 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,
				Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 2f, Animation.RELATIVE_TO_SELF, 0.5f);
		translateUp0.setDuration(TIMER_PERIOD);

		AlphaAnimation alphaAnimation0 = new AlphaAnimation(0.1f, 1.0f);
		alphaAnimation0.setDuration(TIMER_PERIOD);

		// translateUp0.setFillEnabled(true); // 使能填充效
		// translateUp0.setFillAfter(true); // 保留在终止位置

		TranslateAnimation translateUp1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,
				Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, -1f, Animation.RELATIVE_TO_SELF, -2.5f);

		// translateUp1.setFillEnabled(true); // 使能填充效
		// translateUp1.setFillAfter(true); // 保留在终止位置

		translateUp1.setDuration(TIMER_PERIOD);
		translateUp1.setStartOffset(TIMER_STOP);

		AlphaAnimation alphaAnimation1 = new AlphaAnimation(1.0f, 0.1f);
		alphaAnimation1.setDuration(TIMER_PERIOD);
		alphaAnimation1.setStartOffset(TIMER_STOP);

		animSet.addAnimation(translateUp0);
		animSet.addAnimation(alphaAnimation0);

		animSet.addAnimation(translateUp1);
		animSet.addAnimation(alphaAnimation1);

		animSet.setFillEnabled(true);
		animSet.setFillAfter(true);

		noticeBarTextView.startAnimation(animSet);

		animSet.setAnimationListener(new AnimationListener() {

			@Override
			public void onAnimationStart(Animation animation) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationRepeat(Animation animation) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationEnd(Animation animation) {
				// TODO Auto-generated method stub
				noticeBarAniset();// 递归调用
			}
		});
	}

PS:

使用AnimationSet的方式  把两个主要的TranslateAnimation 组合起来,并且添加两个渐变的动画进行修饰

循环跑马灯 是通过监听set动画完成后递归调用。显示内容的改变放在showNotice()  函数内完成,其中

timeNum 成员变量起到的是对递归次数的标记。


另:注释掉的几行

// translateUp0.setFillEnabled(true); // 使能填充效

// translateUp0.setFillAfter(true); // 保留在终止位置

启动的是动画完成定格view的作用,直接定格 set了所以子动作定格没有开启。


动画函数参数及解析参考:

http://blog.csdn.net/forlong401/article/details/9750903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值