Vista personalizada no dibujada correctamente
Tengo una vista de indicador personalizado que he creado.
- No se puede obtener el atributo clipChildren = false para trabajar
- ¿Cuál es la unidad del valor del parámetro en el método onMeasure (int widthMeasureSpec, int heightMeasureSpec) de View Class?
- Android View PerformClick () y callOnClick () diferencia
- Cómo agregar una vista a la parte superior de un diseño lineal en el código?
- Invalidate () en la vista personalizada no hace que onDraw (Canvas c) se llame
Como se puede ver en la primera imagen todo se dibuja correctamente, pero a veces cuando cierro la aplicación e iniciarla de nuevo no se dibuja correctamente (la segunda imagen)
Tratando de averiguar cuál podría ser la razón de esto. Tal vez un poco de almacenamiento en caché?
Este es mi código onDraw
:
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); drawUnselected(canvas, mUnselectedPaint); drawSelected(canvas, mSelectedPaint); drawDone(canvas, mDonePaint); } private void drawDone(Canvas canvas, Paint mDonePaint) { for (Integer page : mDonePages) { canvas.drawBitmap(mDoneItemBitmap, dotCenterX[page], mDotTopY, mDonePaint); } } private void drawSelected(Canvas canvas, Paint mSelectedPaint) { float dist = ((mSelectedPaint.descent() + mSelectedPaint.ascent()) / 2); for (Integer page : mSelectedPages) { canvas.drawBitmap(mSelectedItemBitmap, dotCenterX[page], mDotTopY, mSelectedPaint); canvas.drawText("" + (page + 1), dotCenterX[page] + mDotRadius + dist, mDotTopY + mDotRadius - dist, mSelectedPaint); } } private void drawUnselected(Canvas canvas, Paint mUnselectedPaint) { int paddingTop = getPaddingTop(); for (int page = 0; page < mDotsNumber; page++) { Paint test = new Paint(); test.setColor(Color.BLACK); test.setStrokeWidth(30); canvas.drawBitmap(mUnSelectedItemBitmap, dotCenterX[page], mDotTopY, mUnselectedPaint); float dist = ((mNumbersPaint.descent() + mNumbersPaint.ascent()) / 2); canvas.drawText("" + (page + 1), dotCenterX[page] + mDotRadius + dist, mDotTopY + mDotRadius - dist, mNumbersPaint); if (page == mDotsNumber - 1) { //last page } else { canvas.drawLine(dotCenterX[page] + mDotDiameter - 2, mDotRadius + paddingTop, dotCenterX[page] + mDotDiameter + mDotGap + 1, mDotRadius + paddingTop, mUnselectedPaint); } } }
- Android - view.Surface OutOfResourcesException
- ¿Podría ocultar la barra de progreso después de cargar la imagen en picasso?
- android- puede hacer que un objeto dibujado en un lienzo haga clic
- Bitmap de TextView (getDrawingCache) siempre nulo
- Cómo obtener la vista anterior o siguiente
- Android TextView en la parte superior de una vista
- Imagen de círculo con texto
- Android: ¿cuál es la diferencia entre los estados enfocado, habilitado, presionado y seleccionado?
- Fragmento de Android ver estado dentro de una pestaña de host
- Utilice la imagen GIF en ImageSpan con un EditText