Vista personalizada no dibujada correctamente
Tengo una vista de indicador personalizado que he creado.
- Android - Descripción de View.getLocalVisibleRect (Rect)
- Cómo manejar los cambios de visibilidad para una vista / widget personalizado de Android
- Android infla la vista utilizando un objeto de vista existente
- Android slide down animación
- Cómo implementar un deslizamiento de una vista (como feed de noticias en la aplicación de Facebook)
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: cambiar pantallas con nueva actividad o simplemente cambiar la vista de contenido
- Operación de setContentView de Android
- ¿Qué el mensaje de logcat: "E / MoreInfoHPW_ViewGroup (2905): Vista de padre no es un TextView" significa?
- Personalizar Android PieChart
- ¿Cómo comprobar la vista contiene otra vista?
- Android: cómo encontrar varias vistas con un atributo común
- Cómo detectar si la actividad principal de la vista se está destruyendo
- Cómo establecer la unidad para Paint.setTextSize ()
- Fragmento de Android ver estado dentro de una pestaña de host
- Utilice la imagen GIF en ImageSpan con un EditText