从Firebase存储中检索时,图像会自动被裁剪

时间:2017-09-09 03:41:01

标签: android firebase firebase-storage

我正在Firebase存储上传图片,当我在Firebase的存储中看到它们时,图片看起来很好,但是当我在我的Activity上检索这些图像时,图像会从上部和下部被裁剪,这种情况发生在图片的高度为更长的时间。我正在Firebase上发送图片

if(mImageUri!=null) //
    {
        StorageReference filepath=mstorage.child("Images").child(mImageUri.getLastPathSegment());
        filepath.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                final Uri downloadUrl= taskSnapshot.getDownloadUrl();
                final DatabaseReference newPost=mDatabase.push();

                mDatabaseUser.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        newPost.child("Image").setValue(downloadUrl.toString());

                        newPost.child("Name").setValue(dataSnapshot.child("name").getValue()).addOnCompleteListener(
                                new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if(task.isSuccessful())
                                {
                                    startActivity(new Intent(PostActivity.this,MainActivity.class));
                                    finish();
                                }
                                else
                                {
                                    Toast.makeText(PostActivity.this,"An Error Has Occurred.",Toast.LENGTH_LONG).show();
                                }
                            }
                        });
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                        Toast.makeText(PostActivity.this,"Error Uploading data",Toast.LENGTH_LONG).show();
                    }
                });

                mProgress.dismiss();
                //startActivity(new Intent(PostActivity.this,setupActivity.class));
            }
        });
    }

这是PostActicity Xml文件:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:foregroundGravity="center">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/back"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/MimageSelect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:background="#00ffffff"
            android:scaleType="centerCrop"
            android:src="@mipmap/add_btn" />


    </LinearLayout>
</ScrollView>

<EditText
    android:id="@+id/Mphone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/submit"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="5dp"
    android:background="@drawable/input_outline"
    android:ems="10"
    android:hint="Caption"
    android:padding="15dp"
    android:singleLine="false" />
<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="UPLOAD"
    android:id="@+id/submit"
    android:background="@color/colorPrimary"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textColor="@android:color/white"
    android:textStyle="bold"
    android:textSize="16dp" />

这就是我检索图像的方式:

mDatabase.child(mPostKey).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            String post_image=(String) dataSnapshot.child("Image").getValue();
            String post_uid=(String) dataSnapshot.child("uid").getValue();

            Picasso.with(profileSingleActivity.this).load(post_image).into(mImage);


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

这是我正在检索Image的活动的XML文件:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scroll"
    android:foregroundGravity="center">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/back"
    android:orientation="vertical">
        <ImageButton
            android:id="@+id/MimageSelect"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="12dp"
            android:adjustViewBounds="true"
            android:background="#00ffffff"
            android:scaleType="centerCrop"
            android:src="@mipmap/add_btn" />
</LinearLayout>
</ScrollView>

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Delete Post"
    android:id="@+id/removeBtn"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="@color/design_textinput_error_color_light"
    android:textColor="@color/abc_primary_text_disable_only_material_dark"
    android:textStyle="bold" />

1 个答案:

答案 0 :(得分:1)

根据您的需要,您必须正确使用android:scaleType属性。您可以使用fitcenter centerCrop

 <ImageButton
        android:id="@+id/MimageSelect"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="12dp"
        android:adjustViewBounds="true"
        android:background="#00ffffff"
        android:scaleType="centerCrop"
        android:src="@mipmap/add_btn" />    

检查此网址,他们使用图片进行演示。 https://robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide