본문 바로가기

모바일/안드로이드

[Android Studio] Widget

Android widget

  • 부모 클래스는 android.view.View
  • id 등의 각종 기본 기능이 View 클래스에 구현되어 있음
  • Android의 모든 Widget과 Layout들은 View의 자식 타입
  • int형의 아이디를 가질 수 있으며 width, height에 대한 설정을 가짐
  • 클릭, 터치 등의 이벤트를 받을 수 있음
  • xml 파일에서 정의하는 대부분의 속성은 java 코드로 제어 가능하며 주로 get/set 함수를 사용
  • java 코드에서 위젯을 제어하기 위해서는 id 값이 반드시 필요
  • onCreate()의 setContentView() 함수 호출 이후에 각 위젯 사용 가능
  • setContentView 함수가 모두 실행된 후 각 위젯들의 객체가 메모리 상에 잡힘
    -> 이를 하나씩 불러 사용하는데 이 때 사용하는 함수가 findViewById
package org.testand.helloworld;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
 	 private TextView textView;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         
         textView = findViewById(R.id.textView);
         textView.setText(“Hello World!!”);
     }
 }

 

TextView

  • 정해진 문자열을 출력하는 위젯
  • 문자열을 지정하는 android:text 속성을 가짐
  • 레이아웃에서 하드코딩해서 지정할 수도 있으며 string 리소스의 아이디로 지정할 수 있음
  • 최종 버전은 다국어 지원 및 품질을 위해 string 리소스를 사용하는 코드로 변환하여 사용하는 것이 좋음

 

 

사용자 이벤트 처리

위젯들은 사용자의 이벤트(클릭, 드래그 등)를 처리

 

사용자가 버튼을 누른 시점을 아는 방법

1. Polling : 짧은 간격을 두고 상태를 주기적으로 확인하는 방법

2. Callback : 리스너 함수를 등록시킨 후 특정 이벤트 발생 시 등록된 함수를 호출해 달라고 하는 방법

 

리스너를 구현하는 방법

1. Activity가 interface를 implement 하는 방법

2. Interface type의 익명 객체 리스너를 추가하는 방법

3. Interface type의 객체를 사용하는 방법

4. Interface를 implement한 별도의 클래스를 구현해 사용하는 방법 (잘 사용하지 않음)

5. 클릭 이벤트에 한해: Activity에 지정된 양식의 함수를 만들어 사용하는 방법