본문 바로가기
Android/깡샘의 안드로이드

[깡샘의 안드로이드] 06 뷰를 이용한 화면 구성

by 밤초록 2022. 4. 25.

 

06-1 화면을 구성하는 방법

 

액티비티 - 뷰 구조
pg. 141

 

  • 액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더 4개의 컴포넌트 중 화면을 출력하는 컴포넌트는 액티비티
  • 액티비티가 실행되면서 뷰 클래스를 이용해 화면을 구성, 이를 기기의 화면에 출력

 

 

 

액티비티 코드로 화면 구성하기
pg. 142

 

 

액티비티 코드로 작성

 

  • 화면을 구성하는 뷰 클래스를 액티비티 코드에서 직접 생성
  • 뷰 객체를 코드로 직접 생성, 데이터 일일이 객체에 대입
  • LinearLayout 객체를 액티비티 컴포넌트의 함수인 SetContentView()로 전달해 화면 출력

 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 이름 문자열 출력 TextView 생성
        val name = TextView(this).apply {
            typeface = Typeface.DEFAULT_BOLD
            text = "Lake Louise"
        }
        // 이미지 출력 ImageView 생성
        val image = ImageView(this).also {
            it.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.lake_1))
        }
        // 주소 문자열 출력 TextView 생성
        val address = TextView(this).apply {
            typeface = Typeface.DEFAULT_BOLD
            text = "Lake Louise, AB, 캐나다"
        }
        val layout = LinearLayout(this).apply {
            orientation = LinearLayout.VERTICAL
            gravity = Gravity.CENTER
            // LinearLayout 객체에 TextView, ImageView, TextView 객체 추가
            addView(name, WRAP_CONTENT, WRAP_CONTENT)
            addView(image, WRAP_CONTENT, WRAP_CONTENT)
            addView(address, WRAP_CONTENT, WRAP_CONTENT)
        }
        // LinearLayout 객체를 화면에 출력
        setContentView(layout)
    }
}

 

 

레이아웃  XML 파일로 작성

 

  • View를 XML 태그로 명시해 화면 구성
  • 코드에서 화면을 구현한 XML을 명시해 어떤 화면을 출력할지 알려줘야 함

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Lake Louise"
        android:textStyle="bold" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/lake_1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Lake Louise, AB, 캐나다"
        android:textStyle="bold" />
</LinearLayout>

 

 

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

 

 

화면 구현은 XML 파일로 분리하고,

액티비티에서는 네트워킹, 데이터 핸들링, 사용자 이벤트 처리 등의 코드만 작성하는 것이 더 효율적

 

 

 

06-2 뷰 클래스

 

반응형

댓글