Android 颜色处理(四) 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重复方式不一样,他是以镜像方式平铺。
首先看一下效果图:
还是直接上代码:
MainActivity:
package com.tony.shader;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
private BitmapShaderView shaderView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
shaderView = new BitmapShaderView(this);
setContentView(shaderView);
}
}
BitmapShaderView:
package com.tony.shader;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.util.AttributeSet;
import android.view.View;
public class BitmapShaderView extends View {
private BitmapShader bitmapShader = null;
private Bitmap bitmap = null;
private Paint paint = null;
private ShapeDrawable shapeDrawable = null;
private int BitmapWidth = 0;
private int BitmapHeight = 0;
public BitmapShaderView(Context context) {
super(context);
// 得到图像
bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.cat))
.getBitmap();
BitmapWidth = bitmap.getWidth();
BitmapHeight = bitmap.getHeight();
// 构造渲染器BitmapShader
bitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR,Shader.TileMode.REPEAT);
}
public BitmapShaderView(Context context,AttributeSet set) {
super(context, set);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//将图片裁剪为椭圆形
//构建ShapeDrawable对象并定义形状为椭圆
shapeDrawable = new ShapeDrawable(new OvalShape());
//得到画笔并设置渲染器
shapeDrawable.getPaint().setShader(bitmapShader);
//设置显示区域
shapeDrawable.setBounds(20, 20,BitmapWidth-140,BitmapHeight);
//绘制shapeDrawable
shapeDrawable.draw(canvas);
}
}
分享到:
相关推荐
【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 ...
安卓Android源码——(Bitmap位图渲染与操作).rar
安卓Android源码——(Bitmap位图渲染与操作).zip
Android下使用OpenGL渲染yuv420p图像并显示。例子中提供了两种类型,一种使用GLSurfaceView在onDrawframe中调用native方法绘制,另外一种使用EGL,直接在native层完成渲染和显示功能。
public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个类来产生一个画有一个位图的渲染器(Shader)。 bitmap:在渲染器内使用的位图 (1)tileX:The tiling mode for x to ...
Android Bitmap位图渲染与操作源码.rar
MarkdownView - 支持Markdown渲染的WebView实现
支持YUV 的I420/NV21/NV12的数据渲染,关键字:opengl es 、surfaceview、android、camera
一个利用RxJava在TextView和EditText上渲染的markdown解析器,支持大部分语法以及部分语法在EditText上实时预览(yydcdut)
android-magic-surface-view 这是一个 android 动画特效库, 可以实现各种炫酷动画。 1. 安装 gradle: dependencies { compile 'com.gplibs:magic-surface-view:1.1.1' } 2. 一些示例效果 此文档只做一些简单说明...
《android 渲染架构演进》
android 最新ffmpeg3.4.2版本, 实现硬解软解视频+nativewindow渲染例子
Android应用源码之(Bitmap位图渲染与操作.zip项目安卓应用源码下载Android应用源码之(Bitmap位图渲染与操作.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...
关于Android游戏开发的前台渲染的基础
ArcEngine简单教程——栅格、矢量图层的颜色渲染对应demo; 备份链接:链接:https://pan.baidu.com/s/1e9I07SEFI1kRzmZuiLxQ7w 提取码:kkw5 教程博客:https://blog.csdn.net/nominior/article/details/106279762
1.移植ffmpeg到android 2.通过JNI接口调用ffmpeg实现h264的解码以及渲染 3.h264渲染采用opengles技术 代码保护局ffmpeg源码 JNI部分 以及opengles渲染部分,还有上层demo APP程序,该程序可以直接安装,播放h264...
根据数据结构动态渲染视图,render.view 为渲染视图结构。
用android shader线性渲染实现类似与歌词逐字变色同步的效果
Android 应用开发源码 参考与学习使用
【Opengl Android】在安卓上渲染一个obj模型 用了obj2openjl 这个库