zoukankan      html  css  js  c++  java
  • android 动态渐变 字符效果

    public class GradientView extends View {
    private String TAG = "GradientView";
    private Handler mTimeTickHandler;
    private int mIndex = 190;
    private Shader mShader;
    private Bitmap mBitmapBg;
    private Bitmap mBitmapWord;
    private int mMinWidth = 190;
    private int mMaxWidth ;
    private int mUpdateStep = 20;
    private Paint mPaint = new Paint();
    public GradientView(Context context) {
    super(context);
    }

    public GradientView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mTimeTickHandler
    = new Handler();
    setFocusable(
    true);
    InputStream is
    = context.getResources().openRawResource(R.drawable.sliding_channel_background);
    mBitmapBg
    = BitmapFactory.decodeStream(is);
    mMaxWidth
    = mBitmapBg.getWidth();
    mBitmapWord
    = Bitmap.createBitmap(mBitmapBg.getWidth(), mBitmapBg.getHeight(), Bitmap.Config.ALPHA_8);
    drawIntoBitmap(mBitmapWord, context);
    mTimeTickHandler.post(mTimeTickRunnable);
    }

    private void drawIntoBitmap(Bitmap bm, Context context) {
    float x = bm.getWidth();
    float y = bm.getHeight();
    Canvas c
    = new Canvas(bm);
    Paint p
    = new Paint();
    p.setAntiAlias(
    true);
    p.setColor(Color.WHITE);
    p.setTextSize(
    45);
    p.setTextAlign(Paint.Align.CENTER);
    c.drawText(context.getResources().getString(R.string.slide_unlock), x
    /2+10, y/2, p);
    }

    @Override
    protected void onDraw(Canvas canvas) {

    //canvas.drawBitmap(mBitmapBg, 0, 0, p);
    mPaint.setShader(mShader);
    canvas.drawBitmap(mBitmapWord,
    50, 13, mPaint);
    }

    public void removeHandlerGradient(){
    mTimeTickHandler.removeCallbacks(mTimeTickRunnable);
    }

    private Runnable mTimeTickRunnable = new Runnable(){

    public void run() {

    mIndex
    += mUpdateStep;
    if(mIndex >= mMaxWidth){

    mIndex
    = mMinWidth;
    }
    mShader
    = new LinearGradient(0, 150, mIndex, 150, new int[] { Color.GRAY,Color.GRAY,Color.GRAY, Color.GRAY,
    Color.WHITE },
    null, Shader.TileMode.MIRROR);

    postInvalidate();
    mTimeTickHandler.postDelayed(mTimeTickRunnable,
    100);
    }
    };
    }

  • 相关阅读:
    五分钟搞懂Vuex
    vue 背景图片 backgroundImage background-image vue的style方式绑定行内样式-background-image的方式等~
    VUE2.0 vue-cli构建项目中使用Less
    ES6如何引入图片
    Vue+Gojs实现流程图demo
    vue自定义指令要点
    vue cli中token验证
    linux服务器上配置多个svn仓库
    vue-cli(vue脚手架)超详细教程
    node学习第一天:nvm使用
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/2103301.html
Copyright © 2011-2022 走看看