新建一个项目UIWidgetTest,简单起见,这里我们允许Android Studio自动创建活动,活动名和布局都使用默认值

TextView

TextView可以说是最简单的一种控件了,下面来说TextView的更多用法,修改activity_main.xml中的代码,代码如下所示

<?xml version="1.0" encoding="utf-8"?>    复制代码

android:layout_widthandroid:layout_height指定控件的宽度和高度,所有的控件都有这两个属性。

match_parent表示控件的大小和父布局的大小一样,即控件的大小由父布局来决定。

wrap_content表示控件的大小刚好能够包含里面的内容就可以了,即内容决定控件的大小

android:text 指定TextView显示的文本内容。

android:gravity 指定文字的对齐方式,可选值为top,bottom,left,right,center等,可以通过“|”来指定多个值,TextView中的文字默认左上角对齐,我们这里指定为center,相当于center_vertical|center_horizontal,即水平和垂直都居中对齐

android:textSizeandroid:textColor分别用来指定文字的大小和颜色,字体大小使用sp作为单位

运行程序,效果如下所示

 

 

当然TextView中还有很多属性,这里不一一介绍,用的时候再去查看文档

 

Button

Button是程序用于和用户进行交互的一个重要控件,它可配置的属性和TextView差不多,我们在activity_main.xml中加入Button

 

由于系统会对Button中的所有英文字母进行大写转换,可以用android:textAllCaps="false"来禁用这一特性。重新运行程序,效果如下所示

 

 

 

接下来我们在MainActivity对Button的点击事件注册一个监听器

public class MainActivity extends AppCompatActivity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //在此添加逻辑            }        });    }}复制代码

如果不喜欢用匿名类的方式注册监听器,可以使用实现接口的方式来注册监听器,代码如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.button);        button.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button://                    业务逻辑                break;            default:                break;        }    }}复制代码

EditText

EditText是程序和用户交互的另一个控件,它允许用户在控件里输入和编辑,并可以在程序中对这些内容进行处理。

我们在activity_main.xml添加EditText控件,代码如下所示

  复制代码

android:hint用于在输入框中显示一些提示性的文字

android:maxLength指定EditText最大行数,这里为两行,当输入的内容超过两行时,文本会继续向上滚动,而EditText则不会继续拉伸

我们还可以结合使用EditText和Button来完成一些功能,比如通过点击来Button来获取EditText中的输入的内容,修改MainActivity的代码如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText editText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.button);          editText = (EditText) findViewById(R.id.edit_text);        button.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button:                String text = editText.getText().toString();                Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();                break;            default:                break;        }    }}复制代码

重新运行程序,效果如下所示

 

 

 

ImageView

ImageView用于在界面上展示图片的控件

我们在res/drawable目录下添加两张图片

 

 

在activity_main.xml添加ImageView控件

 

 复制代码

android:src指定一张图片

我们可以通过程序代码来动态更新图片,修改MainActivity中的代码,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText editText;    private ImageView imageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.button);        editText = (EditText) findViewById(R.id.edit_text);        imageView = (ImageView) findViewById(R.id.image_view);        button.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button:                imageView.setImageResource(R.drawable.image_2);                break;            default:                break;        }    }}复制代码

通过ImageView的setImageResource()方法将显示的图片改成image_2.png,重新运行程序可以看到效果

 

 

 

ProgressBar

ProgressBar用于在程序中显示一个进度条,表示程序正在加载

在activity_main.xml中添加代码,如下所示

    复制代码

重新运行程序,会看到屏幕中会有一个圆形进度条正在旋转

 

 

 

android:visibility可用来指定控件的可见属性,所有的控件都有这个属性,可选值有3个:invisiblevisiblegone

visible 表示控件可见,是默认值。

invisible 表示控件不可见,但是它还占据着原来的位置和大小。

gone 表示不仅不可见,还不占用任何屏幕空间

我们还可以通过代码来设置控件的可见性,使用的是 setVisibility() 方法,可选参数有3个:View.VISIBLEView.GONEView.INVISIBLE

接下来我们来实现点击一下按钮让进度条消失,再点击一下让按钮出现这种效果,修改MainActivity中的代码,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText editText;    private ImageView imageView;    private ProgressBar progressBar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = (Button) findViewById(R.id.button);        editText = (EditText) findViewById(R.id.edit_text);        imageView = (ImageView) findViewById(R.id.image_view);        progressBar = (ProgressBar) findViewById(R.id.progress_bar);        button.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button:                imageView.setImageResource(R.drawable.image_2);                if (progressBar.getVisibility() == View.GONE) {                    progressBar.setVisibility(View.VISIBLE);                } else {                    progressBar.setVisibility(View.GONE);                }                break;            default:                break;        }    }}复制代码

通过getVisibility() 方法来判断ProgressBar是否可见,若可见则隐藏,若不可见则显示出来,重新运行程序,不断点击按钮,你会看到进度条会在显示和隐藏间来回切换

 

 

 

我们还可以通过style属性来设置ProgressBar不同的样式,下面我们来设置成水平进度条,修改activity_main.xml中的代码,如下所示

 复制代码

android:max给进度条设置一个最大值,然后代码中动态更改进度条的进度,修改MainActivity的代码,如下所示

   @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button://                动态更新进度条进度                int progress = progressBar.getProgress();                progress=progress+10;                progressBar.setProgress(progress);                break;            default:                break;        }    }复制代码

每点击一次按钮,就会先获取当前进度条的进度,然后在现有进度和基础上加10作为更新后的进度。重新运行程序,效果如下所示

 

 

 

AlertDialog

AlertDialog可以在当前页面弹出一个对话框,在所有界面元素之上,可以屏蔽掉界面其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要的内容或者警告信息。

下面我们来学习一下它的用法,修改MainActivity中的代码,如下所示

 @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button://                AlertDialog的学习                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);                dialog.setTitle("This is Title");                dialog.setMessage("This is Message");//                可否用Back键关闭对话框                dialog.setCancelable(false);//                设置确定按钮的点击事件                dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                    }                });//                设置取消按钮的点击事件                dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                    }                });//                将对话框显示出来                dialog.show();                break;            default:                break;        }    }复制代码

首先通过AlertDialog.Builder 创建一个 AlertDialog 实例,然后为这个对话框设置标题、内容、可否用Back键关闭对话框等属性,再调用setPositiveButton() 方法设置对话框确认按钮的点击事件,调用setNegativeButton() 方法设置对话框取消按按钮的点击事件,最后调用show() 方法将对话框显示出来

 

 

 

ProgressDialog

ProgressDialog 跟AlertDialog很类似,不同的是ProgressDialog对话框中会有一个进度条,表示当前操作比较耗时,让用户耐心等待

    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button://                ProgressDialog的学习                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);                progressDialog.setTitle("This is ProgressDialog");                progressDialog.setMessage("This is Message");                progressDialog.setCancelable(true);                progressDialog.show();                break;            default:                break;        }    }复制代码

 

 

 

内容参考自《第一行代码》

github代码

码云代码

个人网站:www.panbingwen.cn


转载自:https://juejin.im/post/5d7599db6fb9a06b2d77f903

更多相关文章

  1. 初学Android学到的关于LinearLayout的知识
  2. 说说 Android(安卓)的常见 UI 控件
  3. 【Android】让Python在Android系统上飞一会儿
  4. Android(安卓)常用UI控件的一些属性设置(在.xml文件里进行的设置
  5. Android控件布局常用属性
  6. Android(安卓)控件布局常用属性
  7. 布局指令大全
  8. Android(安卓)RelativeLayout 属性
  9. Android(安卓)studio 如何在android选项下生成jniLibs目录

随机推荐

  1. 4、输入、输出重定向、管道符、Vim编辑器
  2. 一言不合就改成 777 权限?会出人命的!
  3. 干货 | SQL如何学?分享5大免费学习资源
  4. 如何不再当分母?我告诉你一个方法
  5. 最新深度学习合集:GitHub趋势排行第一位,仅
  6. 爬虫速度太慢?来试试用异步协程提速吧!
  7. 来一家咖啡店的所见所想
  8. 对你没有看错!不到 10 行代码完成抖音热门
  9. Ansible 之 Inventory配置
  10. Java高并发编程,构建并发编程知识体系,提升