免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1119 | 回复: 0
打印 上一主题 下一主题

闪烁字体 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-24 10:26 |只看该作者 |倒序浏览
很漂亮的字体闪烁效果,我们可以用在一个项目的spalsh界面,进入应用后弹出这个界面,闪烁完毕后跳入主界面,比纯粹的设置背景图片的splash好看炫酷很多。

通过自定义view重写onDraw的方法和onSizeChanged方法实现效果。在把自定义view进行应用到布局文件就可以了。
  1. import cn.bmob.ziti.R.color;
  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.Color;
  5. import android.graphics.LinearGradient;
  6. import android.graphics.Matrix;
  7. import android.graphics.Paint;
  8. import android.graphics.Shader;
  9. import android.util.AttributeSet;
  10. import android.widget.TextView;

  11. public class MyTextView extends TextView {

  12.         private LinearGradient mLinearGradient;
  13.         private Matrix mGradientMatrix;
  14.         private Paint mPaint;
  15.         private int mViewWidth = 0;
  16.         private int mTranslate = 0;

  17.         private boolean mAnimating = true;

  18.         public MyTextView(Context context, AttributeSet attrs) {
  19.                 super(context, attrs);
  20.         }

  21.         @Override
  22.         protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  23.                 super.onSizeChanged(w, h, oldw, oldh);
  24.                 if (mViewWidth == 0) {
  25.                         mViewWidth = getMeasuredWidth();
  26.                         if (mViewWidth > 0) {
  27.                                 mPaint = getPaint();
  28.                                 mLinearGradient = new LinearGradient(-mViewWidth, 0, 0, 0,
  29.                                                 new int[] { 0x33ffffff, 0xffffffff, 0x33ffffff },
  30.                                                 new float[] { 0, 0.5f, 1 }, Shader.TileMode.CLAMP);
  31.                                 mPaint.setShader(mLinearGradient);
  32.                                 mGradientMatrix = new Matrix();
  33.                         }
  34.                 }
  35.         }

  36.         @Override
  37.         protected void onDraw(Canvas canvas) {
  38.                 super.onDraw(canvas);
  39.                 if (mAnimating && mGradientMatrix != null) {
  40.                         mTranslate += mViewWidth / 10;
  41.                         if (mTranslate > 2 * mViewWidth) {
  42.                                 mTranslate = -mViewWidth;
  43.                         }
  44.                         
  45.                         mGradientMatrix.setTranslate(mTranslate, 0);
  46.                         mLinearGradient.setLocalMatrix(mGradientMatrix);
  47.                         postInvalidateDelayed(50);
  48.                 }
  49.         }

  50. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP