让TextView里面的文字逐个显示的动画效果实现(1)
最近使用TextView时想要实现里面的文字逐个显示的动画效果,就如同打字一样。
主要实现思想:新建一个TextView的派生类,先将要逐个显示的字符串保存变量 mOriginalStr 中,然后启动新线程,每隔一段时间使用 Handler 类对象的sendEmptyMessage(int what) 方法发送消息,让 Handler 对象将mOriginal中的字符串逐个添加到TextView中进行显示。
代码实现如下:
/**
* Created by Haoye on 2016/1/15.
*/
public class SinglyTextView extends TextView {
private String mOriginalStr;//------用于保存原始字符串
private long mDuration = 500;//---默认显示每个字符的时间间隔
private int mIndex = 0;//-----记录将要显示的字符的位置
private Handler mHandler;
private final int SHOW_NEXT_CHAR = 1;
public SinglyTextView(Context context){
super(context); init();
start();
} public SinglyTextView(Context context, @Nullable AttributeSet attrs){
super(context, attrs); init();
start();
} public SinglyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr); init();
start();
} private void init() {
mOriginalStr = getText().toString();//---保存字符串
this.setText("");//-----先清空 mHandler = new Handler(){
@SuppressLint("HandlerLeak")
public void handleMessage(Message msg){
if (msg.what == SHOW_NEXT_CHAR && mIndex < mOriginalStr.length()){
SinglyTextView.this.setText(SinglyTextView.this.getText(). toString()
+ mOriginalStr.charAt(mIndex));
mIndex++;
} }
};
} /**
* 设置显示每个字符的时间间隔
* @param duration
*/
public void setDuration(long duration) {
mDuration = duration;
} /**
* 启动新线程
*/
private void start() {
new Thread(){
public void run()
{
while (mIndex < mOriginalStr.length())
{
try {
Thread.sleep(mDuration);
mHandler.sendEmptyMessage(SHOW_NEXT_CHAR);
}
catch (Exception ex){
ex.printStackTrace();
} }
}
}.start();
} }
为何要写三个构造函数这么多?因为在我写了第一个后,在xml文件中运用时出现了这个rendering problem:
如果不重写后两个构造函数,可能有些属性就用不了,于是我就添加了上去了,反正就几行代码。其实在TextView 类中还有一个四个参数的构造函数,不过那个构造函数需要在API 21或以上的版本才能用。
让TextView里面的文字逐个显示的动画效果实现(1)的更多相关文章
- js实现文字逐个显示
先把代码摆上了吧: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtm ...
- 使用jquery实现文本框输入特效:文字逐个显示逐个消失反复循环
前两天看到某个网站上的输入框有个小特效:文字逐个显示,并且到字符串最大长度后,逐个消失,然后重新循环显示消失,循环显示字符串数组.我对这个小特效有点好奇,于是今天自己尝试用jquery写一个简单的小d ...
- jQuery鼠标悬停文字渐隐渐现动画效果
jQuery鼠标悬停文字渐隐渐现动画效果 当时是做项目的时候用到的所以图片有些大,九张,真正要做图片不需要这么大 css样式 <style> *{ margin: 0; padding: ...
- Unity背包/商城物品逐个显示缓动效果-依次显示
道具栏/商城中物品逐个显示效果 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- jquery实现隐藏显示层动画效果、仿新浪字符动态输入、tab效果
已经有两年多没登陆csdn账号了,中间做了些旁的事,可是现在却还是回归程序,但改做前端了,虽然很多东西都已忘得差不多了,但还是应该摆正心态,慢慢来,在前端漫游,做一只快乐双鱼. 路是一步一步走出来的, ...
- android应用市场、社区客户端、漫画App、TensorFlow Demo、歌词显示、动画效果等源码
Android精选源码 MVP架构Android应用市场项目 android刻度盘控件源码 Android实现一个社区客户端 android商品详情页上拉查看详情 基于RxJava+Retrofit2 ...
- android标题栏下面弹出提示框(一) TextView实现,带动画效果
产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...
- AngularJS中实现显示或隐藏动画效果的3种方式
本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...
- anacoda的spyder在调用matplotlib的时候无法显示动画效果【学习笔记】
ipython console的默认设置将图像结果显示在终端,但是这样显示存在的问题是无法显示动画效果,因此需要将动画效果显示到单独的窗口,按照下面的截图即可显示. 方法一.按照如下截图显示设置,重启 ...
随机推荐
- css伪元素用法大全
本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...
- 从C#到TypeScript - Reflect
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- Java显式锁学习总结之六:Condition源码分析
概述 先来回顾一下java中的等待/通知机制 我们有时会遇到这样的场景:线程A执行到某个点的时候,因为某个条件condition不满足,需要线程A暂停:等到线程B修改了条件condition,使con ...
- 批量删除的PHP
第一个页面shanchu.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- C#计算表达式(仿计算器功能)
一.用MSScriptControl在C#中执行JavaScript代码javascript中有个eval方法用过的人都知道他的方便和强大之处.在C#中,我们也可以通过Com组件来执行一段javasc ...
- SQLDataSet中执行DDL语句
在SQLDataSet中执行我们输入的DDL语句,并观察执行结果. 这里为了省输入的时间,从先输好的记事本中复制的SQL语句.效果图: ******************************** ...
- ucGUI的学习小结
前言 做一个小项目时需要实现GUI及相关操作(响应按键).用的SoC的优点是功耗低,但是受限于硬件能力,之前的SDK里并没有对GUI有很好的支持.后面对GUI的界面外观还有一定的要求,就在网上搜了一下 ...
- 初探nginx负载均衡集群
借LVS的环境: A(dir):192.168.122.129 B(rs1):192.168.122.140 C(rs2):192.168.122.141 Centos 6下如果安装过epel的yum ...
- Vue学习之路---No.2(分享心得,欢迎批评指正)
昨天我们大致了解了有关Vue的基础知识和语法:今天我们继续在大V这条路上前进. 首先,我们回忆一下昨天提到的相关知识点: 1.了解Vue的核心理念------"数据驱动视图" 2. ...
- css3滚动效果
.css{ -webkit-transition-duration: .3s; transition-duration: .3s; }