在某些情况下,可能需要你去通知用户发生在你应用中的事件,其中一些事件需要用户响应,有的则不需要。Android框架通过消息机制很好的完成上述的需求。
比如:
- 当一个事件完成时(比如保存文件),需要显示一个简短的消息来确认保存成功
- 假如应用正在后台运行,且需要用户注意,那么该应用需要创建一个通知以方便用户做出响应
- 假如用户要操作一个危险的操作,则应该创建一个对话框通知,再一次确认用户的操作
常见的消息提示方式有:
- Logcat(日志猫)
- Toast(瞬时提示)
- Dialog(对话框)
-Notification(通知)
这篇博客主要讲解 前面两种,后面两种将在以后会继续记录笔记
Logcat日志猫:
Logcat日志猫主要是调试的时候在IDE中查看相关信息。列如网络请求中需要打印确认是否请求到数据;还有在开发的过程中碰到什么异常或错误都可以打印在logcat中。
* logcat的级别 :v、d、i、w、e 级别由低往高
- verbose :混淆的 ,所有信息都可以输出,级别最低
- debug :调试级别
- info :信息级别
- warning:警告级别
- error :错误级别
* 添加过滤器 按照Tag进行过滤
* System.out.println()与Log输出之间的区别
- System.out.println()输出的信息 等级是info级别,标记tag:System.out
- System.out.print()输出信息 需要System.out.flush()刷缓存输出
-
Toast瞬时提示
Toast通知是一种浮现在屏幕上层的消息提醒,它只填充消息所需要的空间,而当前正在运行的活动仍然保持其自身的可见性和交互性。这种通知自动淡入淡出且不接受交互事件。
系统自带toast:Toast.makeText(context, type, time);
. 通过代码自定义Toast
- 代码实现
// 通过代码的形式自定义Toast
public void diyToast1(View v) {
// 声明一个Toast对象
Toast toast = new Toast(context);
// 构建布局对象
LinearLayout layout = new LinearLayout(context);
ViewGroup.LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
// 设置布局参数
layout.setLayoutParams(params);
// 设置线性布局的方向
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setBackgroundColor(Color.CYAN);
// 创建图像对象
ImageView image = new ImageView(context);
image.setImageResource(R.drawable.emoji_044);
// 向布局对象中添加图片视图控件
layout.addView(image);
// 构建文本视图控件
TextView message = new TextView(context);
message.setText("这是自定义Toast!");
message.setTextColor(Color.BLUE);
layout.addView(message);
// 在toast对象中设置View
toast.setView(layout);
// 设置持续时间
toast.setDuration(Toast.LENGTH_LONG);
// Gravity :显示的位置 ,xOffset:x方向偏移量 yOffset:y方向偏移量
toast.setGravity(Gravity.LEFT, 0, 0);
toast.show();}
*通过XML自定义Toast
LayoutInflate :把xml布局文件实例化为View对象
layoutInflater把XML布局文件实列化为view对象
Inflater方法:
好比打气筒的形式把布局文件实列化为view对象,返回的也是view类型的对象
1.Inflater(resource,root)
- resource:要实列化的xml布局文件的资源id。
- root:根节点,表示是否要把实列化的view添加到父控件中。
返回值:加入root不为空,表示有父控件,则返回父控件对象,假如root为空则返回的是实列化后的view对象(该对象为布局的顶层节点对象)
2.Inflater(resource,root,attachToRoot)
-resource:要实列化的xml布局文件的资源ID
-root:根节点,父控件
-attachToRoot:布尔值
-为真的情况,与Inflater(resource,root)相同
-为假的情况下,表示有父控件,但是该父控件不能够通过addView的方式添加子控件,它是通过adapter来装配子控件的,有该父控件,只用于影响子控件的布局参数。
// 通过xml文件自定义吐司
public void diyToast2(View v) {
// 定义Toast对象
Toast toast = new Toast(context);
// 布局填充器
/**
* 把布局xml文件进行实例化为对象,把布局的内容填充到View对象中 resource: 布局资源 root:父控件或者根节点
* inflate:打氣筒的形式把布局资源填充到View对象中,View对象具有层次性
*/
View view = LayoutInflater.from(context).inflate(R.layout.diy, null);
toast.setView(view);
// 设置持续时间
toast.setDuration(Toast.LENGTH_LONG);
// Gravity :显示的位置 ,xOffset:偏移量 yOffset:偏移量
toast.setGravity(Gravity.LEFT, 0, 0);
toast.show();
}
博客纯属个人爱好,如果又不对的地方,欢迎指出。谢谢