控件View 屏幕上空白区域
UI基础控件,复杂的效果
- 处理文本内容的View(TextView)
- 被点击的View (Button)
- 处理图片内容的View(ImageView)
- 接收用户信息输入的View(EditText)
- 进度条类的View(ProgressBar)
控件通用属性以及属性值
layout_width // 设置控件大小
layout_height
// match_parent 填充整个父容器
// wrap_content 根据所含内容确定
// 正整数单位dp 精确大小
id
// @id/valName 使用已存在的id
// @+id/valName 添加新的id
layout_margin
// 正整数单位do 相邻空间或边缘的距离
padding
// 控件内容据控件边缘的距离
background
// 十六进制颜色值 颜色作为背景
// @mipmap/resourceId 图片作为背景
layout_gravity // 偏向 相对父容器
gravity // 自己内容
// center_horizontal 水平居中
// center_vertical 垂直居中
// center 水平居中
// left 居左
// right 居右
// top 居顶
// bottom 居底
visibility // 可见性
// visible 可见状态
// invisible 不可见状态,但保留控件位置
// gone 不可见状态也不保留位置
所有控件都继承于View
TextView
View->TextView
TextView->button
TextView->EditText
TextView类似于Swing 中JLabel,能完成的效果:对长文本进行显示处理、支持Html代码、内容有样式链接效果
<!--
android:textSize="44sp" 设置字体大小
android:textColor="#00ffff" 设置字体颜色
android:lineSpacingMultiplier="2" 设置几倍行距
android:lineSpacingExtra="15sp" 行间距 间距倍距 二选一
-->
长文本处理 TextView
- 滚动条效果ScrollView 带滚动条界面,注意滚动条只能放入一个直接子控件
- 单行显示省略部分 singleLine=“true” elliosize=“start” 设置省略号位置
- 跑马灯效果显示:
android:singleLine="true" 设置单行
android:focusable="true" 获取屏幕焦点
android:ellipsize="marquee" 设置省略号位置
android:focusableInTouchMode="true" 触摸获取屏幕焦点
android:marqueeRepeatLimit="marquee_forever" 跑马灯时长
EditText 输入框
android:inputType="number" 输入类型 textPassword 密码 phone 手机号
android:hint="输入内容提示" 输入提示
android:maxLength="11" 输入长度限制
对输入框中文本进行操作
public void mylogin(View v){
// 1. 判姓名密码是否为空
EditText number1 = findViewById(R.id.number1);
EditText possword1 = findViewById(R.id.possword1);
final ProgressBar progress = findViewById(R.id.progress);
String num = number1.getText().toString();
String pwd = possword1.getText().toString();
// 2. 为空则提示
if(num.equals("")||pwd.equals("")){
//无焦点提示
// 参数1:环境上下文
Toast.makeText(this,"姓名或密码不能为空",Toast.LENGTH_SHORT).show();
}
}
Button 可点击按钮
注册点击时间的方法
- 自定义内部类 按钮执行相似
- 匿名内部类 简单使用
- 当前Activity去实现事件接口
- 在布局文件中添加点击事件属性 在xml 文件中绑定
自定义内部类
- 获取按钮id
Button btn1 = findViewById(R.id.btn1);
- 为按钮注册监听事件
btn1.setOnClickListener(mc1);
- 定义内部类,自定义回调方法
package com.example.test_app;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.service.autofill.OnClickAction;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class ButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
// 1. 获取按钮
Button btn1 = findViewById(R.id.btn1);
// 点击事件被点击时触发的事件
//View.OnClickListener
MyClickListener mc1 = new MyClickListener();
btn1.setOnClickListener(mc1); // 2. 点击事件监听器 为按钮注册
}
class MyClickListener implements View.OnClickListener{
@Override
public void onClick(View view){
// 回调方法
Log.e("TAG","刚刚点击的按钮注册了内部类监听器对象的按钮");
}
}
}
匿名内部类
// 使用于有唯一操作的按钮
Button btn2 = findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("TAG","匿名内部类");
}
});
用本类实现事件
public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{...}
// 注册时传入this
在xml 中直接绑定
常用此方法完成绑定,并且可以为一个界面上的按钮提供统一处理即绑定到同一个事件,通过id 进行事件区分
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="在xml文件中绑定"
android:onClick="myClick"/>
public void myClick(View v){
// 在xml 中直接绑定 v 点的谁传的谁
switch(v.getId()){
case R.Id.btn:
Log.e("TAG","在xml中直接绑定");
break;
}
}
ImageView 图片控件
用来显示和控制图像的控件,可以对它进行放大,缩小,旋转等操作
常有属性:
- src 指定图片资源,指定前景图片资源,背景只是视觉效果于容器相关
- background 背景要适配控件大小
图片是一种资源
两个文件夹都是存放图片
mipmap mipmap图片处理技术缩放效果更好
drawable
引用资源@开头
资源文件名命英文字母、数字、下划线 数字不能开头,英文全部小写
图片设置宽高
ImageButton
按钮图,但是没有文字属性
ProgressBar 进度条
进度条默认情况时原型,没有刻度,只是一个不断旋转的动画效果,通过设置style,可以显示传统水平带刻度的进度条
属性:style 设置风格 progress 设置进度 max 进度条最大值 indeterminate 是否一直滚动
实现递增效果
final ProgressBar progress = findViewById(R.id.progress);
//progress.setProgress(80);
// android 4.0 之后不能直接在线程中直接操作控件,否则程序会直接崩溃,进度条时特例
new Thread(){
@Override
public void run(){
for(int i = 0 ; i <= 100 ; i ++){
progress.setProgress(i);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
ProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"/>
CHeckBox
- 系统封装的复选控件
- 两种状态:选中及未选中
- 监听状态变化:setOnCheckdCHangeListener
RadioButton
单选控件
可以和RadioGroup一起使用,只能选中一个
和CheckBox
- 通过点击无法变为选中
- 一组RadioButton 只能同时选中一个
- 在大部分UI框架中默认大以圆形表示
ToggleButto
- 切换两种程序状态
- setOnCheckedChangeListener
SeekBar
- 在音乐播放等领域使用
- 事件监听
setProgress
setOnSeekBarChangeListener