Android 开发学习笔记(一)——Android-像素与颜色 -详解

像素的概述

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版)》,是提炼出的知识点,挂一漏万,供诸君参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值