美文网首页
Android开发之基本控件和详解

Android开发之基本控件和详解

作者: Android高级工程师 | 来源:发表于2019-04-27 21:48 被阅读0次

    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"/>
    

    标签<TextView/>代表着我们要在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, 其中的属性和属性值就不做过多的赘述了,上面已经提到了。

     <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开发之基本控件和详解

          本文链接:https://www.haomeiwen.com/subject/dvulnqtx.html