2017-09-24 1 views
0

Lorsque j'ai créé une activité pour afficher une image, les images avec les résolutions basses sont simplement en train d'occulter l'espace dont elles ont besoin et ne correspondent pas seulement à l'écran. Ceci est mon activité: The Activity that I createdComment faire une image basse résolution agrandir et adapter à l'écran dans Android?

Le code XML de l'activité est la suivante:

<LinearLayout 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:layout_height="match_parent"> 
     <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/nick"/> 
</LinearLayout> 

Je veux la ImageView pour adapter l'image à l'écran avec le rapport de l'image sélectionnée Galary Activity

L'image dans l'application Galary a une petite résolution que l'image que j'ai utilisée dans mon activité! Alors, comment cela est-il fait?

Répondre

0

Utilisez un scaleType différent et vous pouvez le faire évoluer. Mais cela peut causer la pixellisation et d'autres problèmes. Il vaut mieux utiliser une image plus grande et réduire (ou deux images, pleine taille et miniature) que d'agrandir la plupart des images. Editer: Ok, en relisant votre question, le type d'échelle n'est pas suffisant. Essayez d'utiliser ceci comme une vue personnalisée:

import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.util.AttributeSet; 
import android.widget.ImageView; 



public class HeightScaleImageView extends ImageView { 

    public HeightScaleImageView(Context context) { 
     super(context); 
    } 

    public HeightScaleImageView(Context context, AttributeSet attributeSet) { 
     super(context, attributeSet); 
    } 

    public HeightScaleImageView(Context context, AttributeSet attributeSet, int defStyle) { 
     super(context, attributeSet, defStyle); 
    } 

    @Override 
    public void setImageResource(int resId) { 
     super.setImageResource(resId); 
     requestLayout(); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int width = 0; 
     int height = 0; 
     //Scale to parent width 
     width = MeasureSpec.getSize(widthMeasureSpec); 
     Drawable drawable = getDrawable(); 
     if (drawable != null) { 
      height = width * getDrawable().getIntrinsicHeight()/getDrawable().getIntrinsicWidth(); 
     } 
     super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); 
    } 
} 
+0

J'ai utilisé toutes les options d'échelle. Rien ne fonctionne! yea pixelation est un problème, mais je veux cette fonctionnalité sur mon App. Parce que les utilisateurs peuvent choisir une image pixélisée. –

+0

@FebinMathew vérifier ma modification. Vous avez raison, le type d'échelle est insuffisant pour la mise à l'échelle du rapport d'aspect à un match_parent avec une hauteur wrap_content. Le code ci-dessus devrait fonctionner –