Android开发之基本控件和详解

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动。给控件添加事件也有接口回调和委托代理的方式。今天这篇博客就总结一下Android中常用的基本控件以及布局方式。说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局。而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式。先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio。开始今天的正题, 虽然Android的控件和布局方式都可以拖拽实现,今天为了更详细的了解控件和布局,我们就用纯代码的形式来进行实现和介绍。

一、常用基本控件

1.TextView

看到Android中的TextView, 我不禁的想到了iOS开发中的UILabel。从字面意思上看,TextView就是文本视图,只是用来显示文字的。在iOS中就叫做标签,即为UILabel。要想在Activity中显示TextView, 我们需要在相应的布局文件,也就是Activity对应的layout.xml文件去添加相应的控件标签。这些xml标签可以确定控件的位置,大小,颜色等属性。下方是在Activity中显示一个TextView。布局代码如下:

<TextView
            android:id="@+id/name_text_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="30sp"
            android:textColor="#be0e0a"
            android:text="My name is ZeluLi"/>

标签代表着我们要在Activity中添加一个个TextView, 标签中可以设置一些属性。

  1. android:id属性代表着TextView的Id,也就是TextView的唯一标示,在java代码中我们可以通过findViewById()方法来通过Id获取控件。上述控件的唯一id为name_text_view。

  2. android:layout_width属性代表着控件的宽度,该属性的值是match_parent, 表示该控件的宽度与父视图的宽度相同。

  3. android:layout_height属性代表着控件的高度,该属性的值是wrap_content,表示控件的高度根据内容的高度进行改变。

  4. .android:gravity属性代表着TextView中文字对齐方式,有多种方式,我们在此选的是center,居中显示。

  5. .android:textSize属性代表着TextView中文字的型号,也就是文字的大小。

  6. android:textColor属性设置的是TextView中文字的颜色,属性值是16进制的色值。

  7. android:text属性就是用来设置TextView显示的值的。

我们如何在Java类,也就是Activity中获取上述控件呢,下方的代码就是使用findViewById()方法通过id获取上述控件,并获取TextView中的值以及设置TextView中的值。具体代码如下。

 TextView myTextView = (TextView) findViewById(R.id.name_text_view);
        String myText = myTextView.getText().toString();
        myTextView.setText(myText+"  Add");

经过上面的属性的设置,运行工程,你会在Activity中看到如下效果:
image.png

2.Button

在Android中的按钮就叫Button, 而在iOS中则叫UIButton。其两者的用法极为相似。还是和上面类似,我们需要在Activity对应的布局文件layout.xml中添加一个Button, 具体的xml代码如下所示。标签就是代表着Button, 其中的属性和属性值就不做过多的赘述了,上面已经提到了。

 <Button
            android:id="@+id/click_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="点我"/>

在Activity的类中也是使用findViewById来通过Id获取该按钮,获取按钮后我们需要给按钮绑定点击事件。也就是点击按钮要做的事情,下方给出了两中方式,一种是块的形式,一种是委托代理的形式。

(1).接口回调的形式绑定点击事件

Button button = (Button) findViewById(R.id.click_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击按钮要做的事情
            }
        });

(2)委托代理

button.setOnClickListener(this);

