字体滚动效果
最近在项目中遇见了字体水平滚动&字体垂直滚动效果,借此与大家分享
《跑马灯效果》
2、代码实现:
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:marqueeRepeatLimit="marquee_forever"android:singleLine="true"android:textSize="30sp"android:textColor="@android:color/black"android:text="过去对错已不再重要"/>
《垂直切换文字效果图》2、代码实现:
public class VerticalSlidingView extends TextSwitcher implements ViewSwitcher.ViewFactory {private static final String[] textContents = new String[]{"日照香炉生紫烟","遥看瀑布挂前川","飞流直下三千尺","疑似迎合落九天"};public static final int MSG_START_SLIP = 1;private Handler mHandler;private int num;private static final int TIME = 2 * 1000;private Handler.Callback mCallBack = new Handler.Callback(){@Overridepublic boolean handleMessage(Message message) {switch (message.what){case MSG_START_SLIP:mHandler.sendEmptyMessageDelayed(MSG_START_SLIP , TIME);if(num <= textContents.length -1) {setText(textContents[num++]);}else{num = 0;}break;}return false;}};public VerticalSlidingView(Context context){this(context,null);}public VerticalSlidingView(Context context, AttributeSet attrs) {super(context, attrs);mHandler = new Handler(mCallBack);initView();}@Overridepublic View makeView() {TextView textView = (TextView) LayoutInflater.from(getContext()).inflate(R.layout.swith_text_view , null);return textView;}private void initView(){setFactory(this);/*TextView textView1 = new TextView(getContext());ViewGroup.LayoutParams params1 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT , ViewGroup.LayoutParams.WRAP_CONTENT);textView1.setTextSize(20);textView1.setTextColor(Color.RED);textView1.setLayoutParams(params1);addView(textView1 , 0);TextView textView2 = new TextView(getContext());ViewGroup.LayoutParams params2 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT , ViewGroup.LayoutParams.WRAP_CONTENT);textView2.setTextSize(30);textView2.setTextColor(Color.BLACK);textView2.setLayoutParams(params2);addView(textView2 , 1);*/Animation animationIn = loadAnimation(getContext() , R.anim.slide_in_top);Animation animationOut = AnimationUtils.loadAnimation(getContext() , R.anim.slide_out_top);setInAnimation(animationIn);setOutAnimation(animationOut);mHandler.sendEmptyMessageDelayed(MSG_START_SLIP,TIME);if(num <= textContents.length - 1) {setText(textContents[num++]);}else{num = 0;}}
}
以上实现是不是比较简单,基本重要步骤如下:
***************************************************************************
《垂直切换字体颜色大小改变效果图》代码上面也有我就不复制了,直接上步骤:1、首先不设置setFactory,这样makeView()这个方法也就无法调用了,故makeView可以return null;2、一定要初始化两个TextView不然系统会报错,然后addView(view , index)【index 通常是0,1】3、如果是要改变TextView切换的margin则修改
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT , LinearLayout.LayoutParams.WRAP_CONTENT);params1.setMargins();
 4、如果在更新数据时发现布局混乱了,则可以试用这个方法:removeAllView()然后再addView()【在更新地方设置】这里我一个疑问,因为每次文字切换时,都会调用getNextView按理说这里可以修改下一个展示View的布局格式,但是我尝试了不行。不知各位是否有idea,也请你们告诉我,互相学习!!!
也许有人疑问我注释的那段代码是干吗的?这个是我在项目中遇到的一个需求,要求两个文字垂直切换时,布局位置改动,这样上面我们讲解的方法就不合适了。就必须换另一种方法。
先看每次切换时,字体颜色大小改变效果图:
1、先设置一个只有TextView的布局,这个主要为setFactory(this)这个调用的,如果设置了这个程序会自动的去走ViewFactory中的makeView获得一个TextView对象。
2、设置setOutAnimation以及setInAnimation两个切换动画。
3、调用TextSwitcher的setText()来进行切换,这个源码中会自动调用getNextView来进行动画文字的切换。
4、如果想要实现自动文字切换需要一个定时器【我使用的是Handler】。
执行步骤:
1、ellipsize设置为marquee【跑马灯样式】
2、设置获取焦点【这个不设置不会动】
3、设置marqueeRepeatLimit播放模式marquee_forever为循环播放【依情况设置】
4、singleLine设置为单行显示【如果需要】
字体垂直滚动【俗称的垂直跑马灯效果】
1、首先请看效果图:
㈠字体水平滚动【俗称的跑马灯效果】
1、首先请看效果图:

