虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android自定义Drawable实现圆角效果

Android自定义Drawable实现圆角效果
类别:Android编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了Android自定义Drawable实现圆角效果,实现一个圆形和圆角的背景图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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, 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的宽度和高度。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关热词搜索: Drawable 圆角