현재는 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;
}
붉은 색 바탕의 코딩이 인덱스 결정 후 파일로부터 바이트[] 읽기
, 비트맵 만들기
, 이미지뷰에 비트맵 설정입니다.
그런데 그 이후로 어떻게 코딩을 해야 할지 모르겠습니다.