gpt4 book ai didi

java - 设置按钮背景颜色

转载 作者:行者123 更新时间:2023-12-01 14:20:37 24 4
gpt4 key购买 nike

所以我尝试设置按钮颜色。它是这样的:

    if (D) {Log.d(TAG, "color =" + bytes);};
int c = Color.argb(bytes[4], bytes[3], bytes[2], bytes[1]);
btnStart.setBackgroundColor(c);
if (D) {Log.d(TAG, "color " + bytes[4]+ bytes[3]+bytes[2]+ bytes[1]);};
break;

我在 LogCat 中得到以下输出:颜色= [B@40534710颜色-1-1-1-1这是怎么回事?我期望在数组中看到一些其他值,而不是 -1...

这是完整的代码

    mainHandler=new Handler(){
public void handleMessage(Message msg) {
switch (msg.what){
case TOAST:
Bundle bundle = msg.getData();
String string = bundle.getString("myKey");
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_SHORT).show();
break;
case NEW_SMS:
if (D) {Log.d(TAG, "newSms recieved");}
byte[] bytes =(byte[]) msg.obj;
switch (bytes[0]){
case SMS_TEXT:
bytes = shiftArrayToLeft(bytes);
String readMessage = new String(bytes, 0, msg.arg1);
txtView.setText(readMessage);
break;
case SMS_COLOR:
if (D) {Log.d(TAG, "color =" + bytes);};
//LinearLayout lLayout = (LinearLayout) findViewById(R.id.lLayout);
int c = Color.argb(bytes[4], bytes[3], bytes[2], bytes[1]);
btnStart.setBackgroundColor(c);
if (D) {Log.d(TAG, "color " + bytes[4]+ bytes[3]+bytes[2]+ bytes[1]);};
break;
}

}
}};

这是处理蓝牙消息的处理程序

最佳答案

您的bytes数组的类型是什么?如果它是一个 byte[] 数组,那么就会遇到问题,因为 byte 是有符号整数,范围从 -128 到 127,而 Color .argb() 构造函数需要 4 个 int,范围为 0 到 255。这意味着,如果字节数组的任何元素包含负值,则 Color.argb () 调用将会失败。文档说:

These component values should be [0..255], but there is no range check performed, so if they are out of range, the returned color is undefined.

无论如何,Java 中没有无符号字节类型,因此您必须手动确保将值从 -128 到 127 范围转换为 0 到 255 范围内的整数。像这样的东西应该有效:

int c = Color.argb(((int)bytes[4]) % 256, ((int)bytes[3]) % 256, ((int)bytes[2]) % 256,  ((int)bytes[1]) % 256);

可能有一个更优雅的解决方案,但这至少会确认这是否是您的问题。

关于java - 设置按钮背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com