마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지뷰 3개에 갤러리 호출 문제요

0 추천

이미지 뷰 밑에 버튼3개로 각각의 이미지뷰를 변경하려고합니다

(안드로이드 갤러리에 있는 이미지들로요)

문제는 버튼이 작동은 하는데 3개의 이미지뷰가 전부 바뀌게 됩니다

각각을 변경하고 싶은데 어떻게 해야 하나요?

초보라 너무 힘드네요 도와주세요 ㅜㅜ​​

 

----------------java 코드-------------------------------

package com.example.myself.mygallery;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class img extends Activity {
    /** Called when the activity is first created. */

    private static final String TEMP_PHOTO_FILE = "temp.jpg";       // 임시 저장파일
    private static final int REQ_CODE_PICK_IMAGE = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_img);

        Button bt1 = (Button) findViewById(R.id.btn1);

        bt1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(
                        Intent.ACTION_GET_CONTENT,      // 또는 ACTION_PICK
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");              // 모든 이미지
                intent.putExtra("crop", "true");        // Crop기능 활성화
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());     // 임시파일 생성
                intent.putExtra("outputFormat",         // 포맷방식
                        Bitmap.CompressFormat.JPEG.toString());

                startActivityForResult(intent, REQ_CODE_PICK_IMAGE);
                // REQ_CODE_PICK_IMAGE == requestCode
            }
        });

        Button bt2 = (Button) findViewById(R.id.btn2);

        bt2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(
                        Intent.ACTION_GET_CONTENT,      // 또는 ACTION_PICK
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");              // 모든 이미지
                intent.putExtra("crop", "true");        // Crop기능 활성화
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());     // 임시파일 생성
                intent.putExtra("outputFormat",         // 포맷방식
                        Bitmap.CompressFormat.JPEG.toString());

                startActivityForResult(intent, REQ_CODE_PICK_IMAGE);
                // REQ_CODE_PICK_IMAGE == requestCode
            }
        });

        Button bt3 = (Button) findViewById(R.id.btn3);

        bt3.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(
                        Intent.ACTION_GET_CONTENT,      // 또는 ACTION_PICK
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");              // 모든 이미지
                intent.putExtra("crop", "true");        // Crop기능 활성화
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());     // 임시파일 생성
                intent.putExtra("outputFormat",         // 포맷방식
                        Bitmap.CompressFormat.JPEG.toString());

                startActivityForResult(intent, REQ_CODE_PICK_IMAGE);
                // REQ_CODE_PICK_IMAGE == requestCode
            }
        });



    }

    /** 임시 저장 파일의 경로를 반환 */
    private Uri getTempUri() {
        return Uri.fromFile(getTempFile());
    }

    /** 외장메모리에 임시 이미지 파일을 생성하여 그 파일의 경로를 반환  */
    private File getTempFile() {
        if (isSDCARDMOUNTED()) {
            File f = new File(Environment.getExternalStorageDirectory(), // 외장메모리 경로
                    TEMP_PHOTO_FILE);
            try {
                f.createNewFile();      // 외장메모리에 temp.jpg 파일 생성
            } catch (IOException e) {
            }

            return f;
        } else
            return null;
    }

    /** SD카드가 마운트 되어 있는지 확인 */
    private boolean isSDCARDMOUNTED() {
        String status = Environment.getExternalStorageState();
        if (status.equals(Environment.MEDIA_MOUNTED))
            return true;

        return false;
    }

    /** 다시 액티비티로 복귀하였을때 이미지를 셋팅 */
    protected void onActivityResult(int requestCode, int resultCode,
                                    Intent imageData) {
        super.onActivityResult(requestCode, resultCode, imageData);

        switch (requestCode) {
            case REQ_CODE_PICK_IMAGE:
                if (resultCode == RESULT_OK) {
                    if (imageData != null) {
                        String filePath = Environment.getExternalStorageDirectory()
                                + "/temp.jpg";

                        System.out.println("path" + filePath); // logCat으로 경로확인.

                        Bitmap selectedImage = BitmapFactory.decodeFile(filePath);
                        // temp.jpg파일을 Bitmap으로 디코딩한다.

                        ImageView _image1 = (ImageView) findViewById(R.id.iv1);
                        ImageView _image2= (ImageView) findViewById(R.id.iv2);
                        ImageView _image3 = (ImageView) findViewById(R.id.iv3);
                        _image1.setImageBitmap(selectedImage);
                        _image2.setImageBitmap(selectedImage);
                        _image3.setImageBitmap(selectedImage);
                        // temp.jpg파일을 이미지뷰에 씌운다.
                    }
                }






                break;
        }
    }
}

 

깝서방 (120 포인트) 님이 2015년 5월 23일 질문

1개의 답변

0 추천

ImageView _image1 = (ImageView) findViewById(R.id.iv1);

ImageView _image2= (ImageView) findViewById(R.id.iv2);
ImageView _image3 = (ImageView) findViewById(R.id.iv3);
_image1.setImageBitmap(selectedImage);
_image2.setImageBitmap(selectedImage);
_image3.setImageBitmap(selectedImage);
 
3개의 이미지뷰에 똑같은 그림을 넣으니 당연히 3개가 똑같아 지는거 아닌가요?
 
 
 
-----------------------
기타 질문이 필요하시면
익명사용자 님이 2015년 5월 24일 답변
너 돈 받고 잠적하고 사기치고 다닌다며,
왜이렇게 또 열심히 활동하니? 돈 떨어졌니?
답변 열심히하는 건 좋은데,
이메일은 지우고하고,
행여 다른사람들 한테 개별 연락 받아서 등쳐먹을 생각은 하지마라.
일이 필요하면 구인구직란에 올려.
...