关于色值:
0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x代表十六进制数,ff代表十六进制的透明度的值,ff00ff代表十六进制的三原色的值(“红、绿、蓝”)。
注意:
1. 0x后面ffff00ff必须有8位,透明度和色值都是以十六进制表示,值的范围从00到 ff(整形: 0到 255)。对于 alpha,00表示完全透明,ff表示完全不透明。
2. 0xffff00ff是整形表示,"#FFFFFF"是字符串类型表示
3. 在JS中,如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。如,八进制:var y=0377; 十六进制:var z=0xFF;
16进制:
A:10 B:11 C:12 D:13 E:14 F:15
例子:
2AF5 = 2*16*16*16 + 10*16*16 + 15*16 + 5*1 = 10997
(注意:以上是16进制转10进制,和2进制转10进制一样)
补充:
10进制转化为16进制的算法 :10进制数除以16得到商和余继续处理
关于TextView直接用代码模仿在xml中使用颜色选择器的效果:
1. textV1.setTextColor()方法中只能放color文件中的色值,不可以直接用选择器文件
textV1.setTextColor(getResources().getColor(R.color.title_category_tv_default_bg));
2. 通过触碰监听方法,textV1.setOnTouchListener(viewOnTouch);来模拟手指下去和上来的状态
View.OnTouchListener viewOnTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
DLog.e("--ACTION_DOWN---");
((TextView) v).setTextColor(getResources().getColor(R.color.title_category_tv_press_bg));
} else if (event.getAction() == MotionEvent.ACTION_UP) {
DLog.e("--ACTION_UP---");
((TextView) v).setTextColor(getResources().getColor(R.color.title_category_tv_default_bg));
}
return false;
}
};
注意:第一次最好给TextView控件字体设置一下默认的色值,避免第一次需要改变字体颜色后才能看到效果
延伸:直接设置String类型的颜色值
layout.setBackgroundColor(Color.parseColor("#FFFFFF"))//设置背景颜色
tv_title.setTextColor(Color.parseColor("#FFFFFF"));//设置字体颜色
tv_title.setTextColor(mContext.getResources().getColor(R.color.black));//设置字体颜色
TextView颜色设置方式:
方式一:
tv_textView.setTextColor(getResources().getColor(R.color.colorAccent));
方式二:
tv_textView.setTextColor(Color.parseColor("#FDFF00"));
方式三:
tv_textView.setTextColor(Color.rgb(93, 95, 98));
方式四:
tv_textView.setTextColor(0xffff0000);
注意:
layout.setBackgroundColor支持以下三种方式:
1. getResources().getColor(R.color.colorAccent)
2. Color.parseColor("#FF0000")
3. 0xffff0000
TextView设置背景颜色
有三种方法:
setBackgroundResource:通过颜色资源ID设置背景色。
setBackgroundColor:通过颜色值设置背景色。
setBackgroundDrawable:通过Drawable对象设置背景色。
下面分别演示如何用这3个方法来设置TextView组件的背景
setBackgroundResource方法设置背景:
以下为引用内容: textView.setBackgroundResource(R.color.background);
setBackgroundColor方法设置背景:
以下为引用内容: textView.setBackgroundColor(android.graphics.Color.RED);
setBackgroundDrawable方法设置背景:
以下为引用内容: Resources resources=getBaseContext().getResources(); Drawable drawable=resources.getDrawable(R.color.background); textView.setBackgroundDrawable(drawable);
//一个属性对象被引用多次,最后属性值会覆盖前面的属性值,最好一个视图搭配一个属性对象
RelativeLayout.LayoutParams tvParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
----------------------------------
TextView设置Html数据,<br>h5的换行符不支持,解决:直接设置字符串,然后把<br>替换系统可识别的换行符
// ToolClass.getInstance().setTvHtml(tvRule, signInfoBean.getRule().replace("</br>", "\\n"));
setText(tvRule, signInfoBean.getRule().replace(Constant.LINE_BREAK, "\n"));
public static final String LINE_BREAK = "#line_break#";
---------------------------------
复制功能:
方式一:android sdk 11起支持,在布局文件的TextView控件属性中增加一行属性,就可以实现复制文本效果:
(缺点,长按会弹出拖动复制的区域,需要手动拖动复制)
android:textIsSelectable="true"
方式二:直接调用系统方法,整行复制,注意这两种方法复制的内容都在剪切板上,最后复制的内容会覆盖前面的,覆盖与剪切板标签无关
/**
* 复制文本(整行复制)
* @param context
* @param copyLabel
* @param copyContent
*/
public void copyTextToClipboard(Context context, String copyLabel, String copyContent) {
try {
if (android.os.Build.VERSION.SDK_INT > 11) {
//在API 11之后,对ClipboardManager进行了升级,使之可