目录
1.通知的使用
通知在状态栏,锁屏画面显示我们发送的信息,提醒用户。通知用法比较灵活,可以在活动中创建,也可以在服务,广播接收器里创建。下面以在活动中创建为例,代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Notification.Builder builder = new Notification.Builder(this); //创建Builder对象
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); //创建通知管理
Intent intent = new Intent(this,FirstActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0); //点击通知后的意图
builder.setAutoCancel(true) //设置各种属性
.setContentIntent(pendingIntent)
.setContentTitle("通知")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText("7777777");
manager.notify(1,builder.build()); //发送通知
}
}
上面就是一个普通通知的用法。首先创建通知的Builder对象,通过Bulider对象设置各种属性,可以设置通知的标题,内容,点击事件的响应,通知的发送时间等。(小图标,内容,标题必须设置,否则会报错,其他属性为可选项)。PendingIntent表示点击通知后的响应,上面表示跳转到FirstActivity。如果在服务中创建,需调用PendingIntent.getService(),在广播接收器中需调用PendingIntent.getBroadcast()获取实例。第一个参数为Context,第二个参数为requestCode,一般传入0,第三个参数为Intent对象,表示我们的响应,第四个位标志位,确定PendingIntent的行为,具体看:https://blog.csdn.net/piglite/article/details/46581789
android8.0之后,上面的代码就不起作用了,他会提示你没有设置channel。所以,应该将代码进行修改:
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String channelID = "1";
String channelName = "channel_name";
NotificationChannel channel = new NotificationChannel(channelID, channelName, NotificationManager.IMPORTANCE_HIGH); //构建channel实例
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
Intent intent = new Intent(this,FirstActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
builder.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setContentTitle("通知")
.setSmallIcon(R.mipmap.ic_launcher)
.setChannelId(channelID) //设置id
.setContentText("7777777");
manager.createNotificationChannel(channel); //创造channel
manager.notify(1,builder.build());
}
}
上面是普通的通知用法,我们还可以自定义视图,设置更多的属性来丰富通知。
2.菜单的使用
菜单的使用比较简单。首先在res目录下先建一个menu文件夹,右键这个文件夹,选择新建Menu resourse file,输入文件名点击创建即可。在这个文件进行编写。如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/one"
android:title="one"/>
<item
android:id="@+id/two"
android:title="two"/>
<item
android:id="@+id/three"
android:title="three"/>
</menu>
添加了3个item,接着在菜单显示的活动中重写onCreateOptionsMenu()方法,如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
这样菜单就在活动中显示了,但还无法响应点击事件,还需重写onOptionsItemSelected()方法。如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.one:
Toast.makeText(this,"one",Toast.LENGTH_SHORT).show();
break;
case R.id.two:
Toast.makeText(this,"two",Toast.LENGTH_SHORT).show();
break;
case R.id.three:
Toast.makeText(this,"three",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
这样菜单项就可以响应点击事件了,点击一下弹出一条Toast。
3.AlertDialog的使用
AlertDialog可以在当前画面弹出一个对话框,一般用于提示非常重要的的内容,用法如下:
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("title"); //设置标题
alertDialog.setMessage("7777777"); //设置提示信息
alertDialog.setCancelable(false); //是否点击屏幕可取消
//确定按钮点击事件
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
//取消按钮点击事件
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show(); //显示