在学取色的时候代码写的想当然了,结果弄了半天颜色一直不变,仔细看后才发现问题,见代码
- package sucre.android;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- /**
- * 通过定义一个color.xml,然后让字体随机变色,这里在取色的时候
- * 要注意一个问题,getResources().getColor(你定义的颜色)这样才
- * 能真正取到相应的颜色
- * @author qiaolei
- *
- */
- public class EX03_13 extends Activity {
- private Button bt;
- private TextView tv;
- private int[] colors;
- private int column;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //定义一个颜色数组
- colors = new int[]{R.color.red,R.color.blue,R.color.black,R.color.green,
- R.color.yellow,R.color.orange,R.color.brown};
- column = 0;
- bt = (Button)findViewById(R.id.mButton);
- tv = (TextView)findViewById(R.id.changColor);
- bt.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- if(column<colors.length){
- System.out.println(colors[column]+":"+getResources().getColor(colors[column]));
- //tv.setTextColor(colors[column]);
- //tv.setTextColor(-65536);
- tv.setTextColor(getResources().getColor(colors[column]));
- column++;
- }else{
- column = 0;
- }
- }
- });
- }
- }
注意到文中的
- tv.setTextColor(colors[column]);
这行代码了吗?这样是取不到颜色的,为了验证通过
- System.out.println(colors[column]+":"+getResources().getColor(colors[column]));
这行代码得到结果
看到了-65536才是真正的颜色的值,直接这样写
- tv.setTextColor(-65536);
也是可以变色的,所以取色的时候要这样取
- getResources().getColor(colors[column])
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/743483,如需转载请自行联系原作者