Отображение двух изображений с устройства android - PullRequest
0 голосов
/ 15 марта 2020
 @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_adharFrontUploadId:
                pickImage();
                loadAdharFrontImage();
                break;
            case btn_adharBackUploadId:
                pickImage();
                loadAdharBackImage();
                break;
        }
    }

отображает два разных изображения с устройства. Я написал метод следующим образом:

 private void loadAdharBackImage() {
        new Thread() {
            public void run() {
                while (i++ < 1000) {
                    try {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                iv_adharBack.setImageBitmap(decodedWebP);
                            }
                        });
                        sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

    private void loadAdharFrontImage() {
        new Thread() {
            public void run() {
                while (i++ < 1000) {
                    try {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                    iv_adharFront.setImageBitmap(decodedWebP);
                            }
                        });
                        sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

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

1 Ответ

0 голосов
/ 18 марта 2020

Спасибо за поддержку людей ... наконец-то я получил ответ. Нет необходимости использовать runnable, упомянутый в моем вопросе. Здесь я могу сделать код для извлечения изображений для различных изображений. Еще раз спасибо

@Override
   public void onClick(View v) {
       switch (v.getId()) {
           case btn_applAdharFrontUploadId:
               pickImage(1);
               break;
           case btn_applAdharBackUploadId:
               pickImage(2);
               break;
       }
   }

Здесь я могу использовать тот же код, чтобы сжать мои изображения и загрузить их в imageViews

private void pickImage(int i) {

        Intent pickImageIntent = new Intent(Intent.ACTION_GET_CONTENT);
        pickImageIntent.setType("image/*");
        startActivityForResult(Intent.createChooser(pickImageIntent, "Select Picture"), i);

    }
@Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {

            assert data != null;
            Uri imageUri = data.getData();
            InputStream is = null;
            try {
                assert imageUri != null;
                is = getContentResolver().openInputStream(imageUri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            assert is != null;
            BufferedInputStream bufferedInputStream = new BufferedInputStream(is);
            Bitmap bitmap = BitmapFactory.decodeStream(bufferedInputStream);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.WEBP, 60, out);
            Bitmap decodedImage = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));
            switch (requestCode){
                case 1:
                    iv_ApplAdharFront.setImageBitmap(decodedImage);
                    break;
                case 2:
                    iv_ApplAdharBack.setImageBitmap(decodedImage);
                    break;

...