Penjelasan terperinci tentang Pemberitahuan (pemberitahuan bar status)


Pengenalan kepada bahagian ini:

Bahagian ini membawakan kawalan yang digunakan untuk memaparkan maklumat pemberitahuan dalam bar status dalam Android: Pemberitahuan, saya percaya kebanyakannya Sesiapa yang mempelajari Android sudah biasa dengannya dan banyak tutorial tentang menggunakan Pemberitahuan di Internet adalah berdasarkan 2.x, dan Pada masa kini, peranti Android biasa pada dasarnya adalah 4.x atau lebih tinggi, malah 5.0 atau lebih tinggi; Mereka semua berbeza! Bahagian ini akan menerangkan kepada anda Pemberitahuan berdasarkan 4.x dan ke atas, dan Pemberitahuan berdasarkan 5.0 dan ke atas Kami akan menerangkannya dalam bab ciri baharu Android 5.0 dalam tutorial lanjutan~

Beberapa pengenalan kepada Pemberitahuan daripada dokumen rasmi:

Idea reka bentuk: Pemberitahuan dalam Android 4.4 dan Lebih Rendah

Terjemahan: Pemberitahuan

Dokumen API: Pemberitahuan

Anda mungkin memerlukan tangga untuk mengakses laman web di atas~


1 Tafsiran bahagian dokumen reka bentuk


1) Reka letak asas Pemberitahuan

1.png

Elemen konstituen di atas ialah:

  • Ikon/Foto: Ikon besar
  • Tajuk/Nama: Tajuk
  • Mesej: Maklumat kandungan
  • Timestamp: Masa pemberitahuan, lalai ialah masa apabila sistem menghantar pemberitahuan, ia juga boleh ditetapkan oleh setWhen()
  • Ikon Kedua: ikon kecil
  • teks kandungan, teks di sebelah kiri ikon kecil

2) Reka letak lanjutan

Dalam Jelly Bean anda boleh memberikan lebih banyak butiran acara untuk pemberitahuan. Anda boleh memaparkan beberapa baris pertama mesej atau pratonton imej dengan memanjangkan reka letak. Ini membolehkan pengguna melihat lebih banyak kandungan - kadangkala malah keseluruhan mesej. Pengguna boleh mencubit-zum atau meluncur dengan dua jari untuk membuka susun atur lanjutan. Android menyediakan dua susun atur lanjutan (teks dan imej) untuk satu mesej untuk anda gunakan semasa membangunkan aplikasi.

2.png

3.png

Mengenai perkara reka bentuk lain, saya tidak akan menyebutnya satu persatu Jika anda berminat, semak dokumentasi API yang disediakan di atas tahu Pemberitahuan ini boleh diubah dalam versi 4.x dan ke atas! Apa yang kita lebih beri perhatian ialah Bagaimana untuk menulis kod untuk menggunakan perkara ini? Mari belajar cara menggunakan Pemberitahuan!


2. Proses penggunaan asas Pemberitahuan

Bar pemberitahuan status terutamanya melibatkan 2 kelas: Pemberitahuan danPengurus Pemberitahuan

Pemberitahuan : kelas maklumat pemberitahuan, yang sepadan dengan setiap atribut bar pemberitahuan

Pengurus Pemberitahuan: ialah kelas pengurusan pemberitahuan bar status, bertanggungjawab untuk menghantar pemberitahuan, mengosongkan pemberitahuan dan operasi lain .

Proses asas yang digunakan:

  • Langkah 1. Dapatkan objek NotificationManager: NotificationManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • Langkah 2. Buat kelas pembinaan Builder untuk bar pemberitahuan: Notification.Builder mBuilder = Notification.Builder baharu(ini);
  • Langkah 3. Buat tetapan yang berkaitan untuk Builder, seperti tajuk, kandungan, ikon, tindakan, dsb.!
  • Langkah 4.Kaedah Call Build() Builder untuk memberikan nilai kepada pemberitahuan
  • Langkah 5 Kaedah notify() Call NotificationManager untuk dihantar pemberitahuan!
  • PS:Selain itu, kami juga boleh memanggil kaedah cancel() NotificationManager untuk membatalkan pemberitahuan

3 beberapa kaedah berkaitan:

Pemberitahuan.Pembina mBuilder = Pemberitahuan.Pembina baharu(ini);

