自定义Drawble
来源:互联网 发布:mac无u盘安装win7 编辑:程序博客网 时间:2024/05/29 18:14
简单的自定义Drawable
圆角矩形Drawable:
public class RoundRectImageDrawable extends Drawable { private Paint mPaint; private Bitmap mBitmap; //绘制区域 private RectF rectF; //圆角半径 private float rx = 30; private float ry = 30; public RoundRectImageDrawable(Bitmap bitmap) { BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()); mBitmap = bitmap; } /** * 绘制其边界(通过setBounds设置)尊重可选的效果作为alpha(通过setAlpha设置)和颜色过滤器(通过setColorFilter设置)。 * * @param canvas */ @Override public void draw(Canvas canvas) { canvas.drawRoundRect(rectF, rx, ry, mPaint); } /** * 为Drawable指定一个边界矩形。 这是drawable的地方将在draw()方法被调用时绘制。 * * @param left * @param top * @param right * @param bottom */ @Override public void setBounds(int left, int top, int right, int bottom) { super.setBounds(left, top, right, bottom); rectF.set(left, top, right, bottom); } @Override public int getIntrinsicWidth() { return mBitmap.getWidth(); } @Override public int getIntrinsicHeight() { return mBitmap.getHeight(); } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter colorFilter) { mPaint.setColorFilter(colorFilter); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; }}
圆形Drawable:
public class CircleImageDrawable extends Drawable { private Paint mPaint; private Bitmap mBitmap; private RectF rectF; private int R; public CircleImageDrawable(Bitmap bitmap) { BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(bitmapShader); rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()); mBitmap = bitmap; R = Math.min(bitmap.getWidth(), bitmap.getHeight()); } @Override public void draw(Canvas canvas) {// canvas.drawRoundRect(rectF, 30, 30, mPaint); canvas.drawCircle((rectF.right + rectF.left) / 2, (rectF.top + rectF.bottom) / 2, R / 2, mPaint); } @Override public void setBounds(int left, int top, int right, int bottom) { super.setBounds(left, top, right, bottom); rectF.set(left, top, right, bottom); R = Math.min(right - left, bottom - top); } @Override public int getIntrinsicWidth() { return mBitmap.getWidth(); } @Override public int getIntrinsicHeight() { return mBitmap.getHeight(); } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter colorFilter) { mPaint.setColorFilter(colorFilter); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; }}
通过以上简单例子可以定义出其他形状的Drawable~
0 0
- 自定义Drawble
- 自定义Drawble-Xml
- 如何自定义更改bitmap 或者drawble的宽和高
- Android Drawble
- Android:Bitmap->Drawble->Byte[]
- 关于Drawble 和Bitmap
- drawble用法总结
- drawble 的使用
- Drawble高效创建缩略图方法
- res下五个drawble文件夹
- drawble和bitmap的区别
- Bitmap/byte/Drawble 相互转换 + 内存剪裁
- Android 资源的使用之Drawble使用
- failed to convert @drawable/ intto drawble
- Drawble和Bitmap之间的转换
- android 把bitmap转成drawble后宽高不一致的解决方法
- android 把bitmap转成drawble后宽高不一致的解决方法
- android 把bitmap转成drawble后宽高不一致的解决方法
- POJ 2259Team Queue
- hibernate搭建环境及单表映射实例
- ELK学习1:搭建
- jQuery实现购物车数字加减效果
- Linux进程间通信 -1使用信号
- 自定义Drawble
- HDU1873 看病要排队
- Android NDK生成及连接静态库与动态库
- LeetCode 22. Generate Parentheses 解题报告
- OpenCV-Python[第二章]——图像初步
- 链表操作类
- 代理模式
- 深入浅出JMS(一)--JMS基本概念
- bit误码率和包误码率