文档章节

Android进阶学习-着色器/渲染器

August1996_
 August1996_
发布于 2016/05/22 14:48
字数 370
阅读 13
收藏 0

    Android绘图支持里面有有一个叫做Shader的东西,翻译过来就是叫做着色器,渲染器.作用是用来实现一种渐变,渲染的效果,其实就是填充.

    一共有5种Shader:

    BitmapShader    //位图

    LinearGradient    //线性

    RadialGradient    //光束

    SweepGradient    //梯度

    ComposeGradient    //混合

 

除了BitmapShader之外,其他的真的是产生渐变效果,而BitmapShader则是生成一个图像,类似于Photoshop的图像填充,它的作用是通过Paint对Canvas进行制定的Bitmap填充,填充模式有下面几种:

    CLAMP    //拉伸填充

    REPEAT    //横纵向重复填充

     MIRROR    //横向,纵向不断翻转

 

既然我们可以选择Bitmap去作为图像填充,那么我们可不可以实现这种圆形头像的效果呢?

肯定是可以的,我们可以用Bitmap去填充一个圆,在这篇文章的基础上做修改

修改process函数:

	public void process(View v) {
		Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.jpg);
		BitmapShader mBitmapShader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);
		Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
		mPaint.setShader(mBitmapShader);
		
		Bitmap destBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(destBitmap);
		
		/**
		 * 以上设置BitmapShader到Paint里
		 * 下面就是使用这个填充去画一个圆
		 */
		canvas.drawCircle(mBitmap.getWidth() / 2, mBitmap.getHeight() / 2,
				(Math.min(mBitmap.getWidth(), mBitmap.getHeight())) / 2, mPaint);
		((ImageView)
		
		findViewById(R.id.img)).setImageBitmap(destBitmap);
	}

这是一个应用BitmapShader的小例子,下面的其他几个着色器就等大家动手去做啦.也可以看看这个博客

参考:Canvas使用7行代码自定义圆形头像

© 著作权归作者所有

共有 人打赏支持
August1996_
粉丝 2
博文 51
码字总数 29055
作品 0
湛江
程序员
Android 音视频开发入门指南(2)

GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力、痛不欲生时就只有使用GLSurfaceView了,它能够真正做...

shareus
04/23
0
0
【Opengl Android】在安卓上渲染一个obj模型

工具:eclipse 一、获得一个obj文件并分析内容 3D溜溜网 点击打开链接 可以下载到很多模型文件 用3dmax打开 导出外部格式文件obj 即可得到一个obj模型 将格式改为txt 即可看到里面的数据内容...

qq_35263780
04/22
0
0
【GoogleSamples】源码研究 - hello-gl2

简单介绍 hello-gl2项目是用来展示如何用jni的方式来使用OpenGL ES 2.0。所谓JNI的方式,是以Java代码为主,在Java代码中调用C++代码去实现功能。与之相对的,可以以C++代码为主,在C++代码中...

闪电的蓝熊猫
05/19
0
0
HWUI(硬件加速绘制UI)简介

原址 简介:hwui主要是android用于2d硬件绘图而加入的一个模块,在hwui之前,android主要是用skia来进行软件绘制,后由于绘制性能等问题,现在android的绘图几乎都是使用了hwui硬件加速绘图。...

u010164190
04/27
0
0
Android自定义View---腐蚀面具

0.前言 最近一直在研究opengl,在android应用中可以很好的进行细粒度的对展示的效果进行控制,今天这个腐蚀面具的效果就是基于opengl es来做的。话不多说,先看效果图 1.使用 使用很简单,在...

滑板上的老砒霜
09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

android webrtc使用opensl es

1. java层开启开关 peerConnectionParameters = new PeerConnectionClient.PeerConnectionParameters(); 接口中的useOpensles参数设置为true 2. /system/etc/permissions/下新增and......

bill_shen
29分钟前
0
0
读《高性能mysql》记录

1 2

李佳顺
30分钟前
0
0
Element UI框架+Vue开发搭建示例

一、关于Element 1.Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,官方网址:http://element-cn.eleme.io/#/zh-CN 2.Element UI 是饿了么前端团队倾情打造htt...

tianma3798
32分钟前
2
0
Fragment整理

1、Fragment父类 Fragment的父类有两个,分别为android.app.Fragment和android.support.v4.app.Fragment。建议使用android.support.v4.app.Fragment。因为此Fragment在所有的android版本中可...

西米小娅
38分钟前
0
0
mysql报错:所选列未在GROUP BY子句中 的解决方法(laravel框架)

数据库配置文件database.php文件的 'mysql' => [ 'strict' => false] strict改为false,应该是开启宽松模式,就不会报错了...

郭周园
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部