j3n Posted July 5, 2011 Share Posted July 5, 2011 Bonjour, Je souhaiterais avoir une image qui prenne toute la largeur de la page tout en gardant les proportions. Pour info, cette image est plus petite que l'écran et provient d'internet donc je ne connais pas les dimensions. Merci de votre aide. J3n Link to comment Share on other sites More sharing options...
nbbu Posted July 5, 2011 Share Posted July 5, 2011 Je souhaiterais avoir une image qui prenne toute la largeur de la page tout en gardant les proportions. Si ton ImageView possède les attributs suivants : layout_width="fill_parent" et layout_height="wrap_content" ça devrait le faire tout seul (bien sur il faut que le conteneur parent prenne tout la largeur de l'écran) Pour info, cette image est plus petite que l'écran et provient d'internet donc je ne connais pas les dimensions. si tu récupère ton image d'internet tu dois avoir un bout de code qui ressemble à cela : InputStream is = (InputStream) this.fetch(url); Bitmap bmp = BitmapFactory.decodeStream(is); si c'est le cas tu peux donc récupérer les dimensions ainsi : bmp.getHeight(); bmp.getWidth(); Si je suis à coté de la plaque, donnes un peu plus d'info :P Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 Tu peux aussi jouer avec : xml : http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType java : http://developer.android.com/reference/android/widget/ImageView.html#setScaleType(android.widget.ImageView.ScaleType) Link to comment Share on other sites More sharing options...
j3n Posted July 5, 2011 Author Share Posted July 5, 2011 Si je suis à coté de la plaque, donnes un peu plus d'info :P Pour récupérer l'image d'internet, j'utilise une classe qui s'appelle DistantImageView public class DistantImageView extends ImageView implements ImageCallback avec une méthode setUrl. Pour info, l'image que j'envoie fait 480 de largeur donc normalement c'est la bonne taille. Mais ça me la réduit de la même taille que si je la regarde depuis le navigateur android. J'ai essayé tous les scaleType, rien à faire. Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 Perso j'aime pas trop faire ca mais tu peux tenter : imageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT )); imageView.setAdjustViewBounds(false); // ou true à essayer imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); Link to comment Share on other sites More sharing options...
j3n Posted July 5, 2011 Author Share Posted July 5, 2011 Rien ne change :( Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 Rien ne change :( Tu devrais essayer de récupérer une des images et la mettre dans les ressources de l'application et voir si tu as le même problème. Parce que ca peut dépendre de bcp de chose ... par exemple si tu affiche dans une webview ... Link to comment Share on other sites More sharing options...
j3n Posted July 5, 2011 Author Share Posted July 5, 2011 Si je la mets dans les ressources, la taille est bonne. Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 CQFD ^^ Ton problème viens de ta manière de récupérer et d'afficher depuis le web. Je n'ai pas la solution mais ca cible mieux le problème. Si tu ne trouve pas seul du coup il va falloir fournir plus de code (récupération, xml d'affichage, etc...) Link to comment Share on other sites More sharing options...
j3n Posted July 5, 2011 Author Share Posted July 5, 2011 Oui j'avais un peu vu d'où venait le souci. J'ai essayé une méthode plus simple qui fait le même problème private Drawable LoadImageFromWebOperations(String url) { try { InputStream is = (InputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src name"); return d; } catch (Exception e) { return null; } } ImageView header_image = (ImageView)this.findViewById(R.id.header); Drawable d = LoadImageFromWebOperations("MON URL"); header_image.setImageDrawable(d); Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 Peut être utiliser un autre moyen de récupérer : ImageView i = new ImageView(this.myContext); try { /* Open a new URL and get the InputStream to load data from it. */ URL aURL = new URL(myRemoteImages[position]); URLConnection conn = aURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); /* Buffered is always good for a performance plus. */ BufferedInputStream bis = new BufferedInputStream(is); /* Decode url-data to a bitmap. */ Bitmap bm = BitmapFactory.decodeStream(bis); bis.close(); is.close(); /* Apply the Bitmap to the ImageView that will be returned. */ i.setImageBitmap(bm); } catch (IOException e) { i.setImageResource(R.drawable.error); Log.e("DEBUGTAG", "Remtoe Image Exception", e); } /* Image should be scaled as width/height are set. */ i.setScaleType(ImageView.ScaleType.FIT_CENTER); /* Set the Width/Height of the ImageView. */ i.setLayoutParams(new LayoutParams(FILL_PARENT, WRAP_CONTENT)); return i; } Note : le LayoutParams est celui du conteneur ou tu affiches l'imageview (ex : gallery.LayoutParam) Link to comment Share on other sites More sharing options...
j3n Posted July 5, 2011 Author Share Posted July 5, 2011 Merci!!!!!! Enfin ça marche! Link to comment Share on other sites More sharing options...
jokamax Posted July 5, 2011 Share Posted July 5, 2011 Merci!!!!!! Enfin ça marche! ;) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.