Toast
Toast.makeText(参数1,参数2,参数3).show();
- 参数1:上下文对象(Context)
- 参数2:显示的内容
- 参数3:显示的时间
- 改变Toast改变的位置
- Toast.setGravity(参数1,参数2,参数3)
- 参数1:显示的位置,Gravity内部有常量
- 参数2、3:显示位置上的偏移量 +-值都可以写
- Toast.setGravity(参数1,参数2,参数3)
- 自定义Toast
- 创建Toast
Toast toast = new Toast();
- 创建显示的View
- Java代码中创建菜单
- 使用Layout通过layoutInflater转换成View
- 把显示的View设置给Toast
toast.setView();
- Toast.show();
- 创建Toast
OptionMenu
- 手机中菜单按钮点击以后,程序弹出的菜单!还有一种情况!如果手机中没有菜单按钮!那么此菜单会在屏幕右上角显示三个点!点击以后会弹出菜单!
- 菜单显示的布局(菜单显示的样子)
- res-menu文件夹中
<item
android:id="@+id/action_add" //id
android:icon="@drawable/ic_launcher"
android:title="添加"/> //显示的文本内容
- res-menu文件夹中
- 创建菜单
- 重写onCreateOptionMenu()方法
- getMenuInflater(参数1,参数2);
- 参数1:R.menu.xxx,menu布局文件
- 参数2:menu
- 返回值:true表示显示菜单,false代表不显示菜单
- getMenuInflater(参数1,参数2);
- 动态添加
- 菜单的id
- 菜单的显示内容
menu.add(Menu.NONE, 205, Menu.NONE, "Java代码中添加的菜单");
- 重写onCreateOptionMenu()方法
- OptionsMenu的监听
- 在Activity中重写onOptionsItemSelected()
- MenuItem.getItemId()得到单条菜单的id,根据id进行区分!
- 在Activity中重写onOptionsItemSelected()
- 二级OptionsMenu
- 功能不具体化的时候使用
<item><menu></menu></item>
- 功能不具体化的时候使用
- 设置菜单图标
// 通过反射似的4.0以上的菜单可以设置菜单图标
private void setIconEnable(Menu menu, boolean enabled) {
try {
// 根据类名得到一个类对象
Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
// 得到这个类对象中的方法
Method method = clazz.getDeclaredMethod("setOptionalIconsVisible",boolean.class);
// 设置方法的访问性
method.setAccessible(true);
// 执行这个方法
method.invoke(menu, enabled);
} catch (Exception e) {
e.printStackTrace();
}
}
ContextMenu上下文菜单
- 手机中可以创建上下文菜单!创建以后长按会弹出上下文菜单!类似Windows中鼠标右键弹出的菜单!
- 作用范围:作用到具体的控件上!
- 步骤:
- 创建菜单布局
- 注册上下文菜单
- registerForContextMenu(textView);
- 创建菜单
- onCreateContextMenu
- 菜单监听
- onContextItemSelected
- 触发:每次长按注册的控件都会触发!
PopupMenu
- 弹出菜单,Android3.1(API12)出的
- 对比上下文菜单
- 共同点:
- 都需要绑定一个控!
- 不同点:
- 上下文菜单是长按触发
- PopupMenu是手动触发!调用show()触发!
- 共同点:
- 步骤:
- 创建菜单布局
- 创建PopupMenu
/**
*参数2: 在哪个控件下面显示
*/
//创建一个PopupMenu
PopupMenu popupMenu = new PopupMenu(this, view);
//设置菜单布局
getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());
- 创建监听事件
setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item)
});
- 菜单显示
popupMenu.show();
PopupWindow
- PopupWindow在开发中经常被使用!它可以用于菜单!它可以弹出你任何想弹出的视图!!!而且可以控制弹出的位置!以后也可以添加动画!
- 使用方法:
- 创建想要弹出的布局
- 创建PopupWindow
/*
*参数1: PopupWindow显示的样子 View
*参数2: 暂时先固定写这个
*/
popupWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
- 设置参数
//设置以后点击外部可以关闭
popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));
//设置点击外部 自动关闭
popupWindow.setFocusable(true);
//点击外部是否关闭
//ture 关闭
//false 不关闭
popupWindow.setOutsideTouchable(true);
- PopupWindow显示
/**
*参数1: 原始显示的视图
*参数2: 具体的位置
*xy : 偏移量
*/
popupWindow.showAtLocation(parent, gravity, x, y);
showAsDropDown() 在某控件下方显示
PopupWindow和PopupMenu的比较
- 共同点:都需要主动触发!调用显示方法才会触发!
- 不同点:
- 位置:
- PopupMenu显示在绑定控件的下方
- PopupWindow显示位置可以自定义
- 填充内容:
- PopupMenu显示内容来自res下menu中菜单布局
- PopupWindow会显示任何的View
- 位置:
Dialog
- 他是Android中的提示框,级别会高于Toast,他需要调用show()方法开启,并且不会主动关闭!需要调用关闭方法dismiss(),提示内容会多于Toast!
- 进度条Dialog
- ProgressDialog,重量级的提示,不仅提示,还可以进行交互,处理逻辑!
- 日期选择Dialog
- DatePickerDialog
- 时间选择Dialog
- 普通的Dialog
AlertDialog.Builder dialog = new AlertDialog.Builder(this)
- 自定义Dialog
- 创建一个AlertDialog对象,然后使用setView()、setMessage()、setTitle()等方法来自定义
- ListViewDialog
- ListViewDialog中间自带一个ListView,只需要设置Adapter即可