zoukankan      html  css  js  c++  java
  • LinearGradient线性渲染

    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.LinearGradient;
    import android.graphics.Paint;
    import android.graphics.Shader;
    import android.view.View;
    
    /**
     * @version 2012-8-14 上午10:45:28
     **/
    public class myGameView extends View implements Runnable {
        int bitwidth = 0;
        int bitheight = 0;
        Paint mPaint = null;
        // 线性渐变渲染
        Shader mLinearGradient1 = null;
        // 线性渐变渲染
        Shader mLinearGradient2 = null;
        // 线性渐变渲染
        Shader mLinearGradient3 = null;
    
        public myGameView(Context context) {
            super(context);
            // 创建LinearGradient并设置渐变颜色数组
            // 第一个,第二个參数表示渐变起点 能够设置起点终点在对角等任何位置
            // 第三个,第四个參数表示渐变终点
            // 第五个參数表示渐变颜色
            // 第六个參数能够为空,表示坐标,值为0-1 new float[] {0.25f, 0.5f, 0.75f, 1 }
            // 假设这是空的,颜色均匀分布,沿梯度线。
            // 第七个表示平铺方式
            // CLAMP反复最后一个颜色至最后
            // MIRROR反复着色的图像水平或垂直方向已镜像方式填充会有翻转效果
            // REPEAT反复着色的图像水平或垂直方向
            mLinearGradient1 = new LinearGradient(0, 0, 0, 100, new int[] {
                    Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                    Shader.TileMode.CLAMP);
            mLinearGradient2 = new LinearGradient(0, 0, 0, 100, new int[] {
                    Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                    Shader.TileMode.MIRROR);
            mLinearGradient3 = new LinearGradient(0, 0, 0, 100, new int[] {
                    Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null,
                    Shader.TileMode.REPEAT);
            mPaint = new Paint();
            new Thread(this).start();
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            // LinearGradient的高度仅仅有100而绘制的矩形有200所以才会有反复
            // 假设高度两者同样clamp反复是看不出效果的
            Paint paint = new Paint();
            paint.setTextSize(20);
            paint.setColor(Color.WHITE);
            // 绘制渐变的矩形
            mPaint.setShader(mLinearGradient1);
            canvas.drawRect(0, 0, 200, 200, mPaint);
            canvas.drawText("CLAMP", 0, 200 + 20, paint);
            // 绘制渐变的矩形
            mPaint.setShader(mLinearGradient2);
            canvas.drawRect(0, 250, 200, 450, mPaint);
            canvas.drawText("MIRROR", 0, 450 + 20, paint);
            // 绘制渐变的矩形
            mPaint.setShader(mLinearGradient3);
            canvas.drawRect(0, 500, 200, 700, mPaint);
            canvas.drawText("REPEAT", 0, 700 + 20, paint);
        }
    
        @Override
        public void run() {
            while(!Thread.currentThread().isInterrupted()) {
                try {
                    Thread.sleep(100);
                }
                catch(Exception e) {
                    Thread.currentThread().interrupt();
                }
                postInvalidate();
            }
        }
    }
    效果图

  • 相关阅读:
    ----uni-app之解决底部按钮绝对定位后被软键盘推起的bug----
    ----uni-app之解决app手机键盘消失后页面往上滚的问题----
    mysql tips
    mysql 添加行号
    mysql中的几种join 及 full join问题
    Dcoker中启动mysql,并实现root远程访问
    DockerToolbox在Win7上的安装和设置
    Class.getResourceAsStream 和 ClassLoder.getResourceAsStream 的区别
    tomcat 启动异常 EOFException: Unexpected end of ZLIB input stream
    java异常处理-finally中使用return和throw语句
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4028516.html