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怎么选_文本排版常用标签对比【解答】
音响网站制作视频教程,隆霸音响官方网站?
如何打造高效商业网站?建站目的决定转化率

