一、先来看看效果演示

二、实现原理:

这个其实不难实现,通过一个定时器不断调用TextView的setText就行了,在setText的时候播放打字的音效。

具体代码如下:

import java.util.Timer;

import java.util.TimerTask;

import android.content.Context;

import android.media.MediaPlayer;

import android.text.TextUtils;

import android.util.AttributeSet;

import android.widget.TextView;

import com.uperone.typetextview.R;

/**

* 模拟打字机效果

*

* */

public class TypeTextView extends TextView {

private Context mContext = null;

private MediaPlayer mMediaPlayer = null;

private String mShowTextString = null;

private Timer mTypeTimer = null;

private OnTypeViewListener mOnTypeViewListener = null;

private static final int TYPE_TIME_DELAY = 80;

private int mTypeTimeDelay = TYPE_TIME_DELAY; // 打字间隔

public TypeTextView(Context context,AttributeSet attrs,int defStyle) {

super(context,attrs,defStyle);

initTypeTextView( context );

}

public TypeTextView(Context context,AttributeSet attrs) {

super(context,attrs);

initTypeTextView( context );

}

public TypeTextView(Context context) {

super(context);

initTypeTextView( context );

}

public void setOnTypeViewListener( OnTypeViewListener onTypeViewListener ){

mOnTypeViewListener = onTypeViewListener;

}

public void start( final String textString ){

start( textString,TYPE_TIME_DELAY );

}

public void start( final String textString,final int typeTimeDelay ){

if( TextUtils.isEmpty( textString ) || typeTimeDelay < 0 ){

return;

}

post( new Runnable( ) {

@Override

public void run() {

mShowTextString = textString;

mTypeTimeDelay = typeTimeDelay;

setText( "" );

startTypeTimer( );

if( null != mOnTypeViewListener ){

mOnTypeViewListener.onTypeStart( );

}

}

});

}

public void stop( ){

stopTypeTimer( );

stopAudio();

}

private void initTypeTextView( Context context ){

mContext = context;

}

private void startTypeTimer( ){

stopTypeTimer( );

mTypeTimer = new Timer( );

mTypeTimer.schedule( new TypeTimerTask(),mTypeTimeDelay );

}

private void stopTypeTimer( ){

if( null != mTypeTimer ){

mTypeTimer.cancel( );

mTypeTimer = null;

}

}

private void startAudioPlayer() {

stopAudio();

playAudio( R.raw.type_in );

}

private void playAudio( int audioResId ){

try{

stopAudio( );

mMediaPlayer = MediaPlayer.create( mContext,audioResId );

mMediaPlayer.start( );

}catch( Exception e ){

e.printStackTrace();

}

}

private void stopAudio( ){

if( mMediaPlayer != null && mMediaPlayer.isPlaying( ) ){

mMediaPlayer.stop( );

mMediaPlayer.release( );

mMediaPlayer = null;

}

}

class TypeTimerTask extends TimerTask{

@Override

public void run() {

post(new Runnable( ) {

@Override

public void run() {

if( getText( ).toString( ).length( ) < mShowTextString.length( ) ){

setText( mShowTextString.substring(0,getText( ).toString( ).length( ) + 1 ) );

startAudioPlayer();

startTypeTimer( );

}else{

stopTypeTimer( );

if( null != mOnTypeViewListener ){

mOnTypeViewListener.onTypeOver( );

}

}

}

});

}

}

public interface OnTypeViewListener{

public void onTypeStart( );

public void onTypeOver( );

}

}

三、使用说明:

1、在xml文件中定义:

android:id="@+id/typeTxtId"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="true" />

2、在代码中实例化:

mTypeTextView = ( TypeTextView )findViewById(R.id.typeTxtId);

mTypeTextView.setOnTypeViewListener( new OnTypeViewListener( ) {

@Override

public void onTypeStart() {

print( "onTypeStart" );

}

@Override

public void onTypeOver() {

print( "onTypeOver" );

}

});

3、调用start方法:

mTypeTextView.start( TEST_DATA );

四、总结

以上就是Android自定义View实现打字机效果的全部内容,感兴趣的快快自己动手实践起来,希望本文的内容对大家开发Android的时候能有所帮助,如果有疑问可以留言交流。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

