2016-10-01 4 views
0

Je veux mettre une image de ma galerie de téléphone adaptent le ImageButton, et aussi sans qu'il soit mis en rotation . Quand j'essaie d'accéder à l'image de ma galerie, ça ne me va pas bien et mon imageButton vient quand il est tourné. Comment puis-je le débarrasser de ça.Comment faire un ajustement d'image dans un ImageButton en utilisant la méthode onActivityResult

Ci-dessous est java Code

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.text.TextUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 

import com.google.android.gms.appindexing.Action; 
import com.google.android.gms.appindexing.AppIndex; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.tasks.OnSuccessListener; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.storage.FirebaseStorage; 
import com.google.firebase.storage.StorageReference; 
import com.google.firebase.storage.UploadTask; 

public class PostActivity extends AppCompatActivity { 

    private ImageButton imageSelect; 
    private static final int GALLERY_REQUEST = 1; 
    private EditText mPostTitle; 
    private EditText mPostDesc; 
    private Button postButton; 
    private Uri imageUri = null; 
    private ProgressDialog mProgress; 
    private StorageReference mStorage; 
    private DatabaseReference mDatabase; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.post_activity); 

     mStorage = FirebaseStorage.getInstance().getReference(); 
     mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog"); 
/*  getSupportActionBar().setDisplayShowHomeEnabled(true); 
     android.support.v7.app.ActionBar actionBar = getSupportActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setTitle("Post a Picture");*/ 
     mProgress = new ProgressDialog(this); 
     imageSelect = (ImageButton) findViewById(R.id.imageSelect); 
     mPostTitle = (EditText) findViewById(R.id.mPostTitle); 
     mPostDesc = (EditText) findViewById(R.id.mPostDesc); 
     postButton = (Button) findViewById(R.id.postButton); 
     imageSelect.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); 
       galleryIntent.setType("image/"); 
       startActivityForResult(galleryIntent, GALLERY_REQUEST); 
      } 
     }); 


     postButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startPosting(); 
      } 
     }); 


    } 

    private void startPosting() { 
     mProgress.setMessage("Uploading Image..."); 
     mProgress.show(); 

     final String title_val = mPostTitle.getText().toString().trim(); 
     final String desc_val = mPostDesc.getText().toString().trim(); 
    if(!TextUtils.isEmpty(title_val) &&!TextUtils.isEmpty(desc_val) && imageUri!=null){ 

     StorageReference filepath = mStorage.child("BlogImages").child(imageUri.getLastPathSegment()); 
     filepath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 


       Uri downloadUri = taskSnapshot.getDownloadUrl(); 
       DatabaseReference newPost = mDatabase.push(); 
       newPost.child("title").setValue(title_val); 
       newPost.child("description").setValue(desc_val); 
       newPost.child("imageUrl").setValue(downloadUri.toString()); 
      // newPost.child("uid").setValue(FirebaseAuth.getc); 


       mProgress.dismiss(); 

       startActivity(new Intent(PostActivity.this,MainActivity.class)); 
      } 
     }); 


    } 



    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK) { 


      imageUri = data.getData(); 
      imageSelect.setImageURI(imageUri); 
     } 
    } 


} 

donc mon résultat onActivityResult est également inclus ci-dessus.

Ci-dessous mon xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 
<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:orientation="vertical" 
     android:layout_height="wrap_content"> 
    <ImageButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageSelect" 
     android:layout_gravity="center_horizontal" 
     android:background="#00ffffff" 
     android:src="@mipmap/add_btn" 
     android:scaleType="centerCrop" /> 
     <include layout="@layout/content_post" /> 
    </LinearLayout> 
</ScrollView> 
</LinearLayout> 
+0

un coup d'oeil à picasso, sa bibliothèque java pour Android qui aide avec des images, vous avez un peu pour s'y habituer, mais sa grande pour le chargement des images en fonction de ce que votre code fait. – namlik

Répondre

0

Si je comprends bien votre question, vous voulez que l'image pour remplir les limites de la ImageButton. Vous pouvez le faire avec l'attribut android:adjustViewBounds.

Si vous souhaitez désactiver la rotation de l'écran, définissez android:screenOrientation sur portrait ou paysage dans l'élément activity de votre Manifest.xml.

android:screenOrientation="portrait"