Android的事件處理——監聽介面方式

小姚要加油發表於2020-10-12

監聽介面處理步驟:

1. 實現Listener介面
(1)定義Activity時實現介面
(2)定義內部類實現介面
(3)通過匿名內部類實現介面

2. View控制元件註冊事件監聽器
例:myButton.setOnClickListener(this);

3. 重寫OnXXX()方法**
例:public void onClick(View v)方法

三個例子:

定義Activity時實現OnClickListener介面:

//1.實現介面
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private int count = 0;
    private Button btnClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //2.註冊監聽器
        btnClick = findViewById(R.id.btnClick);
        btnClick.setOnClickListener(this);
    }
    //3.重寫onClick方法
    @Override
    public void onClick(View view) {
        count++;
        if (count == 5){
            finish();     // 退出
        }
        btnClick.setText("我被點選了" + count + "次");
    }

定義內部類實現OnKeyListener介面:

public class MainActivity extends AppCompatActivity {
    //1.實現介面
    class MyKeyListener implements View.OnKeyListener{
         //3.重寫onKey方法
        @Override
        public boolean onKey(View view, int i, KeyEvent keyEvent) {
            keyCode += "鍵盤碼:" + i + "\n";
            System.out.println("wwwkkk----" + keyCode);
            textView.setText(keyCode);

            return false;
        }
    }

注意:每次鍵盤輸入1次,textView顯示2次“鍵盤碼值”,是因為KeyEvent觸發了DOWN和UP兩次事件

定義匿名內部類實現OnTouchListener介面:

public class MainActivity extends AppCompatActivity {
    
    private TextView textViewTouch;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textViewTouch = findViewById(R.id.textViewTouch);
        ImageView imageView = findViewById(R.id.imageViewTouch);
   }
}

相關文章