当前位置: 首页 > 面试题库 >

操纵Java / Android color int的alpha字节

帅博远
2023-03-14
问题内容

如果我在Java中有一个int用作Android颜色(用于在Canvas上绘制),我该如何操作该int的alpha分量?例如,如何使用操作来做到这一点:

int myOpaqueColor = 0xFFFFFF;
float factor = 0;
int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor);
//myTransparentColor should now = 0x00FFFFFF;

理想情况下,最好将第一个字节乘以任何factor值,而不是仅将字节设置为静态值。


问题答案:

查看Color类。

您的代码看起来像这样。

int color = 0xFFFFFFFF;
int transparent = Color.argb(0, Color.red(color), Color.green(color), Color.blue(color));

因此,将其包装在方法中可能类似于:

@ColorInt
public static int adjustAlpha(@ColorInt int color, float factor) {
    int alpha = Math.round(Color.alpha(color) * factor);
    int red = Color.red(color);
    int green = Color.green(color);
    int blue = Color.blue(color);
    return Color.argb(alpha, red, green, blue);
}

然后调用它以将透明度设置为50%:

int halfTransparentColor = adjustAlpha(0xFFFFFFFF, 0.5f);

我认为使用提供的Color类比直接自己进行位操作多了一些自我记录,而且它已经为您完成了。



 类似资料:
  • 为什么下面的语句出现错误 当以下代码正常工作时

  • 用 upstart 控制 Ceph 用 ceph-deploy 把 Ceph Cuttlefish 及更高版部署到 Ubuntu 之后,你可以用基于事件的 Upstart 来启动、关闭 Ceph 节点上的守护进程。 Upstart 不要求你在配置文件里定义守护进程例程。 用下列命令列出 Ceph 作业和例程: sudo initctl list | grep ceph 详情参见 initctl 。

  • C++ 提供了大量的用于执行格式化输入/输出的流操纵算子。流操纵算子提供了许多功能,如设置域宽、设置精度、设置和清除格式化标志、设置域填充字符、刷新流、在输出流中插入换行符并刷新该流、在输出流中插入空字符、跳过输入流中的空白字符等等。下面几节要介绍这些特征。 11.6.1 整数流的基数:流操纵算子 dec、oct、hex 和 setbase 整数通常被解释为十进制(基数为10)整数。如下方法可改变

  • 5.3. 文件名操纵 在很多情形下会使用动态包含,此时目录名或文件名中的部分会保存在一个变量中。例如,你可以缓存你的部分动态页来降低你的数据库服务器的负担。 <?php include "/cache/{$_GET['username']}.html"; ?> 为了让这个漏洞更明显,示例中使用了$_GET。如果你使用了受污染数据时,这个漏洞同样存在。使用$_GET['username']是一个极端

  • 问题内容: 我想知道是否可以在包含Java小应用程序的HTML页面上写一些内容。 更一般而言,这两者之间可能发生什么相互作用? 谢谢。 问题答案: 从您的Java小程序中 然后,您可以像往常一样使用javascript来操纵html页面。 声明小程序时,可能还需要包括mayscript参数,不确定是否需要了。