Android打字机动画,Android自定义View实现打字机效果相关推荐

  1. Android 气泡动画(自定义View类)

    Android 气泡动画(自定义View类) 一.前言 二.代码 1. 随机移动的气泡 2.热水气泡 一.前言 最近有需求制作一个水壶的气泡动画,首先在网上查找了一番,找到了一个文章. https:/ ...

  2. Android属性动画与自定义View——实现vivo x6更新系统的动画效果

    晚上好,现在是凌晨两点半,然后我还在写代码.电脑里播放着<凌晨两点半>,晚上写代码,脑子更清醒,思路更清晰. 今天聊聊属性动画和自定义View搭配使用,前面都讲到自定义View和属性动画, ...

  3. android卡包动画,自定义View实现银行卡卡包动画效果

    本来不想自己造轮子的,但奈何没找动相应效果的轮子,所以只能自己写了,其实还是白嫖来的轻松,哈哈 先看效果 这个是完成的效果,还可以吧!关键也不难一个自定义View搞定 先说一下思路,继承一个Relat ...

  4. Android实现雪花特效自定义view

    一.前言 这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效. 圣诞祝福:平安夜,舞翩阡.雪花飘,飞满天.心与心,永相伴. 圣诞节是传统的宗教节日,对于基 督徒,那是庆祝耶稣的诞生,纪 ...

  5. android下雨动画效果,Android 自定义View(二) 下雨效果

    Rain.gif Android 自定义View(二) 下雨效果 一 实现思路, 雨点用线段表示,通过控制线段的大小和宽度来表示不同的线段. 一个雨点下雨的过程可以表示为一条直线,一次雨点在下雨的过程 ...

  6. android中仿qq最新版抽屉,Android 自定义View实现抽屉效果

    Android 自定义View实现抽屉效果 说明 这个自定义View,没有处理好多点触摸问题 View跟着手指移动,没有采用传统的scrollBy方法,而是通过不停地重新布局子View的方式,来使得子 ...

  7. android功能相同的view,Android自定义View实现扫描效果

    本文实例为大家分享了Android自定义View实现扫描效果的具体代码,供大家参考,具体内容如下 演示效果如下: 实现内容: 1.控制动画是竖向或者横向 2.控制动画初始是从底部/左边开始,或者从上边 ...

  8. Android 自定义 圆环,Android自定义view实现圆环效果实例代码

    先上效果图,如果大家感觉不错,请参考实现代码. 重要的是如何实现自定义的view效果 (1)创建类,继承view,重写onDraw和onMesure方法 public class CirclePerc ...

  9. android波纹效果弹窗,Android自定义View实现波纹效果

    Android自定义View实现波纹效果 时间:2017-05-27     来源:移动互联网学院 1.引言:随着Android智能手机的普及,Android应用得到了大力支持,而Android应用的 ...

  10. android 循环弹幕,Android自定义View实现弹幕效果

    原标题:Android自定义View实现弹幕效果 在很多视频直播中都有弹幕功能,而安卓上没有简单好用的弹幕控件,本文介绍一个自定义弹幕view的demo. 效果图: 思路: 自定义Textitem类表 ...

最新文章

  1. tftp:timeout问题解决 - 从Windows传输文件到开发板
  2. java校验字符串是否为json格式
  3. 现代操作系统: 第八章 多处理机系统
  4. WebSocket和Socket
  5. OLI 课程 Java入学考试的五道题
  6. 牛顿法python代码_python 牛顿法实现逻辑回归(Logistic Regression)
  7. 记一次golang中sync.Map并发创建、读取的问题
  8. 1.12 Linux查看用户信息
  9. Nutch1.2二次开发详细攻略(二)【图文】------Windows平台下Nutch1.2的搭建
  10. cmd52命令发送 mmc_乾坤合一~Linux SD/MMC/SDIO驱动分析
  11. excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
  12. 如何修改Maven本地仓库位置
  13. 车牌识别--opencv(python)
  14. 业余设计不求人,30秒AI快速制作LOGO
  15. python爬虫 京东关键词搜索商品及具体参数和评论
  16. SqlServer生成交叉表大全
  17. 【FFmpeg】avg_frame_rate 计算 及在TS 中使用
  18. Postman工具的简单介绍
  19. 智能车机械结构设计与踩雷
  20. C#:根据银行卡卡号判断银行名称

热门文章

  1. Google的GDrive美如水中之月
  2. npm shrinkwrap
  3. FCSAN存储与服务器关联映射 在Linux系统中如何识别操作
  4. 软件测试人员必备的60个测试工具,果断收藏了!
  5. 刮刮卡 java代码_Android刮刮卡效果实现代码
  6. springboot 整合 ueditor 并实现文件上传(自定义上传路径)
  7. 【程序员的自我修养】[动态图文] 超详解函数栈帧
  8. 全国计算机比赛图片,我校学子获2020年“中国高校计算机大赛-网络技术挑战赛”全国总决赛一等奖(图)-全国文明校园建设网...
  9. hrbust 1865人类希望——kokoⅡ【思维】
  10. 微信小程序获取用户收货地址源码