안드로이드 개발 질문/답변
(글 수 45,052)
public class Main extends Activity(){
이미지 클릭 했을 때
Intent intent = new Intent (Main.this,Gallery.class);
startActivity(intent)
}
public class Gallery extends Activity(){
private Gallery mGallery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery);
mGallery = (Gallery)findViewById(R.id.gallery);
mGallery.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter{
int mGalleryItemBackground;
private Context ctx ;
private RNoteAddAndEditActivity note = new RNoteAddAndEditActivity();
private List<Bitmap> imageList = note.imageViewList;
RNoteAddAndEditActivity 안의 static 전역변수인 imageViewList를 호출한 부분입니다
public ImageAdapter(Context c) {
ctx = c;
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
mGalleryItemBackground = a.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
public int getCount() {
return imageList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Gallery.LayoutParams imgParam = new Gallery.LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
ImageView image = new ImageView(ctx);
image.setImageBitmap(imageList.get(position));
image.setLayoutParams(new Gallery.LayoutParams(imgParam));
image.setScaleType(ImageView.ScaleType.FIT_XY);
image.setBackgroundResource(mGalleryItemBackground);
return image;
}
}
}
처음에는 인텐트로 Gallery 클래스 불러올때 ImageView 리스트를 putExtra 해보려고 했으나
방법을 찾지 못하여서 Gallery클래스를 호출하는 클래스에 static 전역변수로 설정해버렸습니다..+_+
암튼.. 이 부분은 좀더 연구를 해봐야 할것 같은데요.
제가 궁금한거는 이런식으로 이미지들 클릭했을때 Gallery클래스 호출하여 List에 있는 이미지들이 보이는데요.
1. 궁금한것 / 클릭한 이미지를 먼저 포커스 하는 방법을 알고싶습니다. (어느 사진을 클릭해도 첫번째 사진이 Gallery에 보여서..)
gallery 지금 위의 클래스를 호출하기 전에 이미지를 클릭해서 클릭한 이미지를 포함하고 있는 ImageList를
gallery에서 보여주는데요. 클릭된 이미지를 먼저 포커스잡히게 해주고 싶은데
어떻게 해야 하나요 ? ㅜㅜ
현재 Main 액티비티에서 Intent로 Gallery 액비티비 호출 하구 있구요.
이미지를 클릭했을때 Gallery 가 호출 되어서 클릭된 이미지를 포함하는 List를 Gallery로 나타내는 형식입니다.
Gallery에서 보여주는 이미지를 클릭된 것으로 포커스를 주고 싶은데 방법이 있을까요 ?
아 그리고 ImageAdapter 에 getView 파라미터로 들어오는 position 값은 랜덤인가요?
이미지 개수랑 상관있는줄 알았는데.. 로그로 찍어본 결과 이미지 개수랑 상관없이
position이 (0 , 1 ) 두 숫자만 번갈아가면서 찍히더라구요..




일단 연구 부분에 대해서는 Bitmap 객체는 parcel 화가 가능하기에 intent로 넘겨주는게 가능합니다.
parcel에 관해서는 공식 홈페이지 찾아보세요. 그리고 List는 putExtra 말고 List용 함수가 따로 존재합니다.
포커스에 관해서는 focusable 속성을 이미지외에는 false로 하면 간단히 가능합니다.
(틀릴지도 모르기에 만약 아니면 안드로이드 공식사이트에 들어가셔서 리스트 뷰와 focus에 관한 글보시면 됩니다.)
getView position은 리스트뷰에 뿌려줄 view의 위치입니다.