Android自定义跑马灯文字效果
本文实例为大家分享了Android自定义跑马灯文字的具体代码,供大家参考,具体内容如下
Android跑马灯效果文字:
效果图(真实动画很流畅,这个转gif有问题,感觉有点卡):
代码:
/** *Createdbywuguangliangon2018/12/21 * *跑马灯效果文字 */ publicclassMarqueeHorizontalTextViewextendsAppCompatTextView{ privatefloattextLength=0f; privatefloatdrawTextX=0f;//文本的横坐标 publicbooleanisStarting=false;//是否开始滚动 privatePaintpaint=null; privateStringtext=""; privatelongwaitTime=1000;//开始时等待的时间 privateintscrollTile=2;//文字的滚动速度 privateintbaseline; publicMarqueeHorizontalTextView(Contextcontext){ super(context); initView(context); } publicMarqueeHorizontalTextView(Contextcontext,AttributeSetattrs){ super(context,attrs); initView(context); } publicMarqueeHorizontalTextView(Contextcontext,AttributeSetattrs,intdefStyle){ super(context,attrs,defStyle); initView(context); } privatevoidinitView(Contextcontext){ setMaxWidth(context.getResources().getDisplayMetrics().widthPixels/2);//因为需求需要所以设置了最大宽度,如果不需要此功能可以删除掉 paint=getPaint(); paint.setColor(getTextColors().getColorForState(getDrawableState(),0)); text=getText().toString(); if(TextUtils.isEmpty(text)){ return; } textLength=paint.measureText(text); isStarting=true; } @Override publicvoidsetTextColor(intcolor){ super.setTextColor(color); paint.setColor(color); start(); } @Override publicvoidsetText(CharSequencetext,BufferTypetype){ super.setText(text,type); this.text=text.toString(); this.textLength=getPaint().measureText(text.toString()); drawTextX=0; start(); } publicvoidstart(){ isStarting=true; invalidate(); } publicvoidstop(){ isStarting=false; invalidate(); } @Override publicvoidonDraw(Canvascanvas){ finalPaint.FontMetricsIntfontMetrics=paint.getFontMetricsInt(); baseline=(canvas.getHeight()-fontMetrics.bottom-fontMetrics.top)/2; if(textLength<=canvas.getWidth()){ canvas.drawText(text,0,baseline,paint); return; } canvas.drawText(text,-drawTextX,baseline,paint); if(!isStarting){ return; } if(drawTextX==0){ postDelayed(()->{ drawTextX=1; isStarting=true; invalidate(); },waitTime); isStarting=false; return; } drawTextX+=scrollTile; //判断是否滚动结束 if(drawTextX>textLength){ drawTextX=-canvas.getWidth(); } invalidate(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。