一、使用Toast顯示消息提示框
步驟:
1、創建Toast對象,調用構造方法(new Toast(context))或調用方法makText()方法(顯示內容和持續的時間)。
2、是遏制消息提示的樣式,對齊方式,頁邊距等。
3、調用show()方法顯示提示框。
二、使用AlertDialog實現對話框
在退出或其它需要再次確認的操作時,彈出對話框,樣式如下:
實例:顯示普通對話框,列表對話框,單選對話框和多選對話框。
主要代碼如下。
package com.example.alertdialog; import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button btn1 = findViewById(R.id.btn1), btn2 = findViewById(R.id.btn2), btn3 = findViewById(R.id.btn3), btn4 = findViewById(R.id.btn4); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();//創建AlertDialog對象 alertDialog.setIcon(R.drawable.bell);//設置圖標 alertDialog.setTitle("喬布斯:");//設置標題 alertDialog.setMessage("活着就是為了改變世界,難道還有其他原因嗎?");//設置內容 alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE/*取消按鈕*/, "否", new DialogInterface.OnClickListener() { @Override //為添加的取消按鈕設置監聽器 public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"否",Toast.LENGTH_SHORT).show(); } }); alertDialog.setButton(DialogInterface.BUTTON_POSITIVE/*確定按鈕*/, "是", new DialogInterface.OnClickListener() { @Override //為添加的確定按鈕設置監聽器 public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"是",Toast.LENGTH_SHORT).show(); } }); alertDialog.show();//顯示 } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //帶4個列表項的對話框 final String[] items = new String[]{"1", "2", "3", "4"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//創建對象 builder.setIcon(R.drawable.bell); builder.setTitle("選擇:"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"你選擇了:"+items[which],Toast.LENGTH_SHORT).show(); } });//添加列表項 builder.create().show();//創建並顯示對話框 } }); btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //帶單選列表項的對話框 final String[] items = new String[]{"1","2","3"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.bell); builder.setTitle("選擇"); builder.setSingleChoiceItems(items, 0/*默認選中第一個*/, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"你選擇了:"+items[which],Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("確定",null); builder.create().show(); } }); btn4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //帶多選列表項的對話框 final boolean[] checkedItems = new boolean[]{false,true,false,true,false};//記錄各個選項是否被選中 final String[] items = new String[]{"1","2","3","4","5"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.bell); builder.setTitle("選擇"); builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkedItems[which] = isChecked;//改變被操作列表項的狀態 } }); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String result = "";//記錄結果的字符串 for(int i=0;i<checkedItems.length;i++){ if(checkedItems[i]){ result+=items[i]+"、";//把列表項的內容加到result中 } } if(!"".equals(result)){ Toast.makeText(MainActivity.this,"你選擇了:"+result,Toast.LENGTH_SHORT).show(); } } }); builder.create().show(); } }); } }
三、使用Notification發送通知
主要表示在狀態欄上顯示的時間,電量等,還有通知圖標,從頂部下滑可以查看詳情。
使用Notification顯示通知的步驟
1、獲取系統的NotificationManager服務,調用getSystemService()方法。
2、創建Notification對象。
3、為Notification對象設置屬性。
4、發送Notification通知,調用NotificationManager的notify()方法。
代碼實現:
package com.example.notification; import androidx.appcompat.app.AppCompatActivity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; public class MainActivity extends AppCompatActivity { final int NOTIFYID = 0x123;//通知ID @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //創建並發送通知 NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//獲取通知管理器 Notification.Builder notification = new Notification.Builder(MainActivity.this);//創建通知對象 notification.setAutoCancel(true);//設置通知打開后自動消失 notification.setSmallIcon(R.drawable.bell);//設置通知圖標 notification.setContentTitle("獎勵百萬紅包!!!!");//設置通知內容標題 notification.setContentTitle("點擊查看詳情!");//設置通知內容 notification.setWhen(System.currentTimeMillis());//計時發送 notification.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE);//設置聲音和震動 //創建一個啟動詳細頁面的intent對象 Intent intent = new Intent(MainActivity.this,DetailActivity.class); PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);//稍晚觸發的intent機制,也就是說在我們查看通知的詳細內容后再觸發intent notification.setContentIntent(pi);//設置通知欄點擊跳轉 notificationManager.notify(NOTIFYID,notification.build());//發送通知 } }
四、使用BroadcastReceiver(廣播接收器)
在Android中,用intent攜帶的數據代表發送一條廣播,然后通過注冊BroadcastReceiver來接收廣播。
廣播沒有自己的表現形式,可以用通知、對話框和消息提示框等展示出來。
五、使用AlarmManager設置鬧鍾
實例:
1、在main.xml中設置布局文件,主要是添加時間選擇器和確認按鈕。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TimePicker android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:text="設置鬧鍾"/> </RelativeLayout>
2、在MainActivity中設置鬧鍾。
package com.example.alarm; import androidx.appcompat.app.AppCompatActivity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TimePicker; import android.widget.Toast; import java.util.Calendar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TimePicker timePicker = findViewById(R.id.time); timePicker.setIs24HourView(true);//設置24小時制 Button button =findViewById(R.id.set); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //設置鬧鍾 Intent intent = new Intent(MainActivity.this,AlarmActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0);//獲取顯示鬧鍾的PendingIntent對象 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);//獲取對象 Calendar calendar = Calendar.getInstance();//獲取日歷對象 calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());//設置小時數 calendar.set(Calendar.MINUTE,timePicker.getCurrentMinute());//分鍾數 calendar.set(Calendar.SECOND,0);//設置開始的秒數,0秒 alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);//設置了鬧鍾 Toast.makeText(MainActivity.this,"設置鬧鍾成功",Toast.LENGTH_SHORT).show(); } }); } }
其中在 alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent) 中,第一個參數代表鬧鍾類型,具體屬性值如下:
3、設置調轉的AlarmActivity
package com.example.alarm; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; public class AlarmActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("傳遞正能量:"); alertDialog.setMessage("要么出眾,要么出局。"); alertDialog.setIcon(R.mipmap.bell); alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(AlarmActivity.this,MainActivity.class); startActivity(intent); } }); alertDialog.show(); } }
便可實現,到達時間時,彈出消息提示框。