Android 简单控件

qiang.zhang大约 5 分钟

Android 简单控件

文本控件

1.文本定义

不推荐在XML 文件中直接写字符串,应该使用来自@string的字符串,将字符串定义在专用的位置下:

// res/values/strings.xml
<resources>
    <string name="app_name">app name</string>
    <string name="hello">你好,世界</string>
</resources>

2.文本的大小

常见的字号单位主要有px、dp、sp

  • px px是手机屏幕的最小显示单位,像素密度越高,以px计量的分辨率就越大

  • dp 有时也写作dip,与设备无关的显示单位,只与屏幕的尺寸有关,同样尺寸的屏幕以dp计量的分辨率是相同的

  • sp 原理和dp 类似,但它专用来设置字体的大小,也是官方推荐的字号单位,设置普通字体,dp与sp 无任何差别,设置大字体,sp将会比dp 大,dp没有任何变化

3.文本颜色

文本颜色或者背景分别引用于@color @drable,均在res/路径下定义

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#6200EE</color>
    <color name="colorPrimaryDark">#3700B3</color>
    <color name="colorAccent">#03DAC5</color>
</resources>

xml无法直接引用color类的颜色常量,所以在android中有一套规范的编码标准,色值由透明度和RGB三原色联合定义 该标准又分为6位十六进制和8位16进制两种表达方式 在8位16进制中:FFEEDDCC FF 代表透明度,表示完全不透明,如果是00就代表全透明,EE表示红色,DD 表示绿色的浓度,CC表示蓝色的浓度 在6位16进制中:0x00ff00 它在XML文件中默认不透明,在代码中默认透明

视图基础

视图属性

分为宽高,对应属性的是layout_width layout_height 1.match_parent 表示与上级视图保持一致 2.wrap_parent 表示与内容自适应 3.以dp为单位的具体尺寸 在代码中修改宽高属性:

// 获取名叫tv_code的文本视图
TextView tv_code = findViewById(R.id.tv_code);
// 获取tv_code的布局参数(含宽度和高度)
ViewGroup.LayoutParams params = tv_code.getLayoutParams();
// 修改布局参数中的宽度数值,注意默认px单位,需要把dp数值转成px数值
params.width = Utils.dip2px(this, 300);
tv_code.setLayoutParams(params); // 设置tv_code的布局参数


//Utils.java 
 // 根据手机的分辨率从 dp 的单位 转成为 px(像素)
    public static int dip2px(Context context, float dpValue) {
        // 获取当前手机的像素密度(1个dp对应几个px)
        float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f); // 四舍五入取整
    }

    // 根据手机的分辨率从 px(像素) 的单位 转成为 dp
    public static int px2dip(Context context, float pxValue) {
        // 获取当前手机的像素密度(1个dp对应几个px)
        float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f); // 四舍五入取整
    }

视图中的间距

与web 前端一样,有外边距,也有内边距,layout_margin,layout_padding,上下左右也可以单独设置

视图的对齐方式

layout_gravity 可以指定当前视图相对于上级视图的对齐方向,下面举个例子

layout_gravity ="top|left"  // 左上

gravity 是指定内部内容的组件也就是下级视图的对齐方向,用法一样

线性布局 & 相对布局

LinearLayout 线性布局顾名思义,按照线性的分布进行布局,比较重要的属性有:

orientation="horizontal" // 指定下级布局的排列方向为横排,也可以设置为竖排

layout_weight="1" // 权重,指定当前布局在上级布局中所占比的权重,按照这个权重值进行划分在布局中的位置

RelativeLayout 相对布局顾名思义,好比物理当中学的参考对象,我们站在本地不动,把地球作为参考对象,我们是处于不动的状态,把月球作为参考对象,实际上我们还是在动的

被包含在相对布局的第一级组件,有一系列的相对上级布局的属性,上下左右,居中、居顶部、居底部等均拥有,英文意思非常好理解,直译即可

  在垂直中间
  android:layout_centerVertical="true" 

  跟上级左边对齐
   android:layout_alignParentLeft="true"

   ···还有很多,就不举列子了

网格布局 & 滚动视图

GridLayout 网格布局,就是跟网格一样

android:columnCount="2"  // 几列
android:rowCount="2"  // 几行

滚动视图:

//ScrollView 垂直方向滚动
android:layout_width="match_parent"
android:layout_height="wrap_content"
//HorizontalScrollView 水平方向滚动
android:layout_width="wrap_content"
android:layout_height="200dp"

按钮触控

Button

可以设置指定位置的图片:

android:drawableLeft="@drawable/ic_about"
android:drawableRight="@drawable/ic_about"
android:drawableTop="@drawable/ic_about"
android:drawableBottom="@drawable/ic_about"

基本属性


设置是否把字符转换成大写
android:textAllCaps="false"

设置按钮是否能被点击
android:enabled="false"

// 从布局文件中获取名叫btn_click_single的按钮控件
Button btn_click_single = findViewById(R.id.btn_click_single);
// 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法
// 实现 View.OnClickListener 接口
btn_click_single.setOnClickListener(new MyOnClickListener());

// 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法

// 实现 View.OnLongClickListener 接口
btn_longclick_single.setOnLongClickListener(new MyOnLongClickListener());

图像视图 & 图像按钮

ImageView 可以使用以下两种方式去设置图片的资源,scaleType 属性,当图片资源与空间大小不符合的时候,默认采取的缩放方式

缩放类型效果
CENTER保持原始的尺寸,并在视图居中
FIT_CENTER保持宽高比例,缩放图片使其位于视图中间
CENTER_CROP缩放图片使其充满视图,并位于视图中间
CENTER_INSIDE保持宽高比例,缩小图片使之位于视图中间(只缩小不放大)
FIT_XY缩放图片使其正好填满视图(图片可能被缩放变形)
FIT_START保持宽高比例,缩放图片使其位于视图上方或左侧
FIT_END保持宽高比例,缩放图片使其位于视图下方或右侧

iv_scale.setImageResource(R.drawable.apple);
// 设置缩放的方式
iv_scale.setScaleType(ImageView.ScaleType.CENTER);

 android:src="@drawable/apple"
 // 设置缩放的方式
 android:scaleType="center"

ImageButton

ImageButton 继承至ImageView,所以拥有所有ImageView 的方法与参数 它也拥有button的点击事件和长按事件,它们之间也包含一些差异:

  1. Button 既可以显示图片(通过setBackgroundResource), 也可以显示文字,ImageButton 只能显示图片
  2. ImageButton 图片可以按照比例缩放,Button通过设置背景的图像会拉伸变形
  3. ImageButton 有前景图和背景图,Button 只有背景图
Loading...