Android Shader渲染器:BitmapShader图片渲染
2015-07-14 17:42
369 查看
public class BitmapShader extends Shader
BitmapShader, Shader家族的 专门处理图片渲染的
构造方法:
public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY)
bitmap:原图
tile直译为 瓷砖,瓦片。这里的TileMode 可看成是 铺图的模式。
tileX, tileY:x/y 方向铺图的模式
public enum TileMode { CLAMP (0), REPEAT (1), MIRROR (2); TileMode(int nativeInt) { this.nativeInt = nativeInt; } final int nativeInt; }CLAMP:如果超出原始bounds(即原图的边界),则重复边缘上的color
REPEAT:重复bitmap
MIRROR:重复bitmap,与REPEAT不同的时,它是镜像重复,即:反向重复
例:
public class BitmapShaderView extends View { private BitmapShader mBitmapShader; private ShapeDrawable mShapeDrawable; public BitmapShaderView(Context context, Bitmap bitmap) { super(context); mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mShapeDrawable = new ShapeDrawable(new OvalShape()); mShapeDrawable.getPaint().setShader(mBitmapShader); // mShapeDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); //原图大小 mShapeDrawable.setBounds(0, 0, bitmap.getWidth() * 2, bitmap.getHeight() * 2); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.CYAN); mShapeDrawable.draw(canvas); } }在Activity中,setContentView(new BitmapShaderView(context, bitmap));
原图 效果图
x和y
边缘重复
改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR, Shader.TileMode.REPEAT);
效果
x方向镜像重复;y方向重复
改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR);
效果:
x方向重复;y方向镜像重复
相关文章推荐
- Android 开机动画修改
- Android onClick和滑动事件冲突解决
- Android有关JNI 学习(两)为JNI方法名称,数据类型和方法签名的一些知识
- Android studio 查看签名
- Android下2d物理引擎Box2d用法简单实例
- Android NDK(JNI)学习总结一:Java代码中申明native函数-Java调用C函数,并在C函数中访问java类和方法、属性
- Android 中的 Service 全面总结
- Arcgis for Android 加载离线地图报错:com.esri.core.io.EsriServiceException: Unauthorized
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- Android URI简介
- Android 分享单个文件
- android layout_gravity失效的问题
- Android实现固定屏幕显示的方法
- Android--listview下拉刷新,上拉加载
- Android 获取系统内存
- Android 混淆导包APK时报错
- 编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言
- Android 编程规范
- Android NFC开发读写NDEF数据实例
- Android 内存溢出的几点解决方法