쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 메소드
  • workmanager
  • 리사이클러뷰
  • 자료구조
  • DataBinding
  • 코틀린
  • 알고리즘
  • Room
  • 컴포즈
  • compose
  • Kotlin
  • 코드업100제
  • 자바
  • Adapter
  • 변수
  • 프로젝트회고
  • 객체지향
  • 백준
  • 상속
  • livedata
  • 코틀린코테
  • 배열
  • 코딩테스트
  • Jetpack
  • mvvm
  • 기초100제
  • 코테
  • Android
  • ViewModel
  • AAC

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[Android] Activity전환과 ViewBinding
Android/Basic

[Android] Activity전환과 ViewBinding

2022. 4. 13. 23:59

Activity

액티비티는 Application을 구성하는 기본 단위이며 사용자와 상호작용하는 UI를 표시해주는 요소이다.

또한,

앱이 실행될 때 화면에 UI를 표시하고, 사용자의 클릭이나 입력 등의 이벤트를 처리하는 역할을 해준다.

 

Fragment

UI구성을 모듈 단위(조각)으로 나누어 독립성을 추가해주고,
한 화면에 있던 UI 들을 조각이라는 단위로 재배치하는 것.

Activity와 Fragment 둘 모두 노출되고 클릭되어지기 때문에 사용자와 상호작용하는 공통점이 있다.

 

오늘은 FLO앱에서 MainActivity에 있는 음악을 누르면 SongActivity로 전환하는 것을 구현해보자.

먼저 액티비티 클래스를 생성해주면 다음과 같이 AppCompatActivity를 상속받아야한다.

class MainActivity : AppCompatActivity() 

자바에서는 extends를 통해 상속받았지만 코틀린에서는 : 콜론을 통해 상속받는다.

이렇게 액티비티 클래스를 만들어주면 주의해야할 점이 있다!

manifest.xml파일에 속성을 다음과같이 꼭 추가해주어야한다!!

<activity android:name="com.example.flo.SongActivity"/>

 

그 다음 xml파일에 있는 액티비티.xml에 접근하기 위해서는 binding을 사용해야한다.

binding이 나오기 전에는 findViewById를 사용해서 xml파일에 접근하였다.

val textView = findViewById<TextView>(R.id.main_player_cl) 
textView.text = "dd"    

이렇게 해당 뷰의 값을 변경할 수 있다.

 

하지만!!

여러 개의 뷰들을 만들고 나면 하나하나 연결해주기 위해 많은 변수를 사용할 수 밖에 없었고,

NullPointException오류가 자주 발생하였다.

이러한 문제들을 해결하기 위해 Binding이 등장했다!!

 

먼저 뷰바인딩을 사용해주기 위해!! build.gradle파일에 다음과 같이 적어주어야한다.

viewBinding {
    enabled true
}

그 다음!

다음 코드와 같이 binding을 전역변수로 선언해주고 콜론을 적어준 뒤 xml파일을 카멜케이스로 적어준다.

xml파일을 연결하는 코드이다.

lateinit var binding: ActivityMainBinding
binding = ActivityMainBinding.inflate(layoutInflater) //바인딩 초기화
setContentView(binding.root)

binding.mainPlayerCl.setOnClickListener {
    startActivity(Intent(this, SongActivity::class.java))// intent 하나의 액티비티에서 사용되는 택배상자
    //this -> song액티비티로 전달.
}

AppCompatActivity클래스를 상속받아 onCreate를 오버라이딩하였다.

onCreate는 액티비티가 실행될 때 처음 실행되는 함수이다.

 

따라서 onCreate함수 안에 xml의 메모리를 객체화 시켜주는 메소드인 inflate를 실행시켜준 다음 binding에 초기화해준다.

다음 xml파일을 초기화한 binding을 해 xml파일에 있는 모든 것을 마음대로 쓸 수 있게 해주기위해

setContentView와 root(xml파일의 최상단 뷰)를 이용하였다.

 

binding을 초기화 했으면 위 그림과 같이 binding.(xml파일 접근하고싶은 id).(메소드) 이렇게 접근할 수 있다.

또한 startActivity메소드와 intent를 사용하여 현재 있는 액티비티(this)에서 이동하고 싶은 액티비티 파일을 적어주어

액티비티간의 전환을 구현하였다.

 

이미지 변환

액티비티의 전환뿐만 아니라 위 그림과 같이 이미지변환을 해보자.

binding.songMiniplayerIv.setOnClickListener {
    setPlayerStatus(false)
}

binding.songPauseIv.setOnClickListener {
    setPlayerStatus(true)
}
fun setPlayerStatus (isPlaying : Boolean){
    if(isPlaying){
        binding.songMiniplayerIv.visibility = View.VISIBLE
        binding.songPauseIv.visibility = View.GONE
    } else {
        binding.songMiniplayerIv.visibility = View.GONE
        binding.songPauseIv.visibility = View.VISIBLE
    }
}

binding을 통해 각 버튼에 접근한 뒤,

플레이 버튼을 눌렀을 때에는 플레이어버튼의 View를 GONE상태로 변환해주고, 

일시정지 버튼을 눌렀을 때에는 일시정지버튼의 View를 GONE상태로 변환해주었다.

저작자표시 (새창열림)

'Android > Basic' 카테고리의 다른 글

[Android] Fragment과 Toast message  (0) 2022.04.15
[Android] Redeclaration Error  (0) 2022.04.14
[Android] ConstraintLayout, Chain 설정  (0) 2022.04.12
[Android] View와 Layout  (0) 2022.04.11
[Android] 안드로이드 공부를 시작하며  (0) 2022.04.10
    'Android/Basic' 카테고리의 다른 글
    • [Android] Fragment과 Toast message
    • [Android] Redeclaration Error
    • [Android] ConstraintLayout, Chain 설정
    • [Android] View와 Layout
    쏭식
    쏭식

    티스토리툴바