android自定义view仿今日头条加载文字变色效果
更新时间:2018年07月17日 10:31:38 作者:zhoushenxian
这篇文章主要为大家详细介绍了android自定义view仿今日头条加载文字变色效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了android自定义view加载文字变色效果的具体代码,供大家参考,具体内容如下
不分析了,很简单,直接贴代码:
package com.loading; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Handler; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; /** * Created by zhouguizhijxhz on 2018/5/25. */ public class LoadingView extends View{ private Paint loadPaint; private Paint paint; private String text = "今日头条"; private float percent; private Handler handler = new Handler(); public LoadingView(Context context) { this(context,null); } public LoadingView(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public LoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initPaint(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); setMeasuredDimension(bounds.width(),bounds.height()); } private void initPaint() { paint = new Paint(); paint.setColor(Color.parseColor("#999999")); paint.setTextSize(60); loadPaint = new Paint(); loadPaint.setStyle(Paint.Style.FILL); loadPaint.setColor(0x70ffffff); } @Override protected void onDraw(Canvas canvas) { drawText(canvas); drawLine(canvas); } private void drawLine(Canvas canvas) { if(null==canvas){ return; } canvas.save(); Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); Rect rect = new Rect(0, 0, (int) (bounds.width()*percent), bounds.height()); canvas.clipRect(rect); canvas.drawRect(rect,loadPaint); canvas.restore(); handler.postDelayed(new Runnable() { @Override public void run() { if(percent>=1.0){ percent=0; }else{ percent+=0.05f; } postInvalidate(); } },200); } private void drawText(Canvas canvas) { if(null==canvas){ return; } Paint.FontMetricsInt fm = paint.getFontMetricsInt(); canvas.drawText(text, getWidth() / 2 - paint.measureText(text) / 2, getHeight() / 2 - (fm.bottom + fm.top) / 2, paint); } @Override protected void onWindowVisibilityChanged(int visibility) { if(visibility==View.VISIBLE){ percent+=0.05f; invalidate(); } } }
效果:
如果要达到头条那么好看,叫你们美工给你们2个颜色值就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章
Android利用ContentProvider获取联系人信息
这篇文章主要为大家详细介绍了Android利用ContentProvider获取联系人信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11AndroidStudio不自动添加新创建的文件到VCS的解决办法
这篇文章主要介绍了AndroidStudio不自动添加新创建的文件到VCS的解决办法的相关资料,需要的朋友可以参考下2017-03-03android中RecycleView添加下滑到底部的监听示例
本篇文章主要介绍了android中RecycleView添加下滑到底部的监听示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-03-03Android开发之图形图像与动画(四)AnimationListener简介
就像Button控件有监听器一样,动画效果也有监听器,只需要实现AnimationListener就可以实现对动画效果的监听,感兴趣的朋友可以了解下啊,希望本文对你有所帮助2013-01-01Win10下android studio开发环境配置图文教程
这篇文章主要为大家详细介绍了Win10下android studio开发环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-07-07
最新评论