Android : activity_main.xmlの構成

21464 ワード

/app/src/main/res/layout/activity_main.xmlは、ビューを構成する要素である.
ビュー、Activity、Fragmentとは?
ビュー画面の基本UI要素を区別し、すべてのUI要素はViewクラスのサブクラスWidgetとLayoutで区切られ、WidgetはButton、TextView、CheckBoxなどのビジュアルUI要素を表す.Layoutは画面上では見えませんが、他のビューではコンテナです.1つの画面に、1つの画面に密接に関連する2つ以上の独立した実行モジュール分割アクティビティを構成します.
activity_main.xmlの構成
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="say Hello to"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" 
			android:id="@+id/sayHello" 
            tools:ignore="HardcodedText"
    />
  
    <Button
            android:text="@string/butter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:id="@+id/butter"
            tools:ignore="MissingConstraints"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="258dp"
            android:layout_marginTop="50dp"
            app:layout_constraintTop_toBottomOf="@+id/sayHello"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="160dp"
            android:layout_marginEnd="160dp"
            app:layout_constraintEnd_toEndOf="parent"
    />


</androidx.constraintlayout.widget.ConstraintLayout>
TextViewはテキストボックス、Buttonはボタンを表します.
MainActivity.kt
package com.test.androidstudy

import android.content.ContentValues
import android.content.DialogInterface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AlertDialog

class MainActivity : AppCompatActivity() {

    // val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {

        /*  biding을 사용한다면
            setContentView(R.layout.activity_main)
            setContentView(binding.root)

            binding.btnSay.setOnClickListener {
                Log.i(ContentValues.TAG, "btnSay Tapped")
                binding.sayHello.text = "Hello World!"
            }
        */
        super.onCreate(savedInstanceState)

        // layout에 있는 activity_main.xml로 화면 정의
        setContentView(R.layout.activity_main)

        val sayHello:TextView = findViewById(R.id.sayHello)
        val butter = findViewById<Button>(R.id.butter)

        // 이벤트 추가
        butter.setOnClickListener {
            sayHello.text = "What a nice Android World!"

            // Toast 만들기
            val toast = Toast.makeText(this.applicationContext, "button tapped", Toast.LENGTH_SHORT)
            toast.show()    // 토스트 보여주기

            // Alert 보여주기
            AlertDialog.Builder(this@MainActivity)
                .setTitle("Welcome to the Android World!")
                .setMessage("안드로이드 세계에 오신것을 환영합니다!!")
                .setCancelable(false)
                .setNeutralButton("닫기", DialogInterface.OnClickListener {
                    dialog, which -> // 닫기버튼을 눌렀을 때 처리할 로직을 넣어줍니다.
                }).show()
        }

    }

    override fun onStart() {
        super.onStart()
        Log.i(ContentValues.TAG, "onStart 실행")
    }

    override fun onResume() {
        super.onResume()
        Log.i(ContentValues.TAG, "onResume 실행")
    }

    override fun onRestart() {
        super.onRestart()
        Log.i(ContentValues.TAG, "onRestart 실행")
    }

    override fun onPause() {
        super.onPause()
        Log.i(ContentValues.TAG, "onPause 실행")
    }

    override fun onStop() {
        super.onStop()
        Log.i(ContentValues.TAG, "onStop 실행")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.i(ContentValues.TAG, "onDestroy 실행")
    }
}