2016-10-01 3 views
0

をonActivityResult使用してのImageButtonにイメージフィットを作るために、私は自分の携帯電話のギャラリーから任意の画像を設定したい、また、それがされずにはを回転させます。私がギャラリーから画像にアクセスしようとすると、うまく収まらず、回転中にimageButtonが表示されます。どうすればこれを取り除くことができますか?以下は</strong> IMAGEBUTTONに合わせ<strong>どの方法

javaコード

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); 
     } 
    } 


} 

ので、私のonActivityResult結果はまた、上記に含まれています。

以下は私が正しくあなたの質問を理解していれば、私は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

ピカソ、画像に役立つAndroid用のJavaライブラリを見て、あなたはちょっとあなたのコードがない何に基づいて、それに使用されるが、画像内のローディングのためにその偉大な取得する必要があります。 – namlik

答えて

0

、あなたは画像がImageButtonの境界を埋めるためにしたいです。これは属性android:adjustViewBoundsで行うことができます。

スクリーンレンダリングを無効にする場合は、Manifest.xmlactivity要素でandroid:screenOrientationを縦または横に設定します。

android:screenOrientation="portrait"

関連する問題