Mekanisme pemprosesan acara berasaskan pendengaran


Pengenalan kepada bahagian ini:

Dalam Bab 2, kami sedang mempelajari kawalan UI Android Kami boleh menggunakan kawalan ini untuk membentuk antara muka yang cantik, tetapi ia hanyalah antara muka seterusnya langkah Sudah tiba masanya untuk mula mempelajari logik dan pelaksanaan perniagaan Bab ini menerangkan mekanisme pemprosesan acara Android. Apakah mekanisme pengendalian acara? Berikan satu contoh Contoh mudah, seperti mengklik butang, kami menghantar permintaan log masuk ke pelayan! Sudah tentu, terdapat lebih daripada sekadar mekanisme pemprosesan acara seperti ini dalam Android. Sebagai contoh, apabila pemilihan berlaku pada skrin, kami mengklik pada kawasan tertentu pada skrin... Ringkasnya, mekanisme pemprosesan acara ialah apabila kami berinteraksi dengan UI, kami hanya menambah beberapa tindakan kecil di belakang tabir. ! Dalam bahagian ini kami akan memperkenalkan yang paling kerap digunakan: mekanisme pemprosesan acara berdasarkan pendengaran!


1. Model mekanisme pemprosesan masa berdasarkan pemantauan:

Gambar rajah model proses:

1.jpg

Penerangan teks:

Mekanisme pemantauan acara terdiri daripada sumber acara, acara, Pendengar acara terdiri daripada tiga jenis objek Aliran pemprosesan adalah seperti berikut:Langkah 1:Tetapkan pendengar untuk sumber peristiwa (komponen) untuk memantau operasi penggunaLangkah 2:Operasi pengguna mencetuskan pemantauan sumber acara Langkah 3:Janakan objek acara yang sepadanLangkah 4:Lepaskan objek sumber acara ini sebagai parameter kepada pendengar acaralangkah 5:Pasangan pendengar acara Objek acara ialah dinilai dan pemproses acara yang sepadan (kaedah pemprosesan acara yang sepadan) dilaksanakan

Ringkasan:

Mekanisme mendengar acara ialah mekanisme pemprosesan acara yang Diwakilkan , pemprosesan acara sumber (komponen) acara diwakilkan kepada pendengar acara Apabila peristiwa tertentu berlaku dalam sumber acara, pendengar peristiwa yang ditentukan akan dimaklumkan dan operasi yang sepadan dilakukan


2 Lima borang penggunaan yang berbeza:

Kami menggunakan berikut : Program yang menggesa maklumat Toast dengan hanya mengklik butang Gunakan lima bentuk berbeza untuk mencapainya!

Rendering:

2.png


1) Gunakan kelas dalaman tanpa nama secara langsung

Yang paling biasa digunakan: terus setXxxListener dan kemudian tulis semula kaedah di dalam; Biasanya ia digunakan sekali buat sementara waktu dan kebolehgunaan semula tidak tinggi!

Kod pelaksanaan adalah seperti berikut: MainActivity.java:

pakej com.jay.example.innerlisten;    
    
import android.os.Bundle;    
import android.view.View;    
import android.view.View.OnClickListener;    
import android.widget.Button;    
import android.widget.Toast;    
import android.app.Aktiviti;    
    
    
kelas awam MainActivity melanjutkan Aktiviti {    
    pribadi Butang btnshow;    
        
    @Override    
    dilindungi void onCreate(Bundle savedInstanceState) {    
        super.onCreate);(saved InstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
         btnshow.setOnClickListener(new OnClickListener() {    
            //重写点击事件的处击事件的处击事件的处理是 < 法 @Override    
             public void onClick(Lihat v) {    
                //显示Toast信息    
                Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();      <        <                             });    
    }        
}


2) Menggunakan kelas dalaman

adalah berbeza daripada kelas dalaman tanpa nama di atas! Kelebihan penggunaan: Ia boleh digunakan semula dalam kelas ini dan boleh terus mengakses semua komponen antara muka kelas luaran!

Kod pelaksanaan adalah seperti berikut: MainActivity.java:

