Android学习笔记进阶15之Shader渲染

Android提供的Shader类主要是渲染图像以及一些几何图形。

Shader有几个直接子类:

BitmapShader    : 主要用来渲染图像

LinearGradient  :用来进行线性渲染

RadialGradient  : 用来进行环形渲染

SweepGradient   : 扫描渐变---围绕一个中心点扫描渐变就像电影里那种雷达扫描,用来梯度渲染。

ComposeShader   : 组合渲染,可以和其他几个子类组合起来使用。

1   BitmapShader

渲染器着色一个位图作为一个纹理。位图可以重复或设置模式。

public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)

调用这个方法来产生一个画有一个位图的渲染器(Shader)。

bitmap   在渲染器内使用的位图

tileX      The tiling mode for x to draw the bitmap in.   在位图上X方向花砖模式

tileY     The tiling mode for y to draw the bitmap in.    在位图上Y方向花砖模式

TileMode:(一共有三种)

CLAMP  :如果渲染器超出原始边界范围,会复制范围内边缘染色。

REPEAT :横向和纵向的重复渲染器图片,平铺。

MIRROR :横向和纵向的重复渲染器图片,这个和REPEAT重复方式不一样,他是以镜像方式平铺。

2 LinearGradient

[java] view plain copy

  1. public        LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)

X0:   渐变起初点坐标x位置

y0:    渐变起初点坐标y位置

x1:    渐变终点坐标x位置

y1:    渐变终点坐标y位置

colors:  渐变颜色数组

positions:这个也是一个数组用来指定颜色数组的相对位置 如果为null 就沿坡度线均匀分布

tile:平铺方式

[java] view plain copy

  1. public    LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)

X0:       渐变起初点坐标x位置

y0:        渐变起初点坐标y位置

x1:        渐变终点坐标x位置

y1:        渐变终点坐标y位置

color0:  渐变开始颜色

color1:  渐变结束颜色

tile:    平铺方式

LinearGradient是线性渐变,用法如下:

Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变,代码如下:

Paint p=new Paint();

LinearGradient lg=new LinearGradien(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);

Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变,代码如下:

p.setShader(lg);

canvas.drawCicle(0,0,200,p); //参数3为画圆的半径,类型为float型。

时间: 2024-07-28 14:19:34

Android学习笔记进阶15之Shader渲染的相关文章

Android学习笔记进阶16之BitmapShader

<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲染器(Shader). bitmap   在渲染器内使用的位图 tileX      The tiling mode for x to draw the bitmap in.   在位图上X方向花砖模式 tileY  

Android学习笔记进阶之在图片上涂鸦(能清屏)

Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java [java] view plaincopy package xiaosi.handWriting; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import andro

Android学习笔记进阶18之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

Android学习笔记进阶18 之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

Android学习笔记进阶19之给图片加边框

[java] view plain copy //设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width){ borderwidth = width; } 具体实现: [java] view plain copy package xiaosi.imageborder; import android.app.Activity; import android.

Android学习笔记进阶14之像素操作

在我们玩的游戏中我们会经常见到一些图像的特效,比如半透明等效果.要实现这种半透明效果其实并不难,需要我们懂得图像像素的操作. 不要怕,其实在Android中Bitmap为我们提供了操作像素的基本方法. 我们可以通过getPixels()方法获得该图像的像素并放到一个数组中去,我们操作这个数组就可以了.最后通过setPixels()方法设置这个数组到Bitmap中. 在Android中,每一个图像像素通过一个4字节整数来展现:最高位字节用作Alpha通道,即用来实现透明与不透明控制,·255代表完

Android学习笔记进阶20之得到图片的缩略图

<1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在Android 2.2版本中,新增了一个ThumbnailUtils工具类来是实现缩略图,此工具类的功能是强大的,使用是简单,它提供了一个常量和三个方法.利用这些常数和方法,可以轻松快捷的实现图片和视频的缩略图功能. <2>ThumbnailUtils工具类 常量: OPTIONS_RECYCLE_

Android学习笔记进阶21之设置壁纸

别忘记在ApplicationManifest.xml 中加上权限的设置. <uses-permission Android:name = "android.permission.SET_WALLPAPER"/> 壁纸设置方法有三种: 第一 通过WallpaperManager方法中的 setBitmap() 第二 通过WallpaperManager方法中的 setResource() 第三 通过ContextWrapper 类中提供的setWallpaper()方法 由

Android学习笔记进阶十三获得本地全部照片

这是Intent的一个用法. 在ActivityAction里面有一个"ACTION_GET_CONTENT"字符串常量,该常量让用户选择特定类型的数据. intent.setType("image/*");  选择本地所有的图片. 返回该数据的URI.我们利用该常量生成该图片的位图Bitmap,然后为添加到图片控件(ImageView)上就行了. 选择你想要的图片: main.xml [java] view plain copy <?xml version=