Android高级控件

目录

ProgressBar 进度条

PopuoWindow 弹出框

如何加载一个view或者导入自定义的xml布局?

如何导入自定义布局?

Dialog 对话框 

普通对话框

列表对话框

单选对话框

多选对话框 

半自定义对话框

Spinner 下拉框 

静态下拉框

动态下拉框

ProgressBar 进度条

ProgressBar是Android中原生的进度条,分为环行进度条和圆形进度条,由style控制

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="30dp"
    tools:context=".MainActivity2">

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:layout_marginTop="30dp"
        android:id="@+id/progressBar2"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

PopuoWindow 弹出框

如何加载一个view或者导入自定义的xml布局?

1.首先创建弹出的文本框和内容

2.然后创建弹出框,设置弹出框的位置

3.设置点击其他地方可以收回弹出框

4.给按钮设置监听,如果用户点击了按钮就弹出文本框

        //创建弹出的文本
        TextView textView=new TextView(MainActivity3.this);
        textView.setText("弹出框内容");
        //创建弹出框
        PopupWindow popupWindow=new PopupWindow(textView,200,300);
        //点击其他地方收回弹出框
        popupWindow.setOutsideTouchable(true);
        //监听
        btn_test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //显示弹出窗
                popupWindow.showAsDropDown(btn_test);
            }
        });

如何导入自定义布局?

首先创建一个xml文件,文件里面写你想要弹出的内容

然后通过getLayoutInflater().inflate获取到你的xml文件转化成view

然后给控件添加监听,然后给弹出框设置显示按钮就好了;

 View popup_item = getLayoutInflater().inflate(R.layout.popup_item,null);
        PopupWindow popupWindow2=new PopupWindow(popup_item,400,300);
        popupWindow2.setOutsideTouchable(true);
        //设置背景图
        popupWindow2.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher_background));
        //获取控件监听
        btn_text2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                popupWindow2.showAsDropDown(btn_text2);
            }
        });

Dialog 对话框 

普通对话框

1.用户点击了按钮,触发监听。

2.创建对话框,显示在此页面

3.setTitle(创建标题)

4.setMessage(设置内容)

5.设置对话框的按钮

6.对话框.show()。让对话框显示出来.

        private View.OnClickListener btn_dialog_item1_click = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 显示对话框
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity4.this)
                        .setTitle("警告")
                        .setMessage("确定删除该条数据吗?")
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity4.this, "取消", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity4.this, "确定", Toast.LENGTH_SHORT).show();
                            }
                        });
                dialog.show();
            }
        };

列表对话框

1.用户点击了按钮,触发监听

2.创建数组,存内容

2.创建对话框,显示在此页面

3.setTitle(创建标题)

4.setItems(传数组,创建监听)

5.拿出用户的选择,显示在页面上

5.设置对话框的按钮

6.对话框.show()。让对话框显示出来.

        private View.OnClickListener btn_dialog_item2_click = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 显示列表对话框
                // 标题 内容(变为列表) 取消按钮 确定按钮
                String[] types = {"A照","B照","C照","D照"};

                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity4.this)
                        .setTitle("请选择你的驾照类别")
                        .setItems(types, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                choice = types[which];
                                Toast.makeText(MainActivity4.this, "你的驾照为:"+choice, Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });

                dialog.show();
            }
        };

单选对话框

单选列表对话框与列表对话框差不多是一样的,只是它是单选,跟列表的区别就是列表用的setItems 然后直接输出,而单选用的.setSingleChoiceItems把用户选择存进choice里面

        private View.OnClickListener btn_dialog_item3_click = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 弹出单选列表对话框
                String[] types = {"A照","B照","C照","D照"};
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity4.this)
                        .setTitle("你的驾照类别为")
                        .setSingleChoiceItems(types, 2, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                choice = types[which];
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity4.this, "你的驾照类别为:"+choice, Toast.LENGTH_SHORT).show();
                            }
                        });
                builder.show();
            }
        };

多选对话框 

多选用的是 setMultiChoiceItems,然后后面确定按钮把用户选中的值都存进choise里面然后显示

        private View.OnClickListener btn_dialog_item4_click = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 显示多选列表对话框
                String[] types = {"A照","B照","C照","D照"};
                boolean[] checkItems = {true, false, true, false};

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity4.this)
                        .setTitle("你的驾照类别是")
                        .setMultiChoiceItems(types, checkItems, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                checkItems[which] = isChecked;
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                choice = "";
                                for (int i = 0 ;i < checkItems.length; i++) {
                                    if (checkItems[i]) {
                                        choice = choice + types[i] + ",";
                                    }
                                }

                                Toast.makeText(MainActivity4.this, "你的驾照类别为:"+choice, Toast.LENGTH_SHORT).show();
                            }
                        });
                builder.show();
            }
        };

半自定义对话框

自定义对话框通过getLayoutInflater().inflate获取你创建的自定义的xml文件

然后通过setview()函数把试图传进去,然后在用户点击了确定之后做操作

        public View.OnClickListener btn_dialog_item5_click=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //显示半自定义对话框 做一个登录功能
                View view = getLayoutInflater().inflate(R.layout.dialog_login, null);
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity4.this)
                        .setTitle("登录")
                        .setView(view)
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                //取出用户输入的账号密码
                                EditText et_user = view.findViewById(R.id.et_user);
                                String user = et_user.getText().toString();
                                EditText et_pwd = view.findViewById(R.id.et_pwd);
                                String pwd = et_pwd.getText().toString();
                                Toast.makeText(MainActivity4.this, "你的账号是:" + user + "密码是" + pwd, Toast.LENGTH_SHORT).show();
                            }
                        });
                builder.show();
            }
        };

Spinner 下拉框 

下拉框分为静态下拉框和动态下拉框。

静态下拉框

1. 打开“res/values/strings.xml” 文件,定义将在Spinner(下拉列表)显示的项目列表。

<resources>
    <string name="app_name">Day5</string>
    <string name="depart_promt">静态下拉框</string>
    <string-array name="depary_arr">
        <item>chrome</item>
        <item>safari</item>
        <item>Edge</item>
        <item>firefox</item>
        <item>ie8</item>
    </string-array>
</resources>

2.然后打开你的布局文件,在entries里面名字(@array/下拉框名)

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/depart_promt"
        android:entries="@array/depary_arr"/>
        <Button
            android:id="@+id/btn_sp"
            android:text="取值"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

3.获取用户的选择(和按钮结合使用)

        //结合使用
        btn_sp = findViewById(R.id.btn_sp);
        spinner = findViewById(R.id.spinner);
        btn_sp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String chois = spinner.getSelectedItem().toString();
                Toast.makeText(MainActivity5.this, "你的选择是"+chois, Toast.LENGTH_SHORT).show();
            }
        });

动态下拉框

1.在布局文件中创建一个spinner

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

2.在Java代码中获取控件

        //根据id获取控件
        spinner1=findViewById(R.id.spinner1);

3.创建数组,存下拉框里面的值,创建适配器

    String[] areas={"北京","上海","天津","香港"};
        //创建适配器
        ArrayAdapter adapter=new ArrayAdapter(MainActivity5.this, android.R.layout.simple_spinner_item,areas);

4.给下拉框设置适配器,然后根据用户的选择显示

        //给下拉框设置适配器
        spinner1.setAdapter(adapter);
        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                String choice = areas[i];
                Toast.makeText(MainActivity5.this, "你的选择是"+choice, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值