Android 颜色透明度(不透明度)计算


我们在开发过程中经常看到美工给你的标注颜色类似于#0000FF(蓝色)这样的颜色码,然后还可能有一个不透明度(美工可能给你说的是透明度,但是这个准确来说是不透明度,下面有图为证)
那这个不透明度,在Andriod中怎么表示呢,我来普及一下这个基础知识

Android中颜色简介
Android中的颜色值通常遵循RGB/ARGB标准,使用时通常以#字符开头,以16进制表示。
其中RGB依次代表红色(Red)、绿色(Green)、蓝色(Blue).
ARGB依次代表透明度(Alpha)、红色(Red)、绿色(Green)、蓝色(Blue)

eg:#FF00CC99其中FF是透明度,00是红色值,CC是绿色值,99是蓝色值

不透明度
透明度的范围是0-255,在计算机中,我们就用16进制(00-FF)表示,全透明就是00,完全不透明就是FF

透明度和不透明度加起来等于1或者说100%

计算方法
255 * 不透明度 -> 转换成16进制数

eg:30%不透明度也就是255*30%=76.5,四舍五入77,然后利用计算器转为16进制为4D

下面是代码计算

public static void main(String[] args) {
        for (int i = 0; i <= 100; i++) {
            float temp = 255 * i * 1.0f / 100f;
     

Android Studio中设置不透明度圆角矩形通常涉及自定义View的绘制。你可以通过覆写`onDraw()`方法来自定义View的外观,并使用`Canvas` API来绘制带有圆角的矩形并设置其Alpha。以下是步骤: 1. 创建一个自定义View的子类,例如`TransparentRoundedRectangleView`: ```java public class TransparentRoundedRectangleView extends View { private int cornerRadius; private float alpha; // 构造函数接收圆角半径和透明度作为参数 public TransparentRoundedRectangleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); cornerRadius = dpToPx(5); // 圆角半径,默认5dp alpha = 0.8f; // 透明度,默认80% } // 将dp转换为像素 private int dpToPx(float dp) { return (int) (dp * Resources.getSystem().getDisplayMetrics().density + 0.5f); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 设置画笔样式,包括颜色透明度和圆角 Paint paint = new Paint(); paint.setColor(Color.TRANSPARENT); paint.setAlpha((int) (alpha * 255)); // 阿拉伯数字转八位十六进制 paint.setStyle(Paint.Style.FILL); paint.setStrokeWidth(0); paint.setAntiAlias(true); // 提供平滑效果 // 计算矩形的实际尺寸,这里假设你有一个默认宽度和高度 int width = getWidth(); int height = getHeight(); // 绘制圆角矩形 RectF rect = new RectF(0, 0, width, height); rect.roundRadii(new float[]{cornerRadius, cornerRadius, cornerRadius, cornerRadius}); canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint); } } ``` 使用这个自定义View时,只需把它添加到布局文件中,然后调整属性如`cornerRadius`和`alpha`即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dl6655

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值