我有以下代码:
public class MainActivity extends Activity {
private BufferedReader br;
private Socket s;
private View v,v1;
private RelativeLayout rl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
s = new Socket("192.168.1.36",50000);
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
}catch(Exception e){e.printStackTrace();}
color();
}
private void color(){
rl = (RelativeLayout) this.findViewById(R.id.rellay);
while(true){
try{
String received = br.readLine();
if(received != null){
// System.out.println(received);
String[] color = received.split(",");
setColor(color);
}
}catch(Exception e){e.printStackTrace();}
}
}
private void setColor(String[] color){
rl = (RelativeLayout) this.findViewById(R.id.rellay);
int red = Integer.parseInt(color[0]);
int green = Integer.parseInt(color[1]);
int blue = Integer.parseInt(color[2]);
int a = Integer.parseInt(color[3]);
rl.setBackgroundColor(Color.argb(a, red, green, blue));
我想要做的是接收以逗号分隔的4个值(这个有效),我希望0-255范围内的值为RGB颜色。
我想改变android活动的背景。我可以从onCreate方法更改颜色一次,但是当我尝试更改它时,我会得到默认的白色屏幕。值永远不会超过255.
如何做到这一点?谢谢!
答案 0 :(得分:0)
确保alpha值!= 0。 alpha值表示颜色的透明度,因此0是完全透明的。 尝试从固定值开始,例如:
rl.setBackgroundColor(Color.argb(255, 0, 0, 0));
并确保它有效。 之后,从服务器中提取值并将其解析为颜色。
BTW,听听Nick Cardoso的评论,感受网络延迟是一种糟糕的用户体验。