我正在为我的应用程序小部件实现一个小部件透明度选项,尽管我在修复十六进制颜色值时遇到了一些麻烦.作为十六进制颜色透明度的全新,我搜索了一下,虽然我找不到我的问题的具体答案.
我想用十六进制颜色设置透明度,所以让我说我的十六进制颜色ID"#33b5e5",我希望它是50%透明.然后我会使用"#8033b5e5",因为80%是50%.
我在这里找到了一个有用的图表:http://www.dtp-aus.com/hexadeci.htm.有了这些数据,我设法得到了这个:
0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144
Run Code Online (Sandbox Code Playgroud)
现在,当我以十六进制高于100时问题开始出现.十六进制颜色代码只能长8个符号吗?例如#11233b5e5(80%)崩溃.
我能做些什么才能让我使用更高的数字呢?
我无法从资源中检索正确的颜色值。
从 araks 的这个非常好的答案getResources().getColor()
中,我们看到新的 Marshmallow API 已弃用旧方法,因此
我的实现:(尽管非常广泛地寻找原因)
int resColorID;
if (//something here) {
//some code
resColorID = R.color.color1;
//some code
resColorID = R.color.color2;
//some code
resColorID = R.color.color3;
}
int resC = ContextCompat.getColor(context, resColorID);
ColorDrawable cDraw = new ColorDrawable(resC);
Run Code Online (Sandbox Code Playgroud)
resC
总是,但总是返回-1。对于我的一生,我找不到任何关于此的东西,
指定的颜色(它们是任意名称)R.color.color1
等均在中定义colors.xml
额外信息:
为什么会发生这种情况?