본문 바로가기

Android65

[Android/Kotlin] RecyclerView 클릭 이벤트 처리 리사이클러뷰 아이템을 클릭하는 과정을하는 도중에 조금 헤맸었는데 다음번에는 그러지 않도록 기록을 해두려한다 먼저 어뎁터에 아래 코드를 작성해준다외부에서도 아이템클릭 코드를 작성해줄수있게 하기 위함이다일단 내가 지금 짜는 코드는 리사이클러뷰 아이템을 클릭한 값의 위치를 받아와야되기때문에 position : Int 를 추가해준다// 아이템 클릭시 필요한 코드 (Fragment에서[외부에서] 아이템클릭 코드 작성해줄수있도록) interface MyItemClickListener{ fun onItemClick(position: Int)} private lateinit var mItemClickListener : MyItemClickListener fun setMyItemClic.. 2024. 2. 21.
[Android/Kotlin] BottomNavigationView ripple 효과 없애기 홈부분에 동그랗게 보이는 부분을 ripple효과라고하는데 저 부분이 별로 예쁘지 않아서 없애줄려고한다 bottomnavigation 부분에 itemBackground를 적용해주면 된다이 한줄만 추가해주면 끝이다! # 참고자료https://develop-oj.tistory.com/75 2024. 2. 15.
[Android/Kotlin] font 적용하기 먼저 적용하기전에 사용할 font를 ttf확장자 형식으로 다운로드 해준다 그런다음 res -> 우클릭 -> Android Resource Directory에 가서 Resource type과 Directory name을 font로 설정해준다. ok를 누르면 font폴더가 생성되는데, 여기에 아까 다운받은 ttf폰트 파일을 붙여넣어준다 이렇게 넣어줬으면 해당 font를 사용할 레이아웃에 아래와같이 fontFamily를 추가해서 font를 적용하면된다 폰트가 잘 적용이된것을 확인할수있다 2024. 2. 14.
[Android] 리스트뷰 vs 리사이클러뷰 현재 시중에 나온 앱은 거의 다 리스트뷰를 사용한다고 할수있다그럼 리스트뷰란 무엇일까?위의 그림에서 빨간색으로 표시한 부분이 리스트뷰에 해당한다고 볼수있다그리고 파란색으로 표시한 부분은 데이터가 담기는 곳으로, 아이템뷰 또는 뷰객체라고 불린다 맨왼쪽 사진처럼 꼭 수직형태가 아니더라도 수평형태, 격자형태에 해당하는 것도 모두 리스트뷰를 활용한 예시이다 그런데 안드로이드 플랫폼 초기에는 리스트뷰라는 객체를 사용했지만, 아이템 재사용, 중복 관련 문제때문에 이를 개선한 리사이클러뷰라는 객체를 사용하게 되었다리스트뷰와 다르게 리사이클러뷰는 이름에서 알수있듯이 재활용이 가능한 뷰이다.만약에 100개를 훌쩍 넘는 전체 데이터가 있다고 가정해보자. 그러나 정작 실제로 화면에 보여지는 아이템들은 10개정도밖에 되지.. 2024. 1. 30.
[kotlin]스코프 함수 # 스코프 함수 - 스코프 함수(Scope Function)는 코드를 축약해서 표현할 수 있도록 도와주는 함수이다 영역 함수라도고 한다. 사용법은 함수처럼 쓰지 않고 run, let처럼 괄호 없이 일종의 키워드 같이 사용할 수 있다. lateinit과 함께 Safe Call 남용을 막아주는 역할도 하기 때문에 많이 사용하는 요소이다. 스코프 함수에는 run, let, apply, also, with이 있다. # run과 let으로 보는 스코프 함수 - run과 let은 자신의 함수 스코프(코드 블록) 안에서 호출한 대상을 this와 it로 대체해서 사용할 수 있다. # run 스코프 함수 안에서 호출한 대상을 this로 사용할 수 있다. 클래스 내부의 함수를 사용하는 것과 동일한 효과이기 때문에 this.. 2024. 1. 16.
[kotlin]지연 초기화 # lateinit - 개발을 하다보면 클래스 안에서 변수만 Nullable로 미리 선언하고, 초기화를 나중에 해야 할 경우가 있다 - 이럴 경우 lateinit 키워드를 사용할 수 있다 # Nullable로 선언하는 일반적인 방법 class Person { var name: String? = null init { name = "Lionel" } fun process() { name?.plus(" Messi") print("이름의 길이 = ${name?.length}") print("이름의 첫 글자 = ${name?.substring(0, 1)}") } } -> 일반적인 선언 방식으로 처음에 null 값을 입력해두고, 클래스의 다른 메서드 영역에서 값을 입력한다 -> 위 방식은 변수에 입력된 값의 메서드.. 2024. 1. 16.