Día de aprendizaje básico de Android10 | Procesamiento de eventos

Palabras escritas en el frente

1. Consulte principalmente videos relacionados de la estación B.
2. Si hay algún problema con el contenido, espero señalarlo o agregarlo.
3. Consolida el contenido.

I. Resumen

Evento: Es la operación del usuario en la interfaz gráfica. En teléfonos y tabletas Android, hay principalmente 键盘事件和触摸事件dos categorías. Los eventos de teclado incluyen presionar hacia abajo, emergente, etc., los eventos táctiles incluyen presionar hacia abajo, emergente, deslizar, hacer doble clic, etc.

1. Procesamiento de eventos basado en el mecanismo de devolución de llamada (generalización): métodos que comienzan con on.
2. Procesamiento de eventos basado en el mecanismo de la interfaz de escucha (resumen): finaliza con Listener.

Dos, manejar eventos de teclado

(I. Resumen

1. Haga clic en evento

El detector de eventos es View.OnClickListener y el método de procesamiento de eventos es onClick ().

2. Evento clave

Se genera cuando el usuario presiona o suelta una tecla en el teclado del teléfono, el oyente es View.OnKeyListener y el método de procesamiento de eventos es onKey ().

3. Eventos de enfoque

Este evento se genera cuando el componente obtiene o pierde el foco. El oyente es View.OnFocusChangeListener y el método de procesamiento de eventos es onFocusChange ().

(2) Prueba completa

① Diseño
Inserte la descripción de la imagen aquí
② MainActivity.java

package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener,
View.OnKeyListener,View.OnFocusChangeListener{
    
    

    private TextView t_title,t_text;
    //声明一个长度为2的数组
    ImageButton[] bt_cats = new ImageButton[2];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        //获取到控件
        t_title = findViewById(R.id.test_title);
        t_text = findViewById(R.id.test_text);
        bt_cats[0] = findViewById(R.id.test_cat1);//赋给数组中的第一个元素
        bt_cats[1] = findViewById(R.id.test_cat2);

        //设置标题
        t_title.setText("请通过键盘中的1、2或点击\n来选择你喜欢的猫咪");
        //取出bt_cats里面的每一个元素并为它添加监听器
        for(ImageButton bt_cat:bt_cats){
    
    
            //给bt_cat添加单击事件监听器
            bt_cat.setOnClickListener(this);
            //给bt_cat添加键盘按键监听器
            bt_cat.setOnKeyListener(this);
            //给bt_cat添加焦点监听器
            bt_cat.setOnFocusChangeListener(this);
        }
    }
    @Override
    //实现OnClickListener接口中的方法  单击事件
    public void onClick(View v){
    
    
        switch (v.getId()){
    
    
            case R.id.test_cat1:
                //设置提示文本
                t_text.setText("这是一只布偶猫");
                break;
            case R.id.test_cat2:
                t_text.setText("这是一只橘猫");
                break;
        }
    }

    @Override
    //实现OnKeyListener接口中的方法  按键事件
    public boolean onKey(View v, int keyCode, KeyEvent event) {
    
    
        //判断键盘码
        switch(keyCode){
    
    
            case KeyEvent.KEYCODE_1:
                //调用点击事件并请求到焦点事件
                bt_cats[0].performClick();
                bt_cats[0].requestFocus();
                break;
            case KeyEvent.KEYCODE_2:
                bt_cats[1].performClick();
                bt_cats[1].requestFocus();
                break;
        }
        return false;
    }

    @Override
    //实现OnFocusChangeListener接口中的方法  焦点事件
    public void onFocusChange(View v, boolean hasFocus) {
    
    
        if (hasFocus) {
    
    
            //吐司提示
            Toast toast = Toast.makeText(this, "获得焦点", Toast.LENGTH_SHORT);
            TextView tv = (TextView) toast.getView().findViewById(android.R.id.message);
            tv.setTextColor(Color.YELLOW); //设置吐司字体颜色
            toast.show();
            
            //得到焦点时文本变成红色
            t_text.setTextColor(Color.RED);
        }else{
    
    
            t_text.setTextColor(Color.BLACK);
        }
    }
}

③ Prueba de efecto
Inserte la descripción de la imagen aquí

Tres, manejar eventos táctiles

Cuando el teléfono móvil tiene una función de pantalla táctil, el evento se genera al tocar la pantalla, el oyente es View.OnTouchListener y el método de procesamiento de eventos es onTouch ().

(1) Ubicación de prueba-movimiento

① Diseño
Inserte la descripción de la imagen aquí
② TestActivity.java

package com.example.test;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;

public class TestActivity extends AppCompatActivity {
    
    
    private ImageView t_img;
    private LinearLayout t_layout;
    private LinearLayout.LayoutParams LayoutParams;

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test2);

        //获取到控件
        t_img = (ImageView) findViewById(R.id.test_img);
        t_layout = (LinearLayout) findViewById(R.id.test_layout);
        // 获取焦点
        t_layout.setFocusable(true);
        t_layout.requestFocus();
        // 获取图像控件的布局参数
        LayoutParams = (LinearLayout.LayoutParams) t_img.getLayoutParams();

        // 触摸监听事件
        t_layout.setOnTouchListener(new View.OnTouchListener() {
    
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
    
    
                // 根据变化的触点坐标来更新图像控件的布局参数
                LayoutParams.leftMargin = (int) event.getX();
                LayoutParams.topMargin = (int) event.getY();
                // 重新设置图像控件的布局参数
                t_img.setLayoutParams(LayoutParams);

                return true;
            }
        });
    }
}

③ Prueba de efecto

Dado que es una nueva ventana activa para probar, primero debe cambiar el archivo de manifiesto, de la siguiente manera.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuatro, suplemento

1. Uso básico de Toast

2. Propiedades de GestureOverlayView

Supongo que te gusta

Origin blog.csdn.net/luck_ch09/article/details/112782069
Recomendado
Clasificación