pakej com.jay.example.innerlisten; import android. os.Bundle;
import android.view.View;
import android.view.OnClickListener; >
Aktiviti Utama kelas awam melanjutkan Aktiviti {
Butang peribadi btnshow;
@Override
dilindungi void onCreate(B undle savedInstanceState) {
super.onCreate (savedContentView(R> set
); .layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow
//Memperbaharui secara langsung objek kelas dalam sebagai parameter
btnshow .setOnClickListener(BtnClickListener()); 🎜> @Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Butang telah diklik", Toast.LENGTH_SHORT).show();
}


3) Gunakan kelas luaran:

adalah untuk mencipta fail Java lain untuk mengendalikan acara. Kerana kelas luaran tidak boleh mengakses antara muka pengguna secara langsung Komponen dalam kelas mesti dihantar melalui kaedah pembinaan;

ps: Untuk menunjukkan lulus parameter, TextView digunakan di sini dan bukannya gesaan Toast!

3.png

Kod pelaksanaan adalah seperti berikut: MyClick.java:

pakej com.jay.example.innerlisten;

import android.view.View;
import android.view.View.OnClickListener;
public MyClick(TextView txt)
{
textshow = txt;
}
@Override
public void onClick(View v) {
//Tetapkan teks yang dipaparkan dalam kotak teks selepas mengklik
textshow.setText("Butang telah diklik!");
} }
}

MainActivity.java

pakej com.jay.example.innerlisten;    
import android.os.Bundle;    
import android.widget.Button;    
import android.widget.TextView;    
import android.app.Aktiviti;    
    
    
kelas awam MainActivity melanjutkan Aktiviti {    
    pribadi Butang btnshow;    
    peribadi TextView txtshow;    
    @Override    
    dilindungi void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
        txtshow = (TextView) findViewById(R.id.textshow);    
        //直接new一个外部类,并把TextView作为参数传入    
       ( btnshow.setOnClick Listen)    
    }         
}

4) Gunakan Aktiviti secara langsung sebagai pendengar acara

Biarkan sahaja kelas Aktiviti melaksanakan antara muka mendengar acara XxxListener dan tentukan serta ganti kaedah pengendali acara yang sepadan dalam Aktiviti cth: Actitity melaksanakan antara muka OnClickListener, mengatasi kaedah onClick(view) dan menambah objek mendengar acara untuk komponen tertentu. Apabila, hanya tetapkanXxx.Listener(ini) terus

Kod pelaksanaan adalah seperti berikut: MainActivity.java:

pakej com.jay. contoh. innerlisten;
import android.os.Bundle;
import android.view.View;

//Biarkan kaedah Aktiviti melaksanakan antara muka OnClickListener
kelas awam MainActivity memanjangkan Aktiviti melaksanakan OnClickListener{
Butang peribadi btnshow; 
 @ Override
protected void onCreate
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); 🎜> }
//Tulis semula kaedah abstrak dalam antara muka
@Override
public void onClick (Lihat v) { 
 Toast.makeText(getApplicationContext(), "Button clicked", Toast.LENGTH_SHORT ).tunjukkan();

5) Ikat terus pada teg:

adalah untuk mentakrifkan secara langsung kaedah pemprosesan acara dalam Aktiviti yang sepadan dalam fail susun atur xml cth: public void myClick(Lihat sumber) sumber sepadan dengan sumber acara (komponen) Kemudian dalam fail susun atur yang sepadan dengan komponen untuk mencetuskan acara, tetapkan atribut: onclick = "myclick"

Kod pelaksanaan adalah seperti berikut: MainActivity.java:

pakej com.jay.example.caller;

import android.app.Activity;
import android.os.Bundle; kelas MainActivity melanjutkan Aktiviti {
@Override
dilindungi void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R . Layout.
} <🎜); // Peribadikan kaedah, masukkan komponen Lihat sebagai parameter
Public Void MyClick (Lihat Sumber)
{
Toast.Maketext (getApplication Context ( ), "Butang telah diklik", Toast.LENGTH_SHORT ).tunjukkan();
}  
}

fail reka letak main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height=" match_parent"
android:orientation="vertical" >
<Butang
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="myclick"/>
</LinearLayout>

Ringkasan bahagian ini

Bahagian ini memperkenalkannya kepada anda Mekanisme pemprosesan acara dalam Android digunakan Contohnya adalah acara klik onClickListener Sudah tentu, terdapat acara lain selain ini, seperti onItemClickListener Semua yang memerlukan setXxxListener pada dasarnya adalah berdasarkan pemantauan acara. Selain itu, lima kaedah yang paling biasa digunakan ialah: 1, 2, 3, dan 5, bergantung pada situasi tertentu~