zoukankan      html  css  js  c++  java
  • 02-06Android学习进度报告六

        今天学习了关于Android开发中常用的两个知识,即对话框和悬浮框。

    首先我学习了对话框的基本使用流程

    • Step 1:创建AlertDialog.Builder对象;
    • Step 2:调用setIcon()设置图标,setTitle()setCustomTitle()设置标题;
    • Step 3:设置对话框的内容:setMessage()还有其他方法来指定显示的内容;
    • Step 4:调用setPositive/Negative/NeutralButton()设置:确定,取消,中立按钮;
    • Step 5:调用create()方法创建这个对象,再调用show()方法将对话框显示出来;

    实例代码如下:

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private Button btn_dialog_one;
        private Button btn_dialog_two;
        private Button btn_dialog_three;
        private Button btn_dialog_four;
    
        private Context mContext;
        private boolean[] checkItems;
    
        private AlertDialog alert = null;
        private AlertDialog.Builder builder = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext = MainActivity.this;
            bindView();
    
    
        }
    
        private void bindView() {
            btn_dialog_one = (Button) findViewById(R.id.btn_dialog_one);
            btn_dialog_two = (Button) findViewById(R.id.btn_dialog_two);
            btn_dialog_three = (Button) findViewById(R.id.btn_dialog_three);
            btn_dialog_four = (Button) findViewById(R.id.btn_dialog_four);
            btn_dialog_one.setOnClickListener(this);
            btn_dialog_two.setOnClickListener(this);
            btn_dialog_three.setOnClickListener(this);
            btn_dialog_four.setOnClickListener(this);
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                //普通对话框
                case R.id.btn_dialog_one:
                    alert = null;
                    builder = new AlertDialog.Builder(mContext);
                    alert = builder.setIcon(R.mipmap.ic_icon_fish)
                            .setTitle("系统提示:")
                            .setMessage("这是一个最普通的AlertDialog,
    带有三个按钮,分别是取消,中立和确定")
                            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(mContext, "你点击了取消按钮~", Toast.LENGTH_SHORT).show();
                                }
                            })
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(mContext, "你点击了确定按钮~", Toast.LENGTH_SHORT).show();
                                }
                            })
                            .setNeutralButton("中立", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(mContext, "你点击了中立按钮~", Toast.LENGTH_SHORT).show();
                                }
                            }).create();             //创建AlertDialog对象
                    alert.show();                    //显示对话框
                    break;
                //普通列表对话框
                case R.id.btn_dialog_two:
                    final String[] lesson = new String[]{"语文", "数学", "英语", "化学", "生物", "物理", "体育"};
                    alert = null;
                    builder = new AlertDialog.Builder(mContext);
                    alert = builder.setIcon(R.mipmap.ic_icon_fish)
                            .setTitle("选择你喜欢的课程")
                            .setItems(lesson, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(getApplicationContext(), "你选择了" + lesson[which], Toast.LENGTH_SHORT).show();
                                }
                            }).create();
                    alert.show();
                    break;
                //单选列表对话框
                case R.id.btn_dialog_three:
                    final String[] fruits = new String[]{"苹果", "雪梨", "香蕉", "葡萄", "西瓜"};
                    alert = null;
                    builder = new AlertDialog.Builder(mContext);
                    alert = builder.setIcon(R.mipmap.ic_icon_fish)
                            .setTitle("选择你喜欢的水果,只能选一个哦~")
                            .setSingleChoiceItems(fruits, 0, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(getApplicationContext(), "你选择了" + fruits[which], Toast.LENGTH_SHORT).show();
                                }
                            }).create();
                    alert.show();
                    break;
                //多选列表对话框
                case R.id.btn_dialog_four:
                    final String[] menu = new String[]{"水煮豆腐", "萝卜牛腩", "酱油鸡", "胡椒猪肚鸡"};
                    //定义一个用来记录个列表项状态的boolean数组
                    checkItems = new boolean[]{false, false, false, false};
                    alert = null;
                    builder = new AlertDialog.Builder(mContext);
                    alert = builder.setIcon(R.mipmap.ic_icon_fish)
                            .setMultiChoiceItems(menu, checkItems, new DialogInterface.OnMultiChoiceClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                    checkItems[which] = isChecked;
                                }
                            })
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    String result = "";
                                    for (int i = 0; i < checkItems.length; i++) {
                                        if (checkItems[i])
                                            result += menu[i] + " ";
                                    }
                                    Toast.makeText(getApplicationContext(), "客官你点了:" + result, Toast.LENGTH_SHORT).show();
                                }
                            })
                            .create();
                    alert.show();
                    break;
            }
        }
    }

    悬浮框的使用的集中常见的方法如下:

    • public PopupWindow (Context context)
    • public PopupWindow(View contentView, int width, int height)
    • public PopupWindow(View contentView)
    • public PopupWindow(View contentView, int width, int height, boolean focusable)

    实例代码如下:

    public class MainActivity extends AppCompatActivity {
    
        private Button btn_show;
        private Context mContext;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext = MainActivity.this;
            btn_show = (Button) findViewById(R.id.btn_show);
            btn_show.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    initPopWindow(v);
                }
            });
        }
    
    
        private void initPopWindow(View v) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.item_popup, null, false);
            Button btn_xixi = (Button) view.findViewById(R.id.btn_xixi);
            Button btn_hehe = (Button) view.findViewById(R.id.btn_hehe);
            //1.构造一个PopupWindow,参数依次是加载的View,宽高
            final PopupWindow popWindow = new PopupWindow(view,
                    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
    
            popWindow.setAnimationStyle(R.anim.anim_pop);  //设置加载动画
    
            //这些为了点击非PopupWindow区域,PopupWindow会消失的,如果没有下面的
            //代码的话,你会发现,当你把PopupWindow显示出来了,无论你按多少次后退键
            //PopupWindow并不会关闭,而且退不出程序,加上下述代码可以解决这个问题
            popWindow.setTouchable(true);
            popWindow.setTouchInterceptor(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    return false;
                    // 这里如果返回true的话,touch事件将被拦截
                    // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
                }
            });
            popWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));    //要为popWindow设置一个背景才有效
    
    
            //设置popupWindow显示的位置,参数依次是参照View,x轴的偏移量,y轴的偏移量
            popWindow.showAsDropDown(v, 50, 0);
    
            //设置popupWindow里的按钮的事件
            btn_xixi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "你点击了嘻嘻~", Toast.LENGTH_SHORT).show();
                }
            });
            btn_hehe.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "你点击了呵呵~", Toast.LENGTH_SHORT).show();
                    popWindow.dismiss();
                }
            });
        }
    }

    这就是今日学习的知识与内容。

  • 相关阅读:
    FlannBasedMatcher 立体匹配
    语义分割
    CNN
    grabcut 分割 Rect
    十六、scrapy_redis(分布式爬虫)
    证监会处罚公告爬取
    十四、认识scrapy的debug信息
    十三、scrapy的Item.py
    十二、scrapy中实现翻页请求
    爬取斗鱼房间的信息
  • 原文地址:https://www.cnblogs.com/yang2000/p/12321774.html
Copyright © 2011-2022 走看看