Ver proceso de sorteo 2

3. Dibujar el contenido de la Vista

Este paso llama al método onDraw de View. Este método es una implementación vacía, porque diferentes vistas tienen contenido diferente. Así que esto debe ser implementado por nosotros mismos. Se logra anulando este método en la vista personalizada.

4. Dibujar subvistas

Este paso llama al método dispatchDraw. Este método también es una implementación vacía. Este método se anula en ViewGroup. En el método dispatchDraw de ViewGroup, recorra la Vista secundaria. Y llame al método drawChild. En el método drawChild, se llama principalmente al método de dibujo de la vista. En el método de sorteo, se juzgará si hay un caché y, de no ser así, se dibujará normalmente. Si está disponible, mostrar usando caché.

6. Dibujar decoraciones

Este paso es para usar el método onDrawForeground de View.

 public void onDrawForeground(Canvas canvas) {
        onDrawScrollIndicators(canvas);
        onDrawScrollBars(canvas);

        final Drawable foreground = mForegroundInfo != null ? mForegroundInfo.mDrawable : null;
        if (foreground != null) {
            if (mForegroundInfo.mBoundsChanged) {
                mForegroundInfo.mBoundsChanged = false;
                final Rect selfBounds = mForegroundInfo.mSelfBounds;
                final Rect overlayBounds = mForegroundInfo.mOverlayBounds;

                if (mForegroundInfo.mInsidePadding) {
                    selfBounds.set(0, 0, getWidth(), getHeight());
                } else {
                    selfBounds.set(getPaddingLeft(), getPaddingTop(),
                            getWidth() - getPaddingRight(), getHeight() - getPaddingBottom());
                }

                final int ld = getLayoutDirection();
                Gravity.apply(mForegroundInfo.mGravity, foreground.getIntrinsicWidth(),
                        foreground.getIntrinsicHeight(), selfBounds, overlayBounds, ld);
                foreground.setBounds(overlayBounds);
            }

            foreground.draw(canvas);
        }
    }

Obviamente, este método se usa para dibujar la barra de desplazamiento y otras decoraciones. y dibujarlos encima del contenido de la vista.

Supongo que te gusta

Origin blog.csdn.net/howlaa/article/details/128717353
Recomendado
Clasificación