안드로이드 갤러리(Gallery)
java.lang.Object
└ android.view.View
└ android.view.ViewGroup
└ android.widget.AdapterView<T extends android.widget.Adapter>
└ android.widget.AbsSpinner
└ android.widget.Gallery
안드로이드 갤러리란?
갤러리란 뜻은 혼자만의 머릿속에는 존재하지만 누군가에게 설명하기에는 참 애매하더군요. 그래서 백과사전에 한번 찾아 보았습니다.
본문과 상관은 없지만 저는 처음 접한 뜻이라 한번 올려 봤습니다. 이제 진짜로 돌아 가겠습니다.
위키백과에 나와있는 것처럼 안드로이드에서 갤러리도 마치 미술관의 그림들 처럼 이미지들을 한장한장 나열해 놓은 형태를 가지고 있습니다.
안드로이드에서는 여러개의 이미지를 좌우 수평으로 스크롤되는 어댑터 뷰의 일종으로 중간에 현재 선택된 이미지가 보이며 좌측에는 이전이미지 우측에는 이후 이미지들이 표시가 됩니다.
그럼 먼저 안드로이드 갤러리만의 속성을 한번 살펴보도록 하겠습니다.
xml 속성 이름
|
자바 메소드 이름
|
설명
|
android:animationDuration | setAnimationDuration(int) |
layout이 바뀔때 변환되는 애니메이션의 설정시간( 밀리세컨드)
|
android:gravity | setGravity(int) |
샐들의 정렬을 설정.
|
android:spacing
| setSpacing(int) | 간격 설정 |
android:unselectedAlpha | setUnselectedAlpha(float) |
선택되지 않은 녀석들의 알파값 설정
|
그럼 이제 간단한 예제를 통해 좀더 상세히 알아 보도록 하겠습니다. 만들고하 하는 녀석의 결과는 아래와 같습니다.
res/layout/main.xml
접기
<?xml version="1.0" encoding="utf-8"?> <Gallery xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="wrap_content" />
접기
먼저 메인 레리아웃인 main.xml안에 위와 같이 작성합니다. 보시는 바와 같이 전체 화면을 Gallery로 만들었습니다.
HelloGallery.java
접기
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Gallery gallery = (Gallery) findViewById(R.id.gallery); -- ㉠ gallery.setAdapter(new ImageAdapter(this)); -- ㉡ gallery.setOnItemClickListener(new OnItemClickListener() { -- ㉢ public void onItemClick(AdapterView parent, View v, int position, long id) { Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show(); } }); }
접기
㉠ - HelloGallery.java파일 안에 갤러리를 main.xml로 부터 읽어 옵니다.
㉡ - 갤러리에다가 어댑터를 설정합니다. 어댑터의 상세 설정은 하단에 나와 있습니다.
㉢ - 보여지는 갤러리중 하나의 이미지를 선택했을때 어떤 행위를 하기 위해 이벤트를 설정합니다. 지금은 간단히 토스트만 띄웁니다.
res/values/attrs.xml
접기
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="HelloGallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
접기
ImageAdapter.java
접기
public class ImageAdapter extends BaseAdapter { int mGalleryItemBackground; private Context mContext; private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 }; public ImageAdapter(Context c) { mContext = c; TypedArray attr = mContext.obtainStyledAttributes(R.styleable.HelloGallery); mGalleryItemBackground = attr.getResourceId( R.styleable.HelloGallery_android_galleryItemBackground, 0); attr.recycle(); } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(mImageIds[position]); imageView.setLayoutParams(new Gallery.LayoutParams(150, 100)); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setBackgroundResource(mGalleryItemBackground); return imageView; } }
접기
위에 대한 상세 내용들은 이미 앞 포스팅에서 설명을 모두 했습니다. 그러하니 확인하시고 궁금하신 사항들은 댓글로 남겨주시면 되겠습니다.
이로써 자주 쓰이는 어댑터 관련 포스팅을 모두 마치게 되었습니다. 잘 모르겠다 싶은 것들은 다시 한번더 읽어 보시구요. 언제든지 궁금하신 사항들은 댓글로 남겨주시면 최대한 알려드리도록 노력하겠습니다.
출처 : http://jwandroid.tistory.com/241