老罗视频学习笔记。
通知有两种,一种是Toast Notification通知,一种是StatusNotification。
一.ToastNotification通知。
1)普通的Toast通知。
//第一种写法
//Toast.makeText(ToastNotificationActivity.this, "这是普通的Toast通知", Toast.LENGTH_SHORT).show();
//第二种写法
Toast toast = Toast.makeText(ToastNotificationActivity.this, "这是普通的Toast通知", Toast.LENGTH_SHORT);
toast.show();
第一个参数是传递上下文的context对象。第二个参数是通知的内容。第三个参数设置Toast显示的时间是长还是短。
2)可以设置Toast位置的通知。
Toast toast = Toast.makeText(ToastNotificationActivity.this, "这是可以设置位置的Toast通知", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
setGravity就是设置toast的位置,center为在正中心。
3)自定义一个Toast显示。
那么首先要自定义一个xml布局文件imagetoast.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textviewintoast"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="TextView" />
<ImageView
android:id="@+id/imageintoast"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="fill_parent"></ImageView>
</LinearLayout>
然后在java文件中定义一个布局对象来加载这个布局。
//定义一个Toast对象
Toast toast = new Toast(ToastNotificationActivity.this);
//定义一个view对象,加载imagetoast布局
View view = LayoutInflater.from(ToastNotificationActivity.this).inflate(R.layout.imagetoast, null);
//给imageView加载图片
ImageView imageView = (ImageView)view.findViewById(R.id.imageintoast);
imageView.setImageResource(R.drawable.tip);
//给textview设置字体
TextView textView = (TextView)view.findViewById(R.id.textviewintoast);
textView.setTextSize(20);
textView.setText("这个是自定义的toast哦");
//设置toast的位置
toast.setGravity(Gravity.CENTER, 0, 0);
//设置Toast显示的时间长短
toast.setDuration(Toast.LENGTH_SHORT);
//设置toast的布局
toast.setView(view);
toast.show();
特别要注意的是ImageView imageView = (ImageView)view.findViewById(R.id.imageintoast);这一句必须要写view.findViewById,否则会崩溃。因为通过控件的ID获取控件对象时,必须要先加载布局才可以获取,否则会崩溃。这段代码不和之前的代码那样,静态加载布局setContentView。