Nested Class를 만들기 위해서 필요한 과정들..
1 단계 - 그냥 일단 OnClickListener를 implements한다.
public class UIEvent extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button okButton = (Button)this.findViewById(R.id.button);
okButton.setOnClickListener(this);
}
public void onClick(View v) {
TextView textView = (TextView)findViewById(R.id.text);
textView.setText("Green");
textView.setBackgroundColor(0xFF00FF00);
}
}
2단계 - 이것을 Nested 형태로 만든다.
public class UIEvent extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button okButton = (Button)this.findViewById(R.id.button);
OnClickListener h = new MyHandler();
okButton.setOnClickListener(h);
}
class MyHandler implements OnClickListener {
public void onClick(View v) {
TextView textView = (TextView)findViewById(R.id.text);
textView.setText("Green");
textView.setBackgroundColor(0xFF00FF00);
}
}
}
3단계 - 이것을 한 메소드 안에 넣는다.
public class UIEvent extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button okButton = (Button)this.findViewById(R.id.button);
OnClickListener h = new OnClickListener() {
public void onClick(View v) {
TextView textView = (TextView)findViewById(R.id.text);
textView.setText("Green");
textView.setBackgroundColor(0xFF00FF00);
}
}
okButton.setOnClickListener(h);
}
}
4단계 - 이것을 setOnClickListener와 결합할 수 있다.
public class UIEvent extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button okButton = (Button)this.findViewById(R.id.button);
okButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView textView = (TextView)findViewById(R.id.text);
textView.setText("Green");
textView.setBackgroundColor(0xFF00FF00);
}
});
}
}
클래스 구조를 단순화 시킬 수 있다. 이렇게 최적화 하는 과정은 모바일에서 권장!!
CharSequence를 상속받는자들
-String
-StringBuffer
-StringBuilder(5.0부터 추가됨. StringBuffer와 메소드는 동일하나 확장됨. 쓰레드의 연관 여부에 따라서 Buffer와 Builder를 구별하여 사용하는것을 권장)
XxxAdapter는 data를 전달해주는 역할을 하는데,
그 소스는 xml이나 배열, database, file, network 등의 방법을 다양하게 활용이 가능하다.
배열의 특징(in Java)
: 다량의 Data를 저장하는 것이 배열의 특징
배열 - 단점: resize X, 검색, 삭제 알고리즘의 퍼포먼스 낮음
Collection API : 객체들을 저장 및 관리한다, 크기제한 없음(resize O), 검색, 삭제알고리즘 퍼포먼스 높음.
Collection에서는 <> Generic을 쓴다. 그리고 HashMap에서는 키와 밸류 두개가 있기 때문에 <><>두개를 쓴다.
또한 ArrayAdapter에서도 Collection을 상속받은것이기 때문에 Generic을 사용해서 정해야 한다.
<Intent를 쓰는 기법은 다양하다>
Intent : 컴포넌트 연결
Intent i = new Intent(Context c, 수행할 컴포넌트 클래스);
startActivity(i);
=이미 배포된 프로그램을 부를 때 아래의 코드로 쓴다.=
Intent i = new Intent();
ComponentName n = new ComponentName("패키지", "패키지.수행할클래스"); // "" 안에는 컴파일러가 체크를 하지 않는다.
i.setComponent(n);
startActivity(i);
Image는 직접 Adapter 구현을 해 주어야 한다.(따로)
Menu는 크게 세 종류가 있다.
-Options Menu : 메뉴키를 눌러서 나오는 메뉴
-Context Menu : 터치를 길게 해서 나오는 메뉴
-Sub Menu : 메뉴 안에 또 나오는 메뉴
메뉴 키 누를 때 나오는 메뉴를 만드는 방법 : onCreateOptionsMenu(Menu menu)
메뉴를 실행하는 방법 : onOptionsItemSelected(Item item)
컨텍스트 메뉴(화면을 길게)를 눌렀을 때 나오는 메뉴를 만드는 방법 : onCreateContextMenu()
컨텍스트 메뉴를 실행하는 방법 : onContextItemSelected()
컨텍스트 메뉴를 나오게 할 아이템에 등록하는 방법 : registerForContextMenu(getListView())
?? 고민해볼 문제 : Multimedia에서 audio file을 재생하고, 그것을 Activity가 종료되도 계속 살아있게하려면 어떻게 해야하는가!!
(hint:서비스에 등록-상속받아서.)
이 글은 스프링노트에서 작성되었습니다.
'[Developer] > Android' 카테고리의 다른 글
안드로이드 교육 3일차 오후 (0) | 2009.12.09 |
---|---|
안드로이드 교육 3일차 오전 (0) | 2009.12.09 |
안드로이드 교육 2일차 오전 (0) | 2009.12.08 |
안드로이드 교육 1일차 오후 (0) | 2009.12.07 |
안드로이드 교육 1일차 오전 (0) | 2009.12.07 |
댓글