垂直跑马灯水平跑马灯相关推荐

  1. android上垂直跑马灯,android textview 垂直滚动and水平跑马灯

    垂直滚动的话就挺简单的.当然了不是自动的垂直滚动.如果是自动的垂直滚动的话还需要自定义.所以如果有需求需要textview 可以垂直滚动的话,那你来这里就对了. 直接贴 代码.就是这么任性. andr ...

  2. 单行文字垂直/水平跑马灯效果

    需求描述 接到的需求是这样的:跑马灯效果 一次展示一行文字 循环滚动 文字滚动到视野中停留一秒后滚出. 静态效果如下图,文字从下往上或者从右往左滚动,滚动到此位置时停留一秒(不会传动图... 网络上有 ...

  3. 兄弟们,快醒醒,我们的跑马灯不跑了。

    销售GG在工作群里:"弟兄们,快醒醒,咱现场的跑马灯不跑了." 还在加班的程序猿:"已经查过了,程序没Bug." 带娃玩的硬件攻城狮:"硬件没问题,这 ...

  4. 晨跑、午后跑和夜跑对身体的影响及优缺点

    一天跑两次步,晨跑与夜跑,对身体有好处的.好处如下: 1.养成易于燃脂的好体质 有的人容易发胖的原因就在于平日运动不足,肌力下降,与其此消彼长的脂肪,更是肆无忌惮地积聚起来. 一般而言,跑步是一项有氧 ...

  5. 晚上跑步好吗?晨跑与夜跑利弊分析

    健身房里跑步机上一沉不变的频率空乏无味,白天的城市街道车水马龙.人潮拥挤,于是万物尚未苏醒的清晨.伴随日落而回归平静的夜晚就成了跑步爱好者们最为钟爱的"活动"时间.无论是对于上班族 ...

  6. Mycat实现垂直拆分与水平拆分

    垂直拆分(分库) 一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类, 分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图: 系统被切分成:用 ...

  7. 任务管理 linux指令qsub,Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid

    Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid perl program_1.pl input_1.file output_1.file perl program_2.pl ...

  8. 数据库的垂直划分和水平划分

    数据库的水平划分和垂直划分很早以前就接触了,只是没有实践,没有什么体会,只有最近两年才有接触,今天也和大家聊聊. 垂直划分 按照功能划分,把数据分别放到不同的数据库和服务器. 当一个网站开始刚刚创建时 ...

  9. ES分布式机制的透明性,垂直扩容和水平扩容,数据rebalance,master节点,节点平等的分布式架构,shard和replica机制(学习)

    1.Elasticsearch对复杂分布式机制的透明影藏特性 Elasticsearch是一套分布式的系统,分布式是为了应对大数据量影藏了复杂的分布式机制. 分片机制(我们可以随随便便就将一些docu ...

  10. 数据切分 垂直切分、垂直拆分与水平拆分的优缺点

    数据切分 垂直切分 关于数据库的水平切分和垂直切分的一些概念垂直拆分垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在 ...

最新文章

  1. 大学毕业标语计算机学院,大学毕业横幅标语创意
  2. java logout_Java Core.logout方法代码示例
  3. node.js之打包工具webpack
  4. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)
  5. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构
  6. 李开复:无人驾驶必须一步到位,没有所谓的人机协同
  7. windows下安装sqlmap 详细教程
  8. 【Axure】Axure RP 9 下载、短期试用破解安装和汉化步骤 —— 可供安装参考,短期试用,目前授权码已逐渐失效
  9. php 下载技巧,PHP 使用技巧集
  10. 如何一个月左右拿下PAT甲级(浙大机试)满分
  11. C语言--指针实现字符串逆序输出
  12. 计算机显示器的分辨率可以调节吗,电脑分辨率何如调?电脑无法调整屏幕分辨率怎么办?...
  13. mysql安装教程_mysql 5.5 安装配置方法图文教程
  14. 建立自己的机器人手臂-组装
  15. 彩色图像自动色阶调整和自动对比度调整
  16. 什么是Serv-U,什么是servu,Serv-U,servu
  17. 【科研技巧】PPT如何导出1000dpi的图片
  18. 招聘:IT-互联网相关职位。如:手机客户端、iphone\ios\、PHP 开发工程师,产品经理...
  19. 二分查找,返回第一次出现的位置
  20. adb push与adb pull

热门文章

  1. 关于qt+vs2019报错的奇葩问题,无法定位程序输入点
  2. qml实现雪花飘落,快来给你的暑假降降温吧
  3. 2021年 考研数学一 第17题
  4. matlab arccos uint8,《高等应用数学问题的MATLAB求解》——第3章习题代码
  5. 值得收藏的一些Java实战项目分享
  6. 基于java web的学生考勤带请假管理系统——计算机毕业设计
  7. 【协议相关】一些可用的RTMP,HTTP等源
  8. 《Windows程序设计》复习题
  9. 2022年C语言教程入门和最新C语言自学教程C语言进阶教程大全
  10. 一:Java语言概述