public class MainActivity extends AppCompatActivity {
private final int GET_GALLERY_IMAGE = 200;
private ImageView imageview;
private Button pickButton;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pickButton = (Button)findViewById(R.id.pickButton);
pickButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, GET_GALLERY_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 화면 가로축의 크기를 구함
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
final int screenWidth = displayMetrics.widthPixels;
// 이미지 리사이즈와 썸네일 크기 계산을 위한 변수 선언
final int THUMBNAIL_SIZE = (int) (screenWidth / 3.45);
// final float THUMBNAIL_RATIO = 1/3f;
Log.d("하면 사이즈", String.valueOf(screenWidth)+ "/" + String.valueOf(THUMBNAIL_SIZE));
super.onActivityResult(requestCode, resultCode, data);
LinearLayout linearLayout = findViewById(R.id.linear_layout); // 이미지뷰를 추가할 레이아웃
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0, 0, 16, 0); // 이미지뷰 간의 간격 설정
layoutParams.gravity = Gravity.CENTER; // 가운데 정렬
if (requestCode == GET_GALLERY_IMAGE && resultCode == RESULT_OK && data != null) {
ClipData clipData = data.getClipData();
if (clipData != null) {
// 여러 이미지 선택
// 이미지뷰 묶음을 담을 수평 레이아웃 생성
LinearLayout horizontalLayout = null;
for (int i = 0; i < clipData.getItemCount(); i++) {
Uri selectedImageUri = clipData.getItemAt(i).getUri();
Log.d("이미지 경로", String.valueOf(selectedImageUri));
ImageView imageView = new ImageView(this);
// 이미지뷰에 Glide를 이용하여 이미지 설정
Glide.with(this)
.load(selectedImageUri)
// .thumbnail(THUMBNAIL_RATIO) // 원본 이미지의 1/3 크기로 썸네일 생성
.override(THUMBNAIL_SIZE, THUMBNAIL_SIZE) // 가로와 세로 크기가 screenWidth/3 픽셀인 이미지 생성
.centerCrop()
.into(imageView);
// 3열로 출력하기 위해 이미지뷰 묶음을 담을 수평 레이아웃 생성
if (i % 3 == 0) {
horizontalLayout = new LinearLayout(this);
horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.addView(horizontalLayout);
}
// 이미지뷰를 수평 레이아웃에 추가
horizontalLayout.addView(imageView, layoutParams);
}
} else {
// 하나의 이미지 선택
Uri selectedImageUri = data.getData();
ImageView imageView = new ImageView(this);
Log.d("이미지 경로", String.valueOf(selectedImageUri));
imageView.setImageURI(selectedImageUri); // 이미지 설정
linearLayout.addView(imageView); // 레이아웃에 이미지뷰 추가
}
}
}
}