TextView实现自动上下滚动的效果(TextSwitcher)
对于TextView这个控件使我们在熟悉不过的了,但是有时候可能会有这样的需求:
1、假如有10个文本内容,这些文本内容需要每隔几秒钟显示下一个;
2、文本内容切换的时候需要有动画过渡效果,比如滚动效果,新的文字从下面进入,并从透明逐渐过渡到不透明,旧的文字从上面出去,并从不透明逐渐过渡到全透明。
上面就是我们要实现的效果,那要如何来实现呢?要实现这个效果,如果你知道TextSwitcher这个类,那就是so easy了。下面就用代码来搞一波:
public class SwitchTextView extends TextSwitcher {public SwitchTextView(Context context) {super(context); }public SwitchTextView(final Context context, AttributeSet attrs) {super(context, attrs); setFactory(new ViewFactory() {@Override public View makeView() {//设置显示文字的TextView,内部实际会调用这个方法两次,进入和出去的textview就是从这里创建的 TextView tv = new TextView(context); tv.setTextColor(Color.parseColor("#FF0000")); tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,23); return tv; }}); TranslateAnimation translateIn = new TranslateAnimation(0, 0, 50, 0); TranslateAnimation translateOut = new TranslateAnimation(0, 0, 0, -50); AlphaAnimation alphaIn = new AlphaAnimation(0, 1); AlphaAnimation alphaOut = new AlphaAnimation(1, 0); AnimationSet animatorSetIn = new AnimationSet(true); animatorSetIn.addAnimation(translateIn); animatorSetIn.addAnimation(alphaIn); animatorSetIn.setDuration(2000); AnimationSet animatorSetOut = new AnimationSet(true); animatorSetOut.addAnimation(translateOut); animatorSetOut.addAnimation(alphaOut); animatorSetOut.setDuration(2000); //设置文字进入和出去的动画 setInAnimation(animatorSetIn); setOutAnimation(animatorSetOut); }int position = 0; int len; //这里将所有需要滚动的文字传进来,并设置循环显示的时间 public void startPlay(final List<String> data) {if (data == null || data.size() == 0) {return; }len = data.size(); //设置下一个显示的文字 setText(data.get(position)); Timer timer = new Timer(); timer.schedule(new TimerTask() {@Override public void run() {position++; post(new Runnable() {@Override public void run() {setText(data.get(position%len)); }}); }}, 3000, 3000); } }
这里写完后,xml中在布局一下就ok了:
<com.example.ubt.proguardtest.view.SwitchTextView android:id="@+id/switch_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="@+id/img_zoom" app:layout_constraintBottom_toBottomOf="@id/text"> </com.example.ubt.proguardtest.view.SwitchTextView>
最后在调用一下startPlay()方法就欧了,是不是特简单。
这里主要分为三步:
1、setFactory()设置显示文字的view,内部实际会用这个方法创建两个view,进入和出去的view;
2、设置动画,通过setInAnimation()和setOutAnimation()两个方法设置进入和出去的动画;
3、view和动画设置完后,最后就是调用setText()设置文字,这样就ok了。
TextView实现自动上下滚动的效果(TextSwitcher)相关推荐
- Android之高仿京东APP首页“京东快报”自动向上滚动的广告条
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51013562 本文出自:[顾林海的博客] ##前言 上次在京东APP上 ...
- 仿京东首页的京东快报,自动向上滚动的广告条
向上滚动的广告条 实现原理 起初看到这个效果时,第一个想法就是向上移动动画+定时器,但当我准备写时发现,滚动时上下文字都是逐渐出来的(有点像滑动的),如果用动画的话不行,如果用滑动的话,那就是List ...
- Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理
Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 目录 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事 ...
- TextSwitcher实现文本自动垂直滚动
本文转载自[http://blog.csdn.net/u014369799/article/details/50337229] 实现功能:用TextSwitcher实现文本自动垂直滚动,类似淘宝首页广 ...
- jQuery实现自动左右滚动效果的代码实例
2019独角兽企业重金招聘Python工程师标准>>> jQuery实现自动左右滚动效果的代码实例 思路: 点击滚动模式下,是为点击(向前/向后/数字)添加click事件,通过控制展 ...
- html中图片自动循环滚动代码,JavaScript代码实现图片循环滚动效果
1.概述 循环滚动图片,不仅可以增添Web页面的动态效果,而且可以节省页面空间,有效地保证在有限的页面中显示更多的图片. 2.技术要点 主要应用setTimeout()方法实现图片的循环滚动效果.se ...
- 【UGUI】如何实现自动滚动文本效果
当我们在制作UI使用Text时,如果文本信息过长,有两种处理方式,一种是换行展示,另一种则是滚动展示,下面博主将给大家介绍如何制作自动滚动文本. 第一步,创建一个Image(GameObject &g ...
- CSS+JS自动循环滚动的多图片幻灯切换展示效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android TextView循环滚动弹幕效果
最近做需求要写一个滚动弹幕的特效,要求是一直循环滚动,并且从左边出去部分的要从右边进入. 1.首先想到的是用Android TextView自带的跑马灯效果,设置一下android:e ...
最新文章
- Linux中Sleep和Wait命令的使用方式
- R 操作矩阵和计算SVD的基本操作记录
- Python类及面向对象编程【转】
- jboss8日志级别设置_罐中研讨会:设置JBoss BPM Suite全日研讨会
- logback slf4j_强制Tomcat通过SLF4J / Logback登录
- shell下将文件中的分隔符从‘\t‘转换成‘,‘
- 95-36-032-ChannelHandler-SimpleChannelInboundHandler
- 最新搜索引擎网站提交登录入口和收录入口大全
- mllib调参 spark_《Spark 官方文档》机器学习库(MLlib)指南
- 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用
- 安装docker提示“Another app is currently holding the yum lock; waiting for it to exit“之解决办法
- 电子病历系统中痕迹保留的应用意义
- 百度网盘 海量资源链接
- leetcode1-5
- 12点转成0点(原因时间格式化为十二小时制导致)
- Atcoder F - Mirrored(思维+搜索)
- [论文阅读] EIE: Efficient Inference Engine on Compressed Neural Network
- 【应用随机过程】02. 马尔可夫链及其概率分布
- Python实现线性插值和三次样条插值
- Cross-modality Person re-identification with Shared-Specific Feature Transfer笔记