dan kemudian panggil kaedah berkaitan berikut untuk ditetapkan: (Dokumen API rasmi: Pemberitahuan.Pembina ) Kaedah yang biasa digunakan adalah seperti berikut:

  • setContentTitle(CharSequence): Tetapkan tajuk
  • setContentText(CharSequence): Tetapkan kandungan
  • setSubText (CharSequence): Tetapkan baris kecil teks di bawah kandungan
  • setTicker(CharSequence): Tetapkan maklumat teks yang dipaparkan di bahagian atas apabila menerima pemberitahuan
  • setWhen(long): Tetapkan masa pemberitahuan Secara amnya, tetapan ialah System.currentTimeMillis()
  • setSmallIcon(int): Tetapkan ikon kecil di bahagian bawah. sudut kanan apabila pemberitahuan diterima. Ikon kecil ini juga akan dipaparkan di bahagian atas apabila menerima pemberitahuan
  • setLargeIcon(Bitmap): Tetapkan ikon besar di sebelah kiri
  • setAutoCancel(boolean ): Sama ada pemberitahuan akan dibatalkan selepas pengguna mengklik panel Pemberitahuan (tidak dibatalkan secara lalai)
  • setDefaults(int): cara paling mudah untuk menambah kesan bunyi, denyar dan getaran pada pemberitahuan. Menggunakan atribut lalai, anda boleh menggabungkan berbilang atribut,
    Pemberitahuan.DEFAULT_VIBRATE (tambah peringatan getaran lalai); ;
    Pemberitahuan.DEFAULT_LIGHTS(Tambah peringatan cahaya tiga warna lalai)
    Pemberitahuan.DEFAULT_ALL(Tambah lalai kesemua 3 peringatan di atas)
    setVibrate
  • (long[]): Tetapkan mod getaran, contohnya:
  • setVibrate(panjang baru[] {0,300,500,700}); Kemudian bergetar selama 700ms Penggunaan Vibrate akan diterangkan kemudian!
    setLights
  • (int argb, int onMs, int offMs): Tetapkan lampu tiga warna, parameternya ialah: warna terang, Tempoh cahaya dan masa gelap tidak tersedia untuk semua warna Ini bergantung pada peranti Sesetengah telefon bimbit tidak mempunyai lampu tiga warna. Selain itu, anda perlu menetapkan bendera untuk Pemberitahuan kepada Pemberitahuan.FLAG_SHOW_LIGHTS untuk menyokong peringatan cahaya tiga warna!
  • setSound
  • (Uri): Tetapkan nada dering apabila menerima pemberitahuan Anda boleh menggunakan sistem atau tetapkan sendiri Contohnya adalah seperti berikut:

    .setDefaults(Notification .DEFAULT_SOUND ) //Dapatkan nada dering lalai .setSound(Uri.parse("file:///sdcard/xx/xx.mp3")) //Dapatkan nada dering tersuai .setSound(Uri.withAppendedPath (Audio. Media.INTERNAL_CONTENT_URI, "5")) //Dapatkan nada dering dalam pustaka multimedia Android


  • setOngoing
  • (boolean): Tetapkan kepada benar, menunjukkan bahawa ia adalah pemberitahuan berterusan. Mereka biasanya digunakan untuk menyatakan Tugas latar belakang di mana pengguna terlibat secara aktif (seperti memainkan muzik) atau sedang menunggu dalam beberapa cara dan oleh itu menduduki peranti (seperti muat turun fail, Operasi segerak, sambungan rangkaian aktif)

  • setProgress(int,int,boolean): Tetapkan pemberitahuan dengan bar kemajuan Parameternya ialah: nilai maksimum bar kemajuan, kemajuan semasa dan sama ada kemajuan itu tidak pasti Jika ia adalah bar kemajuan yang disahkan: panggil setProgress(maks, kemajuan, palsu) untuk menetapkan pemberitahuan, Apabila mengemas kini kemajuan, mulakan pemberitahuan untuk mengemas kini kemajuan di sini dan alih keluar bar kemajuan selepas muat turun selesai. , hanya dengan memanggil setProgress(0, 0, false). Jika ia adalah bar kemajuan yang tidak tentu (berterusan aktif), Ini menunjukkan bahawa aktiviti diteruskan apabila kemajuan pemprosesan tidak dapat diketahui dengan tepat, jadi setProgress(0, 0, true) dipanggil , apabila operasi tamat, panggil setProgress(0, 0, false) dan kemas kini pemberitahuan untuk mengalih keluar bar penunjuk
  • setContentIntent(PendingIntent): PendingIntent dan Intent sedikit berbeza , ia Anda boleh menetapkan bilangan pelaksanaan, Ia digunakan terutamanya untuk komunikasi perkhidmatan jauh, penggera, pemberitahuan, pelancar dan mesej teks Ia jarang digunakan secara umum. Sebagai contoh, lulus di sini Menunggu bermula Aktiviti: getActivity(Konteks, int, Niat, int), sudah tentu anda juga boleh memulakan Perkhidmatan atau Siaran Pengecam bit PendingIntent (parameter keempat):
    FLAG_ONE_SHOT bermakna PendingIntent yang dikembalikan hanya boleh dilaksanakan sekali dan akan dibatalkan secara automatik selepas pelaksanaan
    FLAG_NO_CREATE bermakna bahawa jika yang diterangkan Jika PendingIntent tidak wujud, PendingIntent yang sepadan tidak akan dibuat sebaliknya, NULL
    FLAG_CANCEL_CURRENT akan dikembalikan, menunjukkan bahawa PendingIntent yang sepadan sudah wujud, kemudian batalkan yang pertama, dan kemudian buat PendingIntent baharu. Ini sesuai untuk memastikan data dikemas kini dan boleh digunakan dalam senario komunikasi untuk pemesejan segera
    FLAG_UPDATE_CURRENT mewakili PendingIntent
    yang dikemas kini Contoh penggunaan:

    rreee


  • setPriority(int): Tetapkan keutamaan:

    优先级用户
    MAX重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。
    HIGH高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的。
    DEFAULT默认优先级用于没有特殊优先级分类的通知。
    LOW低优先级可以通知用户但又不是很紧急的事件。
    MIN用于后台消息 (例如天气或者位置信息)。最低优先级通知将只在状态栏显示图标,只有用户下拉通知抽屉才能看到内容。
    Atribut yang sepadan: Pemberitahuan.PRIORITY_HIGH...

