2013-06-27 7 views
0

J'essaye de redimensionner une image que je reçois de ma galerie de caméra pour l'adapter à ImageView dans une autre activité. Je reçois l'image. J'ai juste besoin de savoir comment le redimensionner pour s'adapter à ImageView.Comment redimensionner une image

image1.setOnClickListener(new View.OnClickListener() { 
public void onClick(View arg0) { 
Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0); 
} 
}); 
} 
protected void putExtras(Bundle bundle) { 
     // TODO Auto-generated method stub 

    } 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == 0) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
      System.out.println("Image Path : " + selectedImagePath); 
      image1.setImageURI(selectedImageUri); 
    }}} 
public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 

mon xml

  <ImageView 
     android:id="@+id/image1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_margin="3dp" 
     android:layout_weight=".1" 
     android:background="@drawable/greenline" />      

Répondre

1

Votre question n'a de sens que si le ImageView a une taille définie, l'image peut être monté sur. Lorsque vous définissez layout_width sur wrap_content, c'est exactement l'inverse. ImageView entoure l'image et cela ne semble pas être ce que vous voulez. Vous devez donc utiliser match_parent pour layout_width, layout_height ou spécifier une taille concrète comme 30dip ou autre. Une fois que vous avez cela, vous pouvez utiliser android: scaleType comme d'autres mentionné.

Donc changer votre ImageView à quelque chose comme ceci:

<ImageView 
     android:id="@+id/image1" 
     android:layout_width="match_parent " 
     android:layout_height="match_parent " 
     android:scaleType="center" 
     android:layout_margin="3dp" 
     android:layout_weight=".1" 
     android:background="@drawable/greenline" /> 

qui ScaleType que vous utilisez dépend de la façon dont l'image doit être installé sur le ImageView, avec ou sans mise à l'échelle et de culture, etc.

+0

Il travaille pour la largeur mais pas la hauteur. Je dois faire quelque chose de mal. J'y reviendrai plus tard. – SmulianJulian

+0

Si vous développez sur le "ne fonctionne pas pour la hauteur" je pourrais éventuellement vous donner quelques conseils –

+0

Im avoir beaucoup de TextViews et de boutons dans un TableRow et. image1 est juste une petite vue. J'ai tous les boutons et tables réglés sur match_parent. La largeur de la photo est juste comme je le veux mais la hauteur est beaucoup trop grande – SmulianJulian

1

Vous pouvez définir android:scaleType attribut à la ImageView. Plus de détails peuvent être trouvés here.

1

Vous pouvez essayer d'utiliser Bitmap.createScaledBitmap() Si vous le faites programatically