Не могу увидеть вид изображения в андроид студии - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над получением изображения, отправленного в Firebase.Он работает, сначала выбрав изображение, затем отображаемое изображение, а затем, наконец, вы можете щелкнуть, чтобы отправить изображение в базу данных.У меня это работает, но прежде чем отправить изображение, я не вижу предварительный просмотр изображения.

Я хочу, чтобы оно показывало изображение, выбранное при просмотре изображения.

спасибо.

Вот мой макет.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".UploadImage">
<LinearLayout
    android:id="@+id/layout_button"
    android:orientation="horizontal"
    android:layout_alignParentTop="true"
    android:weightSum="2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/btnChoose"
        android:text="Choose"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnUpload"
        android:text="Upload"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />
</LinearLayout>



<ImageView
    android:id="@+id/imgView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</android.support.constraint.ConstraintLayout>

Воткласс.

public class UploadImage extends AppCompatActivity {

private Button btnChoose;
private Button btnUpload;
private ImageView imageView;
private Uri filePath;
FirebaseStorage storage;
StorageReference storageReference;

private final int PICK_IMAGE_REQUEST = 71;



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

    btnChoose = findViewById(R.id.btnChoose);
    btnUpload = findViewById(R.id.btnUpload);
    imageView = findViewById(R.id.imgView);
    storage = FirebaseStorage.getInstance();
    storageReference = storage.getReference();
    btnChoose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            chooseImage();
        }
    });
    btnUpload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            uploadImage();
        }
    });
        }
        private void chooseImage()  {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select 
Picture"), PICK_IMAGE_REQUEST);
        }
        private void uploadImage()  {
            if(filePath != null)
            {
                final ProgressDialog progressDialog = new 
ProgressDialog(this);
                progressDialog.setTitle("Uploading...");
                progressDialog.show();

                StorageReference ref = storageReference.child("images/"+ 
UUID.randomUUID().toString());
                ref.putFile(filePath)
                        .addOnSuccessListener(new 
OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot 
 taskSnapshot) {
                                progressDialog.dismiss();
                                Toast.makeText(UploadImage.this, "Uploaded", 
Toast.LENGTH_SHORT).show();
                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                progressDialog.dismiss();
                                Toast.makeText(UploadImage.this, "Failed "+e.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        })
                        .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                                double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
                                        .getTotalByteCount());
                                progressDialog.setMessage("Uploaded "+(int)progress+"%");
                            }
                        });
            }
        }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
            && data != null && data.getData() != null )
    {
        filePath = data.getData();
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            imageView.setImageBitmap(bitmap);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

}

1 Ответ

0 голосов
/ 18 мая 2018
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/layout_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/btnChoose"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Choose" />

        <Button
            android:id="@+id/btnUpload"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Upload" />
    </LinearLayout>


    <ImageView
        android:id="@+id/imgView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/ic_launcher" />

</LinearLayout>

Обновление

Я видел низкоуровневый код выбора изображения в вашем фрагменте.Вы даже не сжимали изображение перед его использованием.

Я предлагаю вам использовать некоторые библиотеки для выбора изображений, потому что они уже работали над совместимостью с версиями Android API, разрешениями и т. Д.

ImagePicker imagePicker = new ImagePicker(Activity.this);
imagePicker.setImagePickerCallback(new ImagePickerCallback(){
        @Override
        public void onImagesChosen(List<ChosenImage> images) {
            // Display images
        }

        @Override
        public void onError(String message) {
            // Do error handling
        }
    }
);
// imagePicker.allowMultiple(); // Default is false
// imagePicker.shouldGenerateMetadata(false); // Default is true
// imagePicker.shouldGenerateThumbnails(false); // Default is true
imagePicker.pickImage();

Просто добавьте compile 'com.kbeanie:multipicker:1.1.31@aar' к своему уровню приложения build.gradle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...