4 Contoh kod: Pemberitahuan yang paling biasa:

Mari tulis contoh paling mudah di bawah Alami penggunaan Pemberitahuan:

Menjalankan pemaparan :

4.gif

Kod kunci :

Siarkan kod daripada MainActivity.java terus di sini:

MainActivity Kelas Awam Kelas Awam memperluaskan appcompatactivity implements view.onclickListener {
context swasta mcontext; > Final static swasta Int NotifyId_1 = 1;

butang peribadi btn_show_normal;
butang peribadi btn_close_normal; >         super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
        图/木场        LargeBitmap = BitmapFactory.decodeResource(getResources( ), R.mipmap.iv_lc_icon);
        mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        bindView();
<🎜 ><🎜 >
   void bindView() {
        btn_show_normal = (Button) findViewById(R.id.btn_show_normal);
        btn_close_normal = (Button) findViewById(R.id.btn_show_normal);
        btn_close_normal = (Button) findViewById(R.id.btn_show_normal); _normal.setOnClickListener(this);
        btn_close_normal. setOnClickListener(this);
    }


    @Override
    public void onClick(Lihat v) {
        suis (v.   ID                                                                                                                                                 .btn_show_normal:
                //定义一个PendingIntent点击Pemberitahuan后启动一个Aktiviti
        =                                                                                               .class);
                PendingIntent pit = PendingIntent.getActivity(mContext, 0, it, 0 );

chen ") // tajuk
.setContentText (" Saya mempunyai seratus cara untuk membuat anda tidak dapat tinggal ~ ") // kandungan
.setSubtext (" - ingat nama saya ye liangchen ") // perenggan pendek teks di bawah kandungan
.setticker ("menerima mesej yang dihantar oleh ye liangchen ~"). .DEFAULT_VIBRATE)​//Tetapkan lampu dan penggetar tiga warna lalai
.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.biaobiao)) //Tetapkan bunyi gesaan tersuai
.setAutoCancel(true) //Set Cancel Pemberitahuan
selepas mengklik .setContentIntent(pit);                mNManager.notify(NOTIFYID_1, notify1); > case R.id.btn_close_normal:
//Selain membatalkan Pemberitahuan berdasarkan ID, anda juga boleh memanggil cancelAll() ; :


Baiklah, bahagian ini memperkenalkan Pemberitahuan dalam 4. Penggunaan asas versi Penyelidikan~ By the way, sebahagian daripada bahagian ini merujuk kepada blog berikut, siarkan pautan, anda juga boleh membacanya: Kajian menyeluruh penyepaduan bar pemberitahuan Android Pemberitahuan (DEMO membolehkan anda memahami sepenuhnya) Ia ditulis dalam agak terperinci~ Itu sahaja untuk bahagian ini, terima kasih~