2016-02-17 2 views
0

Je crée une vue personnalisée. Dans la méthode onDraw, je dessine un bitmap. Le Bitmaps peut avoir une hauteur différente. J'ai besoin de régler la hauteur de vue après le chargement de l'image. J'ai eu onMeasure et onDraw dans les journaux. onMeasure est appelée avant onDraw. Dans les tutoriels est dit que la taille doit être définie dans onMeasure. Que faire si le calcul des hauteurs prend du temps et que je dois le définir après ce calcul? dois-je pré-calculer la taille avant d'appeler onDraw?Définir la taille de la vue personnalisée

+0

Avez-vous déjà décodé le bitmap? – ootinii

+0

non, je les décode dans onDraw. C'est la bonne approche? –

+0

Je décoderais probablement le bitmap pas dans onDraw, honnêtement. Vous devriez probablement le décoder à chaque fois qu'il est défini, que vous définissiez un chemin ou une ressource, etc. Le faire dans onDraw entraînera probablement des problèmes de performances. – ootinii

Répondre

0

Vous pouvez essayer

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeFile(path, options); 

Note: il existe d'autres méthodes disponibles que les ressources décode et similaires, je viens d'utiliser le decodeFile comme l'exemple. Cela vous donnera les dimensions du bitmap sans le décoder complètement, ce qui vous permettra de définir vos dimensions mesurées à ce que vous avez besoin d'être. Les dimensions seront dans les options.

final int width = options.outWidth; 
final int height = options.outHeight; 
+0

Merci. Je vais l'essayer –