//重写委托回调的方法
    /**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.click_button:
                //点击按钮后要做的事情
                break;
            default:
                break;
        }
    }

经过上面的步骤就会在TextView下面添加了一个按钮,运行效果如下所示
image.png

3.EditText

接下来要为Activity添加一个输入框,在Android中输入框的类型和标签都是EditText。iOS中的输入框就是UITextField了,其实两者用法类似,其功能都是接收用户输入的数据的。下方是其xml布局方式.

<EditText
            android:id="@+id/edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="placeHoder: type something here"
            android:maxLines="3"/>

上方EditText标签中比之前多了两个属性:

(1).android:hint属性后边是一个字符串,其实就是用来占位用的字符串,功能是提示用户该输入框是干嘛的,在iOS开发中叫做Placeholder。

(2).android:macLines 用来设置输入框的最大行数。

在Activity中获取EditText对象,也是通过Id方式,下方代码是获取通过id实例化EditText对象,并获取其中的文本在Toast上显示。

 EditText myEditText = (EditText) findViewById(R.id.edit_text);
                String inputText = myEditText.getText().toString();
                Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();

输入框如下所示:

image.png
image.png

4.AlterDialog(警告框)

Toast用来显示提示内容,而AlterDialog是警告框,上面可以有一些控件,比如按钮等。AlterDialog其实就是iOS中的AlterView(在iOS8后有增加了UIAlterController)。下面的代码是初始化AlterDialog并且进行显示的代码,下方的代码是放在点击按钮所触发的方法当中。

(1)AlterDialog通过AlterDialog的Builder进行创建,在创建的时候会指定该AlterDialog在那个Activity上进行显示。

(2)通过setTitle方法给AlterDialog设置标题,通过setMessage给AlterDialog设置内容。

(3)setCancelable()方法,我们在这儿设置的时false,表示弹出的AlterDialog在用户点击返回键是不消失,该值默认是true。

(4)setPositiveButton()方法是设置点击“确定”按钮时的事件, setNegativeButton是设置点击“取消”按钮的事件。通过Toast来展示事件的点击。

AlertDialog.Builder alterDialog = new AlertDialog.Builder(MainActivity.this);
                alterDialog.setTitle("提示框");
                alterDialog.setMessage("提示内容");
                alterDialog.setCancelable(false);
                alterDialog.setPositiveButton("好的", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "好的", Toast.LENGTH_SHORT).show();
                    }
                });
                alterDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    }
                });
                alterDialog.show();

下面就是上面AlterDialog显示后的效果。
image.png

5.ProgressBar(进度条)

进度条,就是平时下载东西常见到表示下载进度的控件。ProgressBar和iOS中的UIProgressView类似,用法也是非常类似的。首先需要在Activity对应的Xml文件中对ProgressBar进行布局和样式的设定。下方是ProgressBar的布局和样式。

<ProgressBar
            android:id="@+id/my_progress_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="?android:attr/progressBarStyleHorizontal"
            android:max="200"/>

我们可以通过android:max来设定ProgressBar的进度最大值,而style可以给ProgressBar设定不同的样式。ProgressBar有多种样式,可以根据不同的场景来选择不同的样式,下方是可选样式。

image.png

在xml中配置好ProgressBar之后就可以在代码中通过ID获取,对ProgressBar进行一系列的操作了。下方的代码也是放在按钮的点击事件中,每点击一次进度条的进度就增加10,直到增到最大值时ProgressBar就会变成不可见。变为不可见后,接着就会把进度设置成0。

ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.my_progress_bar);
                myProgressBar.setProgress(myProgressBar.getProgress()+10);

                if (myProgressBar.getProgress() == myProgressBar.getMax()) {
                    myProgressBar.setVisibility(View.GONE);
                    myProgressBar.setProgress(0);
                } else {
                    myProgressBar.setVisibility(View.VISIBLE);
                }

6.ProgressDialog(进度提示框)

ProgressDialog说白了就是在AlterDialog上添加Progress, ProgressDialog不需要在xml中进行配置,直接在代码中进行生成即可。下方是在按钮点击的委托代理方法中添加的ProgressDialog,点击按钮时就显示ProgressDialog。

/**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.click_button:

                ProgressDialog myProgressDialog = new ProgressDialog(MainActivity.this);
                myProgressDialog.setTitle("ProgressDialog");
                myProgressDialog.setMessage("Loading……");
                myProgressDialog.setCancelable(true);
                myProgressDialog.show();

                break;
            default:
                break;
        }
    }

运行效果如下:
image.png

最后,给大家推荐一个Android移动互联网1007478004不管你在地球哪个方位
不管你参加工作几年都欢迎你的入驻!(群内会定期免费提供一些群主收藏的免费学习书籍资料以及整理好的面试题和答案文档!)

猜你喜欢

转载自blog.csdn.net/weixin_43733729/article/details/89645521