본문 바로가기
[Developer]/Android

안드로이드 교육 2일차 오후

by 반가운 해피빈이 2009. 12. 8.

 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:서비스에 등록-상속받아서.)

이 글은 스프링노트에서 작성되었습니다.

댓글0