(011)吐司 菜单 对话框

今天给大家分享一下安卓开发中一些“有的没的”比如说:吐司 菜单 对话框。
一, 菜单 res/menu

1, 选项菜单 (系统菜单) OptionsMenu

当前Activity调用    一个Activity只能有一个系统菜单



1.1 创建方式:

    高版本的创建  在res/menu/ 中xml文件创建 Item项

    低版本的创建  纯java代码创建Item项

1.2  高版本创建的方式(xml的方式)

    step01:  在res/menu/****.xml  中,创建每个菜单项<item />

        <!--
        id        Menu中每个菜单项的Id
        orderIncategory   Menu中显示的顺序, 数字越小, 越在前面位置显示,如果相同,则按书写顺序显示
        showAsAction      设置Menu何时和怎样显示在Action Bar上
                  属性值:
                  never    永远都不会显示在ActionBar上
                  always     一直显示在ActionBar上
                  ifRoom     如果有空间则显示在ActionBar上

        title         设置菜单项显示的文本信息                      

        -->

    step02:  在java中 (Activity中)

          重写父类的方法:  onCreateOptionsMenu(Menu menu)  ---  系统菜单就可见

          重写父类的方法:  onOptionsItemSelected(MenuItem item) -- 系统菜单就可以检测选中的效果


1.3  低版本创建菜单

    //低版本的创建方式
    /**
     * groupId      分组Id
     * itemId       每个菜单项的Id 
     * order        排序
     * title        每个菜单项的文本信息
     */
    menu.add(menu.NONE, 1, menu.NONE, "java 代码创建的菜单");

    //带有子菜单的一级菜单
    SubMenu subMenu = menu.addSubMenu(menu.NONE, 2, menu.NONE, "sub 1");
    subMenu.add(menu.NONE, 21, 1, "sub 1-1");
    subMenu.add(menu.NONE, 20, 0, "sub 1-0");
    subMenu.add(menu.NONE, 22, 2, "sub 1-2");

2, 上下文菜单 ContextMenu

可以为每个View 指定上下文菜单, 长按View会创建上下文菜单

通常情况下, listView  和  GridView 指定上下文菜单

2.1  需要给View注册上下文菜单 

    registerForContextMenu(tv);

2.2  在res/menu  文件加载中  创建每个菜单项

2.3  在Activity中, 重写父类的方法: onCreateContextMenu()

    /**
     * 当用户长按View 时调用
     * 
     * ContextMenu menu          需要显示的上下文菜单 
     * View v            用户选择的View 
     * ContextMenuInfo menuInfo  所选择页面的额外信息(ListView GridView Spinner) 
     *               携带的是AdapterView 的position信息
     */
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {

        super.onCreateContextMenu(menu, v, menuInfo);

        // 显示菜单
        getMenuInflater().inflate(R.menu.main, menu);

        int position = ((AdapterContextMenuInfo)contextMenuInfo).position;
    }


2.4   在Activity中, 重写父类的方法: onContextItemSelected(MenuItem item)

    /**
     * 选择每个菜单项时调用
     * 
     * MenuItem item 用户当前选择的菜单项
     */
    @Override
    public boolean onContextItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.action_red:

            tv.setTextColor(Color.RED);

            break;
        }

        return super.onContextItemSelected(item);
    }

3, 弹出式菜单 PopupMenu API 11以上, 可以问任意View 添加弹出式菜单

//1, 得到弹出式菜单对象
    /**
     * context  上下文对象
     * anchor   当前弹出式菜单参考位置的UI控件
     */
    PopupMenu popupMenu = new PopupMenu(this, v);

    //2, 加载菜单
    //getMenu()   获得的是PopupMenu 自带的Menu对象
    getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());

    //3, 设置PopupMenu的监听器
    popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {

        //处理菜单项的选中事件
        @Override
        public boolean onMenuItemClick(MenuItem item) {

            switch (item.getItemId()) {
            case R.id.action_color:
                tv.setTextColor(Color.rgb((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256)));
                break;

            case R.id.action_size_30:
                tv.setTextSize(30);
                break;
            }


            return false;
        }
    });

    //4, 显示弹出式菜单
    popupMenu.show();

二, 对话框 Dialog

特点:

    1,  当前界面弹出的小窗口, 用于提示用户的重要信息, 并获得焦点

    2,  用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户, 如: 进度条,退出提示等

常用对话框包括4部分:

    图片区

    标题区

    内容区

    按钮区

分类:

    普通对话框       AlertDialog

    进度条对话框   ProgressDialog

    日期选择对话框   DatePickerDialog

    时间选择对话框   TimePickerDialog 

    自定义对话框


列表对话框:

    普通列表对话框

    builder.setItems(R.array.colors,new OnClickListener(){})

    单选列表对话框

    builder.setSingleChoiceItems(R.array.sizes,int checkId,new OnClickListener(){})

    多选列表对话框

    builder.setMultiChoiceItems(getResource().getStringArray(R.arrays.hobbys),boolean[] checkedItems,new onMultiChoiceClickListener(){})

    适配器列表对话框

    builder.setAdapter(adapter,new OnClickListener(){})

三,Toast

给用户进行提示 自身不阻塞线程 自己会过一小段时间自动消失

Toast的特点
>1,显示一段时间自动消失
>2,Toast 没有焦点没有监听
>3,不会对Ui线程造成阻塞

Toast.LENGTH_LONG:时间长  3.5s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值