一:view

 

Android中每个控件父类都是一个view,view代表屏幕上的一块空白区域,具体显示什么内容交个具体的控件显示,

比如这块区域处理文本内容的view就用控件TextView

二:控件通用属性

Android之UI基础控件_android

Android之UI基础控件_android_02

三:基础控件

处理文本的view——TextView

相当java中Swing包中的JLabel,但是功能更加强大,支持文本处理、支持html代码、文本样式处理、链接效果等,除了上面的通用的属性外,还有以下属性

android:text="@string/app_name"//内容
android:textColor="#fff"//文本颜色
android:textSize="30sp"//文本大小
android:lineSpacingMultiplier="2"//行倍距
android:lineSpacingExtra="20sp"//行距
android:singleLine="true"//单行显示
android:ellipsize="end"//三点省略位置
android:focusable="true"//设置焦点
android:focusableInTouchMode="true"//设置触摸时可获取焦点
android:marqueeRepeatLimit="marquee_forever"//设置跑马灯

被点击的view——Button

对于按钮主要是如何注册点击事件,方法有以下四种

自定义内部类

<Button
android:id="@+id/login_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"/>
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//获取按钮
Button login_btn =findViewById(R.id.login_btn);
//按钮login_btn被点击时候的事件,使用自定义内部类实现
login_btnListener login_btnListener = new login_btnListener();
login_btn.setOnClickListener(login_btnListener) ;//注册事件监听器
}
//自定义一个内部类实现点击事件接口
class login_btnListener implements View.OnClickListener{

@Override
public void onClick(View v) {
Log.e("tag","点击了login_btn按钮戳发了自定义事件");
}
}
}

匿名内部类

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Button login_btn =findViewById(R.id.login_btn);
login_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("tag","点击了login_btn按钮戳发了自定义事件");
}
});
}
}

当前Activity去实现事件接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener{//实现了点击事件接口

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Button login_btn =findViewById(R.id.login_btn);
login_btn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
Log.e("tag","点击了login_btn按钮戳发了自定义事件");
}
}

在布局文件中添加点击事件属性

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="loginClik"
android:text="登录"/>
public class MainActivity extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

}

public void loginClik(View v) {//定义xml中绑定的方法
Log.e("tag","点击了login_btn按钮戳发了自定义事件");
}
}

处理图片的view——ImageView

用来现实和控制图像的控件,可以对他进行放大缩小旋转等,常见属性:

android:src="@mipmap/login"//指定前景资源名称

接收用户信息输入的View——EditText

用于输入文本内容的输入框,常用属性

android:inputType="textPassword"//文本框类型如number、text...
android:hint="请输入密码"//文本框默认内容
android:maxLength="12"//设置文本长度

进度条类的view——ProgressBar

默认的进度条是一个没有刻度、圆形、只是一个不断旋转的动画效果,通过设置style可以显示水平带有刻度的进度条

style="?android:attr/progressBarStyleHorizontal"//设置滚动条样式,这里progressBarStyleHorizontal是水平
android:progress="30"//设置进度值
android:max="200"//设置进度条最大值 默认100
android:indeterminate="true"//设置一直滚动

如何实现滚动条加载,这个相对于xml而言,在java代码中实现比较容易

我们定义带有id的一个滚动条

<ProgressBar
android:id="@+id/myProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
/>
public class MainActivity extends AppCompatActivity{//实现了点击事件接口

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final ProgressBar progressBar = findViewById(R.id.myProgress);
//Android4.o之后不能在线程中直接操作控件 但是进度条是个特列
new Thread(){
@Override
public void run(){
for (int i = 0; i < 100; i++) {
progressBar.setProgress(i);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}