본문 바로가기

TIL

[TIL]20230803 - 3일차

[오늘 배운 내용]

1. R.java파일

  • kotlin view empty projcet 생성 시 MainActivity.kt에 다음과 같이 기본적으로 생성된다.
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

R.layout.activity_main에서 R이 어떤 것을 의미하는지 궁금했었다.

해당 부분은 애플리케이션이 컴파일 될 때, 자동 생성되고 res 디렉토리에 있는 모든 리소스에 대한 리로스 ID를 포함한다고 하는데 이때 형식이 R.[리소스유형].[리소스이름] 으로 생성된다고 한다.

 

2. 액티비티 이동

내가 지정한 버튼 클릭 시 지정한 엑티비티로 이동하는 기능을 알게되었다

  • Activity
    앱의 단일 화면 앱은 여러개의 Activity로 구성 될 수 있다.
  • Intent
    안드로이드 기본 구성 요소 간의 통신을 위해 사용되는 메세지 객체

Intent를 사용해서 Activity를 이동하는 방법은, 명시철 호출과 암시적호출로 이동할 수 있다.

  • 명시적 호출
    같은 앱 내의 Activity 를 실행하는 것
  • 암시적 호출
    작업 유형을 정하고 해당 작업이 가능한 구성 요소를 호출하는 것
    ex ) 음악을 재생하려고 할 때 기본 앱, 또는 음악 플레이어 앱 등으로 선택하여 실행하게 하는 것
// SignInActivity로 화면 이동
        btnSignIn.setOnClickListener {
            val intent = Intent(this,SignInActivity::class.java)
            startActivity(intent)
        }

btnSignIn 으로 생성해둔 버튼을 누르면 미리 생성해둔 SignInActivity 로 이동하며

 

val intetn ~ start...(intent) 로 적지 않고 아래 처럼 작성한 코드도 같은 코드다.

startActivity(Intent(this,SignInActivity::class.java))

3. 토스트 중복 방지 처리

토스트는 Android Studio 에서 아래에 올린 사진처럼 앱 화면 하단에 내가 지정한 문구를 일정 시간동안 표시해주는 기능이다.

토스트 기능은 사용자가 특정 상황 또는 특정 행위를 했을 시 알림을 통해 원활하게 사용할 수 있게 도와주는데, 해당 기능을 중복으로 사용하였을 때, 토스트가 중복으로 생성되어버리면 해당 창이 사라지기 까지 시간이 오래 소요될 수 있다

때문에 중복하여 토스트 알람이 나타나지 않게끔 처리하는 방법을 알아보았다.

비밀번호를 입력하지 않은 상태에서 로그인 버튼을 클릭했을 때

토스트를 중복방지 처리는 아래 코드로 처리 했다.

oncreate 밖에 해당 기능을 추가해야 정상적으로 작동 된다.

- 해당 부분은 왜 oncreate 밖에서 작성해야만 하는지 정확한 이유가 궁금한데, 오늘은 시간이 없어서 메모 해두고 추후에 다시 알아봐야겠다.

private var toast: Toast? = null
    private fun makeToast(message: String) {
        toast?.cancel()
        toast = Toast.makeText(applicationContext, message, Toast.LENGTH_SHORT)
        toast?.show()
    }

null인 상태에서 토스트를 지정해두고, makeToast로, 토스트창을 호출하게 될 때, toast?.cancel() 을 통해서 기존에 있던 토스트 창을 없애고 난 뒤에, 토스트 창을 띄워주도록 하였다.

 


 

[오늘 복습한 내용]

1.Android 스튜디오 UI

  • UI에서 레이아웃 별로 상이한 기능에 대해서 다시 한번 복습해보았다.

Linear Layout

  • 리니어 레이아웃은 가로 세로로 순서대로 쌓을 수 있는 레이아웃이다
  • 가로축, 세로축 지정은 각각 horizontal,vertical 으로 설정할 수 있다 (design탭에서 생성하는게 편하다)
android:orientation="vertical" or "horizontal"
  • 또, 리니어 레이아웃은 위젯을 중첩하게 생성이 불가능하다

btn2는 gravity=centerhorizontal ,btn3는 gravity=right

Relative Layout

  • 관계 레이아웃은 디자인탭에서 생성하는 게 없어서 <RelativeLayout></RelativeLayout> 을 직접 쳐서 생성했다.
  • 관계 레이아웃은 디자인탭에서 위젯을 편하게 움직일 수 없는 것 같다 코드탭에서 작성하는 게 편한 레이아웃 느낌이다
  • below, align , toStart 등으로 위젯끼리의 관계를 설정해줌으로써 레이아웃에 자리하므로 따로 관련 문법을 공부하지 않으면 사용하기 어려울 것 같다.

BUTTON5를 우측 상단에 밀착 해놓고, BUTTO4를 BUTTON5 좌측으로 마진을 두고 위치하게 지정, BUTTON6은 btn4 하단에 위치함

Constraint Layout

  • 제약조건 레이아웃은 위젯이 위젯서로의 위치 또는 레이아웃과의 조건을 통해서 위젯의 위치를 만들어 낼 수 있는 레이아웃이다.
  • 디자인 탭 만으로도 간단하게 위젯의 위치를 지정할 수 있는 것이 관계 레이아웃보다 많이 편리한 레이아웃이다
  • 실제로 구글에서도 Contraint Layout사용을 권장하고 있나 레이아웃 생성 시 기본적으로 Contraint Layout 이 생성된다

BUTTON 7을 중앙에 위치하도록 하고, BUTTO8을 BUTTON7 옆에 위치 시키고 좌측 마진을 넣어줌

2. OOP 부분도 복습했는데... 막상 글을 써보려고 하니까 생각이 나질 않는다.조금 더 복습한 뒤에 작성해보도록 해야겠다.

 


[오류,에러 등등]

res/values/colors.xml에서 컬러값을 설정하는데 #을 빼놓고 FF0000 이렇게 써놓고 왜 컬러가 호출이 안되는지 의아해하고 있었다... 그 와중에 color 관련 플러그인을 깔면 해결될 수 있을까 하고 플러그인도 설치 해보았는데 그제서야 #이 보였다. 사소한 부분에 조금 더 신경을 써봐야겠다

 

 


[느낀 점 ]

1. 크롬창을 여러개 띄어두고 작업해서 그런가, 에뮬레이터를 키지 않아도 버벅여서 불편했다 최적화를 해두고 작업하는 습관을 들여야겠다.

 

2. 이미 보았던 강의를 여러본 보게 된다. 강의를 1회독 할 때, 그냥 들으려고만 하지말고, 온라인 강의의 장점을 이용해서 조금 더 많은 정보가 필요하다고 생각될 때에는 일시정지를 해두고나서 의문이었던 부분을 정리하고, 필요하다면 완벽하게 이해한 뒤 다음 강의내용에 접근해도 좋을 것 같다.

 

3. 조바심 갖는 만큼 집중하는 시간을 더 늘려나가고, 언제 어떻게 어느것을 학습할 지 큰 틀을 계획하고 계획한 것을 잘 이행할 수 있도록 노력해야겠다.

'TIL' 카테고리의 다른 글

[TIL] 20230809  (0) 2023.08.09
[TIL] 20230808 5일차  (0) 2023.08.08
[TIL] 20230804 - 4일차  (0) 2023.08.05
[TIL] 20230802 - 2일차  (0) 2023.08.02
[TIL] 20230801 - 블로그 시작 등...  (0) 2023.08.01