序
今天主要写安卓常用的一些控件,TextView,Button,EditText,ImageView,ProgressBar,AlertDialog,ProgressDialog。
新建项目UIDemo
TextView 显示文字
activity_main.xml如下
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World!"android:gravity="center"android:textSize="24dp"android:textColor="#00ff00"
/>
LinearLayout>
LinearLayout是一种线性布局方式,后面在详细说明。
android:id给当前控件定义了一个唯一标识符,android:layout_width和android:layout_height指定了控件的宽度和高度。宽度和高度可选值有match_parent和wrap_content,match_parent是当前控件的大小和父布局的大小一样。wrap_content表示让当前控件的大小能够刚好包含住里面的内容。
android:text 控件显示的文字。
android:gravity="center"表示水平和垂直都居中。
android:textSize文字大小,android:textColor文字颜色。
运行效果如下
Button 按钮
xml 如下
<Buttonandroid:id="@+id/butten"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Butten"android:textAllCaps="false"
/>
android:textAllCaps 系统会对Button中的所有英文字母自动进行大写转换,设置false就可以禁用这个属性。
在MainActivity代码中添加按钮监听,代码如下
package com.datayang.uidemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button butten = findViewById(R.id.butten);
butten.setOnClickListener(this);
}
//MainActivity 实现View.OnClickListener
//可以把onClick写在外面
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
Toast.makeText(MainActivity.this,"单击了:",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
执行如下
EditText 输入框
xml如下
<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="提示信息"android:maxLines="2"
/>
android:maxLines限制最多2行,超过会向上滚动。
结合按钮把填写的信息弹出,MainActivity代码如下
package com.datayang.uidemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText editText;//text框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit_text);
Button butten = findViewById(R.id.butten);
butten.setOnClickListener(this);
}
//MainActivity 实现View.OnClickListener
//可以把onClick写在外面
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
String inputText = editText.getText().toString();
Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
执行结果如下
ImageView 图片
先在项目res目录下新建一个drawable-xhdpi,然后放两张图片,命名为,img_1和img_2.xml如下
<ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/img_1"
/>
我们可以利用按钮,来切换图片,MainActivity代码如下
package com.datayang.uidemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button butten = findViewById(R.id.butten);
butten.setOnClickListener(this);
imageView = findViewById(R.id.image_view);
}
//MainActivity 实现View.OnClickListener
//可以把onClick写在外面
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
imageView.setImageResource(R.drawable.img_2);
break;
default:
break;
}
}
}
执行结果如下
ProgressBar 加载显示
xml如下
<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"
/>
点击按钮,让加载消失,代码如下
package com.datayang.uidemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ProgressBar progressBar;//进度条
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button butten = findViewById(R.id.butten);
butten.setOnClickListener(this);
progressBar = findViewById(R.id.progress_bar);
}
//MainActivity 实现View.OnClickListener
//可以把onClick写在外面
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
//让进度条消失,可选值
//visible表示控件是可见的,这个值是默认值
//invisible表示控件不可见,但是它仍然占据着原来的位置和大小
//gone则表示控件不可见,不再占用任何屏幕空间
if(progressBar.getVisibility()==View.GONE){
progressBar.setVisibility(View.VISIBLE);
}else{
progressBar.setVisibility(View.GONE);
}
break;
default:
break;
}
}
}
执行显示如下
还有一种长的加载框,xml如下
<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:max="100"
/>
点击按钮使加载变长,代码改造如下
package com.datayang.uidemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ProgressBar progressBar;//进度条
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button butten = findViewById(R.id.butten);
butten.setOnClickListener(this);
progressBar = findViewById(R.id.progress_bar);
}
//MainActivity 实现View.OnClickListener
//可以把onClick写在外面
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
//控制进度
int progress = progressBar.getProgress();
progress = progress+10;
progressBar.setProgress(progress);
break;
default:
break;
}
}
}
执行显示如下
AlertDialog 弹出对话框
MainActivity 代码改造,主要改造是点击按钮处如下
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("这是个提示框?");
dialog.setMessage("信息信息信息");
dialog.setCancelable(false);
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.show();
break;
default:
break;
}
}
执行结果,如下
ProgressDialog 加载弹出框
也是MainActivity 代码改造,同样也是按钮点击处,代码如下
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.butten:
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("这是加载框");
progressDialog.setMessage("加载...");
//setCancelable 传入false,不能通过back键取消,当数据加载完成后
//必须要调用ProgressDialog的dismiss方法,否者ProgressDialog一直存在
progressDialog.setCancelable(true);
progressDialog.show();
break;
default:
break;
}
}
执行结果如下
好了,暂时就介绍到这