[Android] IntelliJ #1 setting&button

현지·2022년 1월 28일
0

프로젝트 생성하기

  1. android를 선택한 후 Empty Activity를 선택한다.

  1. 프로젝트 이름과 경로를 지정해준다. 언어는 Java, Kotlin중에 Kotilin으로 할 것이다.

  1. 완료를 누르고 기다린다.

생성된 후

✔️안드로이드 태블릿을 직접 연결하여 에뮬레이터 없이 사용할 예정입니다

  1. 초기화면

  1. 상단에 초록색 삼각형 버튼(실행 버튼)을 처음 누르면 아래와같이 build가 생성된다.

  1. MainActivity
    확인하기 위한 기본 함수들을 추가한다. 아래 사진처럼 들어가서 검색하면 함수들을 검색해서 불러올 수 있다.
    각 함수들이 언제 사용되는지 알아보기 위해 앱을 끄고, 켜고, 재실행을 하면서 로그를 확인한다.
package com.example.myapplication1

import android.content.ContentValues
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

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

    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 실행")
    }
}
  • 태블릿 화면

버튼 만들기

activity_main.xml

  • 우측 상단에 코드와 디자인 원하는 것으로 볼 수 있다.
    button을 끌어다가 추가한다.

  • 동그라미 모양을 끌어서 위치를 고정시켜야 한다.

  • text에는 textSay, button에는 btnSay라는 id를 지정해준다.
<?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:id="@+id/textSay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    <Button
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/btnSay"
            app:layout_constraintTop_toBottomOf="@+id/textSay" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginTop="60dp" android:layout_marginStart="252dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity

#1 기본 방법

버튼을 누르면 textSay 글자 변경, Toast생성, alert창 나옴

package com.example.myapplication1

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

class MainActivity : AppCompatActivity() {

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

        val textSay = findViewById<TextView>(R.id.textSay)
        val btnSay = findViewById<Button>(R.id.btnSay)

        btnSay.setOnClickListener {
            textSay.text = "Hello Android!!"

            //Toast
            val toast = Toast.makeText(this.applicationContext, "버튼 클릭", Toast.LENGTH_SHORT)
            toast.show()    //이거 안 하면 안 보임

            //AlertDialog
            AlertDialog.Builder(this@MainActivity)
                .setTitle("welcome")    //title setting
                .setMessage("어서오세요")    //message setting
                .setCancelable(false)   //화면을 누르거나 뒤로가기를 눌러도 사라지지 않음, 버튼으로 종료해야 함
                .setNeutralButton("닫기", DialogInterface.OnClickListener { dialog, which ->
                    //닫기버튼을 클릭시!
                }).show()
        }
    }
}
  • 태블릿 화면

#2 lazy 이용

=> setContentView(R.layout.activity_main) 대신 setContentView(binding.root) 사용
=> 객체화를 시켜주기 때문에 접근하기 유용함

*build.gradle 추가

아래처럼 추가한 후, sync now를 누른다.

    buildFeatures {
        viewBinding true
    }

  • MainActivity
package com.example.myapplication1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication1.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

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

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(binding.root)

        binding.btnSay.setOnClickListener {	//버튼은 눌렀을 때
            println("btnSay click")
            binding.textSay.text = "Hello Android!!"	//textSay의 문자를 변경한다.
        }
    }
}
  • 태블릿 화면

0개의 댓글