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);
    }
    };
    }

  • 相关阅读:
    流浪西邮之寻找火石碎片
    给你一个666
    似魔鬼的步伐
    括号匹配2019
    挑剔程度
    到底有到少个小和尚?
    获取任务栏所有正在运行程序
    EXTJS4创建多级菜单
    关于时间的一些理解
    kof97调隐藏人物
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/2103301.html
Copyright © 2011-2022 走看看