一、屏幕显示

1、像素

安卓支持的像素单位:

px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(与设备无关的显示单位)、dip(就是dp)、sp(用于设置字体大小);

安卓常用的三种像素单位:

px:手机屏幕上可显示的最小单位;

dp:按照屏幕尺寸计量,与物理设备无关;

sp:原理跟dp差不多,专用于设置字体大小;

 

2、颜色

概述:

安卓中的颜色由透明度alpha和RGB(红、绿、蓝)组成,有8位16进制或6位16进制组成;

例如(8位):FFEEDDCC,FF表示透明度,EE表示红色的浓度,DD表示绿色的浓度,CC表示蓝色的浓度;

6位16进制:

6位16进制颜色值是去掉透明度值的8位16进制的颜色值;

6位16进制透明度的两种情况:在xml中默认为不透明(透明度为FF),在代码中默认为全透明(透明度为00);

RGB三色:

数值越小颜色浓度越小越暗,数值越大颜色浓度越大越亮,亮到极致是白色,暗到极致是黑色;

在Android中使用颜色的3种方式:

①使用系统已经定义好的颜色常量;

Color.BLACK 黑色

Color.BLUE 蓝色

Color.CYAN 青绿色

Color.DKGRAY 灰黑色

Color.GRAY 灰色

Color.GREEN 绿色

Color.LTGRAY 浅灰色

Color.MAGENTA 红紫色

Color.RED 红色

Color.TRANSPARENT 透明

Color.WHITE 白色

Color.YELLOW 黄色

示例:

tv1.setTextColor(Color.GREEN);

②使用16进制颜色编码;

xml中示例:

//6位16进制
android:textColor="#FF0000"
//8位16进制
android:textColor="#FFFF0000"

代码中示例:

        //方法一,直接输入16进制颜色值
        tv1.setTextColor(0X666666);
        //方法二,6位16进制,不用,因为默认透明,用了等于不用
        tv1.setTextColor(Color.rgb(0XFF,0X55,0X44));
        //方法三,8位16进制,透明度、红绿蓝颜色浓度值
        tv1.setTextColor(Color.argb(0XFF,0XFF,0X55,0X44));

③使用colors.xml中定义的颜色;

xml中示例:

android:textColor="@color/colorPrimary"

代码中示例:

tv1.setTextColor(getResources().getColor(R.color.colorAccent));

 

3、屏幕分辨率

DisplayMetrics常用属性:

widthPixels:以px为单位计量的宽度值;

heightPixels:以px为单位计量的高度值;

density:像素密度,即一个dp单位包含多少个px单位;

获取当前屏幕宽度:

    //获取当前屏幕宽度:
    private int getScreenWidth(Context mContext) {
        WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        assert wm != null;
        wm.getDefaultDisplay().getMetrics(dm);
        return dm.widthPixels;
    }

获取当前屏幕高度:

    //获取当前屏幕高度:
    private int getScreenHeight(Context mContext) {
        WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        assert wm != null;
        wm.getDefaultDisplay().getMetrics(dm);
        return dm.heightPixels;
    }

获取当前屏幕像素密度:

 

    //获取当前屏幕像素密度
    private float getScreenDensity(Context mContext) {
        WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        assert wm != null;
        wm.getDefaultDisplay().getMetrics(dm);
        return dm.density;
    }

 

二、简单布局

1、视图View的基本属性

概述:

View是Android的基本视图,所有的空间和布局都是由View类直接或间接派生出来的,故所有View类的基本属性和方法是各控件和布局通用的

XML布局中常用的属性:

id:指定当前视图的id;

layout_width:指定当前视图的宽度,属性值可以是具体的dp数值,可以是match_parent(与上级视图一样宽),也可以是wrap_width(包裹当前视图的内容,若当前视图的内容超过了上级视图的宽度,则为上级视图的宽度,多出的内容滚动显示);

layout_height:指定当前视图的高度,属性值说明同宽度;

layout_margin:指定当前视图与周围视图之间的空白距离(包括上、下、左、右),另有layout_marginTop、layout_marginBottom、layout_marginLeft、layout_marginRight分别表示上下左右;

minWidth:指定该视图的最小宽度;

minHeight:指定该视图的最小高度;

background:指定该视图的背景,背景可以是颜色或图片;

layout_gravity:指定该视图与上级视图的对其方式,取值left、right、top、bottom、center_horizontal、center_vertical;

padding:指定该视图与内部内容的空白距离,另有paddingTop、paddingBottom、paddingLeft、paddingRight分别表示上下左右;

visibility:指定该视图的可是类型,visible:可见,默认;invisible,不可见,占位置;gone,不可见,不占位置;

代码中常用的设置视图的方法:

setLayoutParams:设置该视图的布局参数;

参数对象的构造函数可以设置视图的宽度和高度,其中LayoutParams.MATCH_PARENT表示与上级视图一样宽,LayoutParams.WRAP_CONTENT表示与内部内容一样宽,参数对象的setMargins方法可以设置该视图与周围视图之间的空白距离;

setMinWidth():设置该视图的最小宽度;

setMinHeight():设置该视图的最小高度;

setBackground():设置该视图的背景图片;

setBackgroundColor():设置该视图的背景颜色;

setBackgroundResource():设置该视图的背景资源ID;

setPadding():设置该视图的内边距;

setVisibility():设置该视图的可见类型;

Android视图分为两类:

布局:布局本质上是各容器,内部还可以再放子布局或者子控件;

控件:控件是一个单一的实体,已经是最后一次,其内不能再包含其他子控件或者子视图;

ViewGroup视图组:

所有布局视图类都是从ViewGroup派生而来的;

ViewGroup的三个方法(也是所有布局类视图共有的方法):

addView:往布局中添加一个视图;

removeView:从布局中删除指定视图;

removeAllViews:删除该布局下的所有视图;

 

2、线性布局LinearLayout

LinearLayout是最常用的布局;

LinearLayout除了继承了来自View/ViewGroup类的所有属性和方法外,其特有的属性和方法如下:

XML中特有的属性:

orientation:指定线性布局的方向,horizontal(默认)表示水平布局,vertical表示垂直布局;

gravity:指定布局内部视图与本线性布局的对齐方式;

layout_weight:指定当前视图在宽或高占上级线性布局的权重;

代码中特有的方法:

setOrientation:设置线性布局的方向,LinearLayout.HORIZONTAL表示水平布局,LinearLayout.VERTICAL表示水平布局;

setGravity:设置布局内部视图与本线性布局的对齐方式;

 

3、滚动布局ScrollView

垂直滚动视图:

ScrollView,layout_width要设置为wrap_content;

水平滚动视图:

HorizontalScrollView,layout_height要设置为wrap_content;

注意:

①滚动视图下必须有且仅有一个子布局节点,否则会报错;

②有时ScrollView实际内容不够,我们又想让他充满屏幕,将layout_height设置为match_parent是无效的,可以添加:

android:fillViewport="true"