activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:numColumns="4"/>
</LinearLayout>
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivPoster"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
package com.example.project11_1;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("그리드뷰 영화 포스터");
final GridView gv = (GridView) findViewById(R.id.gridView1);
MyGridAdapter gAdpater = new MyGridAdapter(this);
gv.setAdapter(gAdpater);
}
//GridLayout을 이용하기 위해서는 BaseAdapter를 extends 해줘야 한다.
public class MyGridAdapter extends BaseAdapter {
Context context;
public MyGridAdapter(Context c){
context = c;
}
@Override
public int getCount() {
return postID.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
Integer[] postID={
R.drawable.gae,R.drawable.job,R.drawable.kill,R.drawable.king,R.drawable.legend,
R.drawable.lion,R.drawable.monster,R.drawable.ring,R.drawable.time,R.drawable.gae,R.drawable.job,R.drawable.kill,R.drawable.king,R.drawable.legend,
R.drawable.lion,R.drawable.monster,R.drawable.ring,R.drawable.time,R.drawable.gae,R.drawable.job,R.drawable.kill,R.drawable.king,R.drawable.legend,
R.drawable.lion,R.drawable.monster,R.drawable.ring,R.drawable.time
};
String[] postNAME={
"위대한 개츠비","극한직업","암살","광해","레전드","사자","괴물","반지의 제와","어바웃 타임",
"위대한 개츠비","극한직업","암살","광해","레전드","사자","괴물","반지의 제와","어바웃 타임",
"위대한 개츠비","극한직업","암살","광해","레전드","사자","괴물","반지의 제와","어바웃 타임"
};
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageview = new ImageView(context);
// 이미지뷰의 크기를 200x300로 크기를 지정했다.
imageview.setLayoutParams(new GridView.LayoutParams(200,300));
// 이미지뷰를 각 그리드뷰 칸의 중앙에 배치한다.
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
// 영화 포스트가 너무 빽빽하지 않도록 공백을 적당히 설정한다.
imageview.setPadding(5,5,5,5);
// 이미지뷰에 영화 포스터 1개(파라미터로 넘어온 position 위치)를 적용한다.
final int pos = position;
imageview.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
View dialogView = (View) View.inflate(MainActivity.this,R.layout.dialog,null);
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
ImageView ivPoster=(ImageView) dialogView.findViewById(R.id.ivPoster);
ivPoster.setImageResource(postID[pos]);
dlg.setTitle(postNAME[pos]);
dlg.setIcon(R.drawable.ic_launcher_foreground);
dlg.setView(dialogView);
dlg.setNegativeButton("닫기",null);
dlg.show();
}
});
imageview.setImageResource(postID[position]);
return imageview;
}
}
}
실행 화면
'안드로이드 > 연습' 카테고리의 다른 글
[Android] 간단 MP3 플레이어 만들기 (0) | 2021.08.29 |
---|---|
[Android] 가수 그룹 관리 DB 만들기 (0) | 2021.08.29 |
[Android] ListView (0) | 2021.08.27 |
[Android] 새로운 액티비티 추가하기 (0) | 2021.08.26 |
[Android] 간단 그림판 (0) | 2021.08.26 |