
Drawable是一种可绘制资源的载体,如图形、图像等。在实际开发中可以作为vIEw的背景。主要有静态和动态两种方式,静态通过xml描述使用,动态即自定义Drawable。本文实现一个圆形和圆角的背景图片效果。
效果图:
实现方式:
1.初始化一个BitmapShader着色器对象;
2.将着色器对象set给画笔;
3.在画布上绘制圆或圆角即可;
4.使用,vIEw.setBackgroundDrawable
或者 ImageVIEw.setimageDrawable
package com.mydrawable.musk;import androID.graphics.Bitmap;import androID.graphics.BitmapShader;import androID.graphics.Canvas;import androID.graphics.colorFilter;import androID.graphics.Paint;import androID.graphics.PixelFormat;import androID.graphics.Shader;import androID.graphics.drawable.Drawable;/** * Created by musk. */public class CircleDrawable extends Drawable { private Paint mPaint; private int mWIDth; private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap) { mBitmap = bitmap; //着色器,设置横向和纵向的着色模式为平铺 BitmapShader bitmapShader = new BitmapShader(mBitmap,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setShader(bitmapShader); mWIDth = Math.min(mBitmap.getWIDth(),mBitmap.getHeight()); } //绘制 @OverrIDe public voID draw(Canvas canvas) { canvas.drawCircle(mWIDth / 2,mWIDth / 2,mPaint); } //设置透明度值 @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; } //返回图片实际的宽高 @OverrIDe public int getIntrinsicWIDth() { return mWIDth; } @OverrIDe public int getIntrinsicHeight() { return mWIDth; }}自定义Drawable有五个方法必须覆写,draw()、setAlpha()、setcolorFilter()、getopacity(),另外的getIntrinsicWIDth()和getIntrinsicHeight()是在vIEw设置wrap_content时设置drawable的宽度和高度。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android自定义Drawable实现圆角效果全部内容,希望文章能够帮你解决Android自定义Drawable实现圆角效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)