像素的概述
Android支持的像素有:px(像素),in(英寸),mm(毫米),pt(磅,1/72英寸),dp(与设备无关的显示单位),dip(等价dp),sp(用来设置字体大小)。px,dp,sp是最常用的。
px | 是手机屏幕上可显示最小单位,与物理设备有关。一般来说,同样尺寸的屏幕,像素密度越高,以px计量的分辨率越大。 |
---|---|
dp | 只于屏幕尺寸有关,同样的尺寸屏幕以dp计量的分辨率是一样的。 |
sp | 专门用于设置字体的大小。 |
注:sp与dp的区别和联系:手机在系统设置里可以调整字体的大小(分为小,普通,大,超大)。设置普通字体时,同数值的dp和sp看起来一样大;
如果设置为大字体时,用dp设置的文字没有变化,用sp设置的文字就变大了;
像素转换函数
1.根据手机的分辨率从dp单位转成 px(像素)
public static int dip2px(Context context, float dpValue) {
// 获取当前手机的像素密度
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f); // 四舍五入取整
}
2.// 根据手机的分辨率从 px(像素) 的单位 转成为 dp
public static int px2dip(Context context, float pxValue) {
// 获取当前手机的像素密度
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f); // 四舍五入取整
}
3.获得屏幕的宽度
public static int getScreenWidth(Context ctx) {
// 从系统服务中获取窗口管理器
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
// 从默认显示器中获取显示参数保存到dm对象中
wm.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels; // 返回屏幕的宽度数值
4.获得屏幕的高度
public static int getScreenHeight(Context ctx) {
// 从系统服务中获取窗口管理器
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
// 从默认显示器中获取显示参数保存到dm对象中
wm.getDefaultDisplay().getMetrics(dm);
return dm.heightPixels; // 返回屏幕的高度数值
}
5.获得屏幕的像素密度
public static float getScreenDensity(Context ctx) {
// 从系统服务中获取窗口管理器
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
// 从默认显示器中获取显示参数保存到dm对象中
wm.getDefaultDisplay().getMetrics(dm);
return dm.density; // 返回屏幕的像素密度数值
}
Android用于设置字体大小的函数都以px为单位。比如LayoutParams中的width和height,以及setMargin和setPadding
下面在MainActivity里调用函数
// 将10dp的尺寸大小转换为对应的px数值
int dip_10 = Utils.dip2px(this, 10L);
// 从布局文件中获取名叫tv_padding的文本视图
TextView tv_padding = findViewById(R.id.tv_padding);
// 设置该文本视图的内部文字与控件四周的间隔大小
tv_padding.setPadding(dip_10, dip_10, dip_10, dip_10);
颜色的概述
在Android中,颜色值由透明度alpha和RGB(红,绿,蓝)定义,有八位十六进制数与六位十六进制两种编码。如:FFEEDDCC ,FF为透明度,EE为红色的浓度,DD为绿色的浓度,CC为蓝色的浓度。
FF为完全透明,00为完全透明。RGB三种的数值越大也就越亮,数值越小越暗。
在MainActivity中调用
// 从布局文件中获取名叫tv_code_six的文本视图
TextView tv_code_six = findViewById(R.id.tv_code_six);
// 给文本视图tv_code_six设置背景为透明的绿色,透明就是看不到
tv_code_six.setBackgroundColor(0x00ff00);
// 从布局文件中获取名叫tv_code_eight的文本视图
TextView tv_code_eight = findViewById(R.id.tv_code_eight);
// 给文本视图tv_code_eight设置背景为不透明的绿色,即正常的绿色
tv_code_eight.setBackgroundColor(0xff00ff00);
系统给出的颜色常量
Color类的颜色类型 | 说明 | Color类的颜色类型 | 说明 |
---|---|---|---|
BLACK | 黑色 | GREEN | 绿色 |
DKGRAY | 深灰 | BLUE | 蓝色 |
LTGRAY | 浅灰 | YELLOW | 黄色 |
GRAY | 灰色 | CYAN | 青色 |
WHITE | 白色 | MAGENTA | 玫瑰红 |
RED | 红色 | TRANSPARENT | 透明 |
使用十六进制颜色编码
如:android:textColor="#000000";
setTextColor(0xff00ff00);
使用color.xml中定义颜色
res/values目录有color.xml文件可用“@color/常量名”
从代码获取为:
getResource().getColor(R.color.常量名);
写在最后:
此博客参考《Android Studio开发实战(第2版)》,是提炼出的知识点,挂一漏万,供诸君参考。