1. Conocimientos básicos de la vista personalizada

1. Conceptos básicos de la vista personalizada

1.1 Ver clasificación

categoría Explicación Características
Vista única Esa es una vista, como TextView No contiene vistas secundarias
Ver grupo Es decir, varias vistas forman un ViewGroup, como LinearLayout Incluir vista secundaria

1.2 Introducción a la clase View

La clase View es la clase base de varios componentes en Android. Por ejemplo, View es la clase base de ViewGroup.
View se comporta como varias vistas que se muestran en la pantalla.

Los componentes de la interfaz de usuario en Android se componen de View y ViewGroup

Hay 4 constructores públicos para View:

// 如果View是在Java代码里面new的,则调用第一个构造函数
 public CarsonView(Context context) {
    
    
        super(context);
    }

// 如果View是在.xml里声明的,则调用第二个构造函数
// 自定义属性是从AttributeSet参数传进来的
    public  CarsonView(Context context, AttributeSet attrs) {
    
    
        super(context, attrs);
    }

// 不会自动调用
// 一般是在第二个构造函数里主动调用
// 如View有style属性时
    public  CarsonView(Context context, AttributeSet attrs, int defStyleAttr) {
    
    
        super(context, attrs, defStyleAttr);
    }

    //API21之后才使用
    // 不会自动调用
    // 一般是在第二个构造函数里主动调用
    // 如View有style属性时
    public  CarsonView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    
    
        super(context, attrs, defStyleAttr, defStyleRes);
    }

1.2.1 La forma básica de personalizar la vista

Los tres métodos más básicos para personalizar View son: onMeasure (), onLayout (), onDraw ();
View se muestra en Activity, y tiene que pasar por tres pasos de medición, diseño y dibujo, correspondientes a tres acciones: medir, Maquetar y dibujar.

  • Medición: onMeasure () determina el tamaño de la Vista
  • Diseño: onLayout () determina la posición de la Vista en la Vista
  • Dibujar: onDraw () decide dibujar esta Vista

1.2.2 Clasificación de control personalizado

  • Vista personalizada : solo es necesario volver a escribir onMeasure () y onDraw ()
  • ViewGroup personalizado : solo necesita anular onMeasure () y onLayout ()

1.3 AttributeSet y atributos personalizados

La vista integrada del sistema se puede configurar con atributos en xml. Para una vista personalizada que está escrita, los atributos también se pueden configurar en xml. Para configurar los atributos de una vista personalizada en xml, se requieren los siguientes 4 pasos:

  1. Por <declare-styleable>la adición de atributos a la costumbre Vista
  2. Declare el valor del atributo para el atributo correspondiente en xml
  3. Obtenga el valor de la propiedad en tiempo de ejecución (generalmente un constructor)
  4. Aplicar el valor del atributo obtenido a la Vista

1.4 Ver estructura de vista

1. ViewRoot se crea cuando se inicia Activtiy y es responsable de la gestión, el diseño, la interfaz de usuario de la ventana de renderizado, etc. El dibujo del árbol de vistas está principalmente a cargo de ViewRoot. ViewRoot es el administrador del árbol de vistas y es responsable de combinar DecorView y phoneWindows.
2. PhoneWindow es el sistema de ventanas más básico del sistema Android, heredado de la clase Windows, responsable de administrar la visualización de la interfaz y la respuesta a eventos. Es la interfaz
entre Activity y el sistema View. 3. El nodo raíz de View es estrictamente DecorView, heredado de la clase View y utilizado como el contenedor completo de la vista. Se utiliza para configurar las propiedades de la ventana. Es esencialmente un FrameLayout.
Inserte la descripción de la imagen aquí
Para múltiples vistas de Vista, la estructura es una estructura de árbol: el nivel superior es ViewGroup, y puede haber múltiples ViewGroups o Vistas en ViewGroup, como se muestra en la siguiente figura:
Inserte la descripción de la imagen aquí
Asegúrese de recordar: si es un proceso de medición, un proceso de diseño o un dibujo El proceso siempre se mide o se calcula desde el nodo raíz del árbol de Vista (es decir, desde la parte superior del árbol), y se procedió capa por capa, rama por rama (es decir, recursividad del árbol), y finalmente calcular cada Vista en todo el árbol de Vista, y finalmente determinar los atributos relevantes de todo el árbol de Vista.

1.5 sistema de coordenadas Android

El sistema de coordenadas de Android se define como:

  • La esquina superior izquierda de la pantalla es el origen de las coordenadas.
  • A la derecha está la dirección creciente del eje x
  • Abajo es la dirección creciente del eje y

Inserte la descripción de la imagen aquí

La posición de la Vista está determinada por
4 vértices. La descripción de la posición de los 4 vértices está determinada por 4 valores respectivamente:
Recuerde: la posición de la Vista es relativa al control principal)

  • Superior: la distancia desde el límite superior de la vista secundaria al límite superior de la vista principal
  • Izquierda: la distancia desde el borde izquierdo de la vista secundaria al borde izquierdo de la vista principal
  • Inferior: la distancia desde el margen inferior de la vista secundaria hasta el límite superior de la vista principal
  • Derecha: La distancia desde el borde derecho de la vista secundaria al borde izquierdo de la vista principal. El
    Inserte la descripción de la imagen aquímétodo de adquisición de
    posición La posición de la vista se obtiene a través de la función view.getxxx (): (Tome la parte superior como ejemplo)
// 获取Top位置
public final int getTop() {
    
      
    return mTop;  
}  

// 其余如下:
  getLeft();      //获取子View左上角距父View左侧的距离
  getBottom();    //获取子View右下角距父View顶部的距离
  getRight();     //获取子View右下角距父View左侧的距离

La diferencia con get () y getRaw () en MotionEvent

//get() :触摸点相对于其所在组件坐标系的坐标
 event.getX();       
 event.getY();

//getRaw() :触摸点相对于屏幕默认坐标系的坐标
 event.getRawX();    
 event.getRawY();

1.6 Contenido relacionado con el color en Android

Modos de color compatibles con Android:
Inserte la descripción de la imagen aquí
tome ARGB8888 como ejemplo para presentar definiciones de color:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41477306/article/details/106744945
Recomendado
Clasificación