Android自定义Drawable实现圆角效果

发布时间 - 2026-01-11 03:00:07    点击率:

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  # 圆角  # Android中一种巧妙的drawable.xml替代方案分享  # Android RippleDrawable 水波纹/涟漪效果的实现  # Android自定义Drawable之在Drawable中部指定透明区域方法示例  # 浅谈Android中Drawable使用知识总结  # Android开发基于Drawable实现圆角矩形的方法  # Android Bitmap和Drawable的对比  # Android Drawable和Bitmap的转换实例详解  # Android DrawableTextView图片文字居中显示实例  # Android Drawable必备知识小结  # Android drawable微技巧  # 你不知道的drawable细节  # 明度  # 自定义  # 着色器  # 是在  # 是一种  # 平铺  # 两种  # 不透  # 大家多多  # 主要有  # 在实际  # java  # package  # setImageDrawable  # pre  # class  # brush  # mydrawable  # Canvas 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 手机网站制作与建设方案,手机网站如何建设?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Python函数文档自动校验_规范解析【教程】  Linux安全能力提升路径_长期防护思维说明【指导】  Python制作简易注册登录系统  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  WordPress 子目录安装中正确处理脚本路径的完整指南  如何在橙子建站中快速调整背景颜色?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  香港网站服务器数量如何影响SEO优化效果?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  深入理解Android中的xmlns:tools属性  黑客如何利用漏洞与弱口令入侵网站服务器?  香港服务器租用每月最低只需15元?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  郑州企业网站制作公司,郑州招聘网站有哪些?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Android okhttputils现在进度显示实例代码  如何在景安服务器上快速搭建个人网站?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  香港服务器建站指南:免备案优势与SEO优化技巧全解析  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  微信小程序 配置文件详细介绍  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  ,交易猫的商品怎么发布到网站上去?  如何在阿里云购买域名并搭建网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  js代码实现下拉菜单【推荐】  如何获取上海专业网站定制建站电话?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  原生JS实现图片轮播切换效果  微信小程序 scroll-view组件实现列表页实例代码  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  音响网站制作视频教程,隆霸音响官方网站?  如何打造高效商业网站?建站目的决定转化率