2010-12-06 30 views
1

Pour une image particulière dire sur fond bleu, je peux obtenir sa largeur et sa hauteur dans Android. Je peux l'afficher sur l'écran en utilisant ImageView. Même si je garde l'arrière-plan de l'image aussi transparent que je peux l'afficher à l'écran. Mais encore si j'essaie de trouver la largeur ou la hauteur de l'image par programme, je reçois toujours la même chose qu'à l'étape précédente. Ce que je voulais réaliser Y at-il un moyen par lequel je peux obtenir la hauteur exacte ou la largeur de l'image moins l'arrière-plan transparent.Taille de l'image dans Android

Je veux faire ceci parce que j'essaye d'implémenter un geste de glisser/déplacer. Mais maintenant, la taille de l'image est plus due à l'arrière-plan transparent, je ne peux que le déplacer à quelques portions seulement. Probablement que je suis nouveau à l'ensemble du jeu, c'est pourquoi je n'ai pas de bons mots pour m'exprimer. Mais j'espère que quelqu'un comprendra.

Merci

Répondre

2

Comment vous en place le ImageView? En XML? Et comment essayez-vous de récupérer la largeur et la hauteur de l'image? Disons que vous utilisez XML, et quelque chose comme ceci:

<ImageView 
    android:id="@+id/my_image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/my_image" 
    /> 

Votre ImageView sera la même taille que l'image qu'il contient. Donc, dans le code, vous pouvez soit vérifier la largeur et la hauteur de l'ImageView, ou l'image qu'il contient et obtenir les mêmes numéros. Toutefois, si vous faites quelque chose comme ceci:

<ImageView 
    android:id="@+id/my_image" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/my_image" 
    android:scaleType="centerInside" 
    /> 

L'image peut être inférieure à la ImageView, afin d'obtenir un résultat précis, vous pouvez essayer quelque chose comme ce qui suit:

ImageView iv = (ImageView)findViewById(R.id.my_image); 
Rect rect = iv.getDrawable().getBounds(); 
int height = rect.height(); 
int width = rect.width(); 

Il pourrait être une méthode plus simple, mais celle-ci devrait fonctionner.

EDIT: Si votre image réelle est plus grande que son contenu, avec un arrière-plan transparent, vous devez recadrer l'image jusqu'à son contenu dans un programme de retouche photo.

+0

Merci pour votre réponse. Je suppose que la culture est le seul moyen. hmm .. gr8 Je vais le faire –

+0

Vous pourriez probablement lancer votre Drawable vers un BitmapDrawable, lancer getBitmap() dessus, puis getAlpha() sur le Bitmap, puis l'analyser à partir de là, mais c'est probablement une complication inutile. Je ne peux pas penser à de nombreux cas que vous auriez besoin de rembourrage supplémentaire transparent dans l'image réelle; vous pouvez ajouter un remplissage et des marges à travers ImageView. – kcoppock