package com.ihateflyingbugs.kidsm.menu; import java.util.ArrayList; import com.ihateflyingbugs.kidsm.BaseItem; import com.ihateflyingbugs.kidsm.R; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; class MenuDoButton extends BaseItem { int Type; Drawable iconImage; Drawable selectedImage; View layout; boolean measured; public MenuDoButton(String name, Drawable iconImage, Drawable selectedImage) { if(name == null) { Type = 0; } else { setName(name); this.iconImage = iconImage; this.selectedImage = selectedImage; Type = 1; } } } class MenuDoAdapter extends BaseAdapter { LayoutInflater mInflater; ArrayList<MenuDoButton> arSrc; Context context; public MenuDoAdapter(Context context, ArrayList<MenuDoButton> arItem) { mInflater = (LayoutInflater)context.getSystemService( Context.LAYOUT_INFLATER_SERVICE); this.context = context; arSrc = arItem; } public int getCount() { return arSrc.size(); } public MenuDoButton getItem(int position) { return arSrc.get(position); } public long getItemId(int position) { return position; } public int getItemViewType(int position) { return arSrc.get(position).Type; } // getView�� �����ϴ� ���� ������ �����Ѵ�. �׻� ���� �並 �����ϸ� 1�� �����Ѵ�. // �� �޼��忡�� ������ ����� ������ ���� ������ �ٿ�ȴ�. public int getViewTypeCount() { return 2; } public View getView(int position, View convertView, ViewGroup parent) { // ���� ȣ���̸� �׸� �並 �����Ѵ�. // Ÿ�Ժ��� �並 �ٸ��� �������� �� ������ ���̰� �޶� �������. if (arSrc.get(position).layout == null) { int res = 0; switch (arSrc.get(position).Type) { case 0: res = R.layout.linear_for_space; arSrc.get(position).layout = mInflater.inflate(res, parent, false); final View cv = arSrc.get(position).layout; final View pv = parent; arSrc.get(0).layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { if(arSrc.get(0).measured == false) { DisplayMetrics displaymetrics = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int[] above = new int[2]; arSrc.get(0).layout.getLocationOnScreen(above); height -= above[1]; height -= (arSrc.size()-1)*arSrc.get(0).layout.getMeasuredHeight(); ((LinearLayout)cv).getLayoutParams().height = (height - 15)/2; pv.getLayoutParams().height = height + (arSrc.size()-1)*arSrc.get(0).layout.getMeasuredHeight(); arSrc.get(0).measured = true; } } }); break; case 1: res = R.layout.menu_dobutton; arSrc.get(position).layout = mInflater.inflate(res, parent, false); break; } if(position == 0) { if (Build.VERSION.SDK_INT >= 16) arSrc.get(position).layout.setBackground(arSrc.get(position).selectedImage); else arSrc.get(position).layout.setBackgroundDrawable(arSrc.get(position).selectedImage); } // �׸� �並 �ʱ�ȭ�Ѵ�. switch (arSrc.get(position).Type) { case 1: TextView txt1 = (TextView)arSrc.get(position).layout.findViewById(R.id.menu_dobutton_text); txt1.setText(arSrc.get(position).getName()); ImageView icon = (ImageView)arSrc.get(position).layout.findViewById(R.id.menu_dobutton_image); icon.setImageDrawable(arSrc.get(position).iconImage); break; } } return arSrc.get(position).layout; } }