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

갤러리 만들기-sdcard에 있는 이미지 파일을 불러오고 싶습니다.

0 추천

현재는 drawable 폴더에 있는 이미지만을 볼 수 있는데, 그 대신 sdcard에 있는 이미지들을 불러오기를 해서 갤러리를 볼 수 있게 하고 싶습니다.

 

 

public class MainActivity extends PermissionActivity {
    final static String KEY_INDEX = "index";


    int[] images = {
            R.drawable.jellyfish,
            R.drawable.lighthouse,
            R.drawable.koala,
            R.drawable.penguins,
            R.drawable.tulips
    };

    int currentImage = 0;     // 현재 출력 이미지 인덱스
    ImageView imageView;    // ImageView 참조
    GestureDetector detector;

    ImageView.ScaleType scaleType = ImageView.ScaleType.CENTER_INSIDE;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 퍼미션 설정
        permissions = new String[]{
                Manifest.permission.CAMERA,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
        super.onCreate(savedInstanceState);
    }

    @Override
    public void init(Bundle savedInstanceState) {
        super.init(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imageView);

        FontAwesome.applyToAllViews(this,
                findViewById(R.id.activity_main));

        if (savedInstanceState != null) {
            currentImage = savedInstanceState
                    .getInt(KEY_INDEX, 0);
        }

        imageView.setImageResource(images[currentImage]);

        detector = new GestureDetector(this,
                new GestureDetector.SimpleOnGestureListener() {
                    @Override
                    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                        int direction = (int) (e2.getX() - e1.getX());
                        if (direction > 0) {
                            onNext(null);
                        } else {
                            onPrevious(null);
                        }
                        return true;
                    }

                    @Override
                    public boolean onDoubleTapEvent(MotionEvent e) {
                        if (scaleType == ImageView.ScaleType.CENTER_INSIDE) {
                            scaleType = ImageView.ScaleType.CENTER_CROP;
                        } else {
                            scaleType = ImageView.ScaleType.CENTER_INSIDE;
                        }
                        imageView.setScaleType(scaleType);
                        return true;
                    }


                }
        );

        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view,
                                   MotionEvent motionEvent) {
                detector.onTouchEvent(motionEvent);
                return true;
            }
        });


    }

    public void setImageView(){
        byte[] image= null;
        // 파일로부터 이미지 데이터 읽기

        Bitmap bitmap = BitmapFactory.decodeByteArray(image,0,image.length);
        imageView.setImageBitmap(bitmap);

    }


    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(KEY_INDEX, currentImage);
    }

    public void onPrevious(View view) {
        if (currentImage == 0)
            currentImage = images.length - 1;
        else
            currentImage = currentImage - 1;

        imageView.setImageResource(images[currentImage]);
    }

    public void onNext(View view) {
        currentImage = (currentImage + 1) % images.length;
        imageView.setImageResource(images[currentImage]);

    }

    boolean back = false;

   

} 

 

 

붉은 색 바탕의 코딩이 인덱스 결정 후 파일로부터 바이트[] 읽기

, 비트맵 만들기

, 이미지뷰에 비트맵 설정입니다.

 

그런데 그 이후로 어떻게 코딩을 해야 할지 모르겠습니다.

kaliyuga (120 포인트) 님이 2018년 5월 4일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...