J'ai besoin d'une vue d'image personnalisée qui dessine d'abord certaines formes derrière l'image avant de dessiner l'image elle-même en utilisant la même "Mise à l'échelle" appliquée à l'image elle-même. Tout fonctionne très bien, sauf que j'ai un AlphaAnimation pour fondre le ImageView personnalisé. Il estompe la partie BitmapDrawable mais pas ma forme. La forme est dessinée en pleine opacité à tout moment. J'ai essayé de mettre l'alpha de la peinture que j'utilise à la getAlpha de la vue mais sans chance. Voici ma fonction onDraw dans ma classe ImageView personnalisée:Dessiner un rectangle derrière ImageView non animé
@Override
protected void onDraw(Canvas canvas) {
float[] f = new float[9];
getImageMatrix().getValues(f);
final float scaleX = f[Matrix.MSCALE_X];
final float scaleY = f[Matrix.MSCALE_Y];
final Drawable d = getDrawable();
final int origW = d.getIntrinsicWidth();
final int origH = d.getIntrinsicHeight();
final int actW = Math.round(origW * scaleX);
final int actH = Math.round(origH * scaleY);
canvas.drawRect(Math.max((getWidth() - actW)/2, 0) + 1, Math.max((getHeight() - actH)/2, 0) + 1, Math.max((getWidth() - actW)/2, 0) + actW - 1, Math.max((getHeight() - actH)/2, 0) + actH - 1, paint);
super.onDraw(canvas);
}
Final Dessinable d = getDrawable(); d.setAlpha (1); pour votre forme dessinable –
Cela ne produit aucun changement. J'ai trouvé que onDraw() est seulement appelé une fois et pas dans chaque image de l'animation –