当前位置: 移动技术网 > 移动技术>移动开发>Android > Android自定义Drawable实现圆角效果

Android自定义Drawable实现圆角效果

2019年07月24日  | 移动技术网移动技术  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网