博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LinearGradient线性渲染
阅读量:6435 次
发布时间:2019-06-23

本文共 2586 字,大约阅读时间需要 8 分钟。

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();        }    }}
效果图

转载地址:http://qaqga.baihongyu.com/

你可能感兴趣的文章
移动自动化相关名词解释
查看>>
微信开发者工具 快捷键
查看>>
monkey测试===修改adb的默认端口
查看>>
AsyncTask和Handler处理异步消息
查看>>
Scheme 中的 pair 和 list 简述
查看>>
iOS AVAssetExportSession 视频剪切、合并、压缩
查看>>
我收藏的技术知识图(每张都是大图)
查看>>
Spring Boot制作启动图案
查看>>
《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
查看>>
hdu Oil Deposits
查看>>
彻底理解javascript中的this指针
查看>>
SAS去空格
查看>>
MySQL用户和权限管理
查看>>
Spring Cloud构建微服务架构(二)服务消费者
查看>>
这些老外的开源技术养活了一票国产软件
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
创业者应该有的5个正常心态(转)
查看>>
php模式设计之 注册树模式
查看>>
【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面
查看>>
_ENV和_G
查看>>