<dimen name="text_size">10sp</dimen> <!--getResources() method를 이용해 Resource 객채를 얻어오고 Resource 객체에 getDimension() method를 이용해 참조할수있다 setTextSize() method를 이용해 float pixel값으로 return받는다 -->
DemoButton.java
public class DemoButton extends AppCompatButton {
//소스코드에서 new연산자를 이용하여 생성하는경우 사용하는 생성자 public DemoButton(Context context){ super(context); init(context); } //생성자 생성 //안드로이드 UI 객체를 생성시에는 //반드시 Context를 인자로 사용한다
//view를 xml layout에 추가하는경우 사용하는 생성자 public DemoButton(Context context, AttributeSet attrs){ super(context, attrs); init(context); } //생성자 생성 //AttributeSet을통해 xml에 추가된 속성을 전달 받는다
//초기화를 위한 method private void init(Context context){ setBackgroundColor(Color.CYAN); setTextColor(Color.GREEN); //text size 지정 float size = getResources().getDimension(R.dimen.text_size); setTextSize(size); } //view가 화면에 그려질때 자동으로 호출되는 method protected void onDraw(Canvas canvas){ super.onDraw(canvas); Log.d("DemoButton", "onDraw()"); //onDraw호출되는 시점을 출력하기위해 } //view가 터치될때 호출되는 method public boolean onTouchEvent(MotionEvent event){ Log.d("DemoButton", "onTouchEvent()"); int action = event.getAction(); switch(action){ case MotionEvent.ACTION_DOWN: setBackgroundColor(Color.GREEN); setTextColor(Color.MAGENTA); break; case MotionEvent.ACTION_OUTSIDE: case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: setBackgroundColor(Color.MAGENTA); setTextColor(Color.GREEN); break; } invalidate(); //설정된 값으로 다시 그려준다(onDraw() 호출) return true; } }
public class CustomAdapter extends BaseAdapter { //BaseAdapter를 상속받는다 private Context mContext; private int[] data; public CustomAdapter(Context mContext, int[] data){ this.mContext = mContext; this.data = data; }
public int getCount(){ return data.length; }//getCount method를 통해 data의 갯수를 얻어온다 public Object getItem(int position){ return data[position]; } public long getItemId(int position){ return position; }
public class GridItemView extends LinearLayout { ImageView imageView; TextView textView; public GridItemView(Context context){ super(context); init(context); } public void init(Context context){ LayoutInflater inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.item_style, this, true); imageView = findViewById(R.id.imgView); textView = findViewById(R.id.txtView); } public void setImage(int resId){ imageView.setImageResource(resId); } public void setApple(String apple){ textView.setText(apple); } }
CustomAdapter.java
public class CustomAdapter extends BaseAdapter { //BaseAdapter를 상속받는다 private Context mContext; ArrayList<Grid_item> data = new ArrayList<Grid_item>(); public CustomAdapter(Context mContext){ this.mContext = mContext; }
public void addItem(Grid_item grid_item){ data.add(grid_item); }
public int getCount(){ return data.size(); }//getCount method를 통해 data의 갯수를 얻어온다 public Object getItem(int position){ return data.get(position); } public long getItemId(int position){ return position; }
public View getView(int position, View convertView, ViewGroup parent){