Android打字机动画,Android自定义View实现打字机效果
一、先来看看效果演示
二、实现原理:
这个其实不难实现,通过一个定时器不断调用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实现打字机效果相关推荐
- Android 气泡动画(自定义View类)
Android 气泡动画(自定义View类) 一.前言 二.代码 1. 随机移动的气泡 2.热水气泡 一.前言 最近有需求制作一个水壶的气泡动画,首先在网上查找了一番,找到了一个文章. https:/ ...
- Android属性动画与自定义View——实现vivo x6更新系统的动画效果
晚上好,现在是凌晨两点半,然后我还在写代码.电脑里播放着<凌晨两点半>,晚上写代码,脑子更清醒,思路更清晰. 今天聊聊属性动画和自定义View搭配使用,前面都讲到自定义View和属性动画, ...
- android卡包动画,自定义View实现银行卡卡包动画效果
本来不想自己造轮子的,但奈何没找动相应效果的轮子,所以只能自己写了,其实还是白嫖来的轻松,哈哈 先看效果 这个是完成的效果,还可以吧!关键也不难一个自定义View搞定 先说一下思路,继承一个Relat ...
- Android实现雪花特效自定义view
一.前言 这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效. 圣诞祝福:平安夜,舞翩阡.雪花飘,飞满天.心与心,永相伴. 圣诞节是传统的宗教节日,对于基 督徒,那是庆祝耶稣的诞生,纪 ...
- android下雨动画效果,Android 自定义View(二) 下雨效果
Rain.gif Android 自定义View(二) 下雨效果 一 实现思路, 雨点用线段表示,通过控制线段的大小和宽度来表示不同的线段. 一个雨点下雨的过程可以表示为一条直线,一次雨点在下雨的过程 ...
- android中仿qq最新版抽屉,Android 自定义View实现抽屉效果
Android 自定义View实现抽屉效果 说明 这个自定义View,没有处理好多点触摸问题 View跟着手指移动,没有采用传统的scrollBy方法,而是通过不停地重新布局子View的方式,来使得子 ...
- android功能相同的view,Android自定义View实现扫描效果
本文实例为大家分享了Android自定义View实现扫描效果的具体代码,供大家参考,具体内容如下 演示效果如下: 实现内容: 1.控制动画是竖向或者横向 2.控制动画初始是从底部/左边开始,或者从上边 ...
- Android 自定义 圆环,Android自定义view实现圆环效果实例代码
先上效果图,如果大家感觉不错,请参考实现代码. 重要的是如何实现自定义的view效果 (1)创建类,继承view,重写onDraw和onMesure方法 public class CirclePerc ...
- android波纹效果弹窗,Android自定义View实现波纹效果
Android自定义View实现波纹效果 时间:2017-05-27 来源:移动互联网学院 1.引言:随着Android智能手机的普及,Android应用得到了大力支持,而Android应用的 ...
- android 循环弹幕,Android自定义View实现弹幕效果
原标题:Android自定义View实现弹幕效果 在很多视频直播中都有弹幕功能,而安卓上没有简单好用的弹幕控件,本文介绍一个自定义弹幕view的demo. 效果图: 思路: 自定义Textitem类表 ...
最新文章
- tftp:timeout问题解决 - 从Windows传输文件到开发板
- java校验字符串是否为json格式
- 现代操作系统: 第八章 多处理机系统
- WebSocket和Socket
- OLI 课程 Java入学考试的五道题
- 牛顿法python代码_python 牛顿法实现逻辑回归(Logistic Regression)
- 记一次golang中sync.Map并发创建、读取的问题
- 1.12 Linux查看用户信息
- Nutch1.2二次开发详细攻略(二)【图文】------Windows平台下Nutch1.2的搭建
- cmd52命令发送 mmc_乾坤合一~Linux SD/MMC/SDIO驱动分析
- excel处理html文件,html网页显示excel表格数据-html读取本地excel文件并展示
- 如何修改Maven本地仓库位置
- 车牌识别--opencv(python)
- 业余设计不求人,30秒AI快速制作LOGO
- python爬虫 京东关键词搜索商品及具体参数和评论
- SqlServer生成交叉表大全
- 【FFmpeg】avg_frame_rate 计算 及在TS 中使用
- Postman工具的简单介绍
- 智能车机械结构设计与踩雷
- C#:根据银行卡卡号判断银行名称
热门文章
- Google的GDrive美如水中之月
- npm shrinkwrap
- FCSAN存储与服务器关联映射 在Linux系统中如何识别操作
- 软件测试人员必备的60个测试工具,果断收藏了!
- 刮刮卡 java代码_Android刮刮卡效果实现代码
- springboot 整合 ueditor 并实现文件上传(自定义上传路径)
- 【程序员的自我修养】[动态图文] 超详解函数栈帧
- 全国计算机比赛图片,我校学子获2020年“中国高校计算机大赛-网络技术挑战赛”全国总决赛一等奖(图)-全国文明校园建设网...
- hrbust 1865人类希望——kokoⅡ【思维】
- 微信小程序获取用户收货地址源码