일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- TypeConverter
- Datastore
- recyclerview
- BottomNavigationView
- Gradle
- electron
- themes.xml
- Binding Adapter
- fragment
- hilt
- 테마
- 면접
- android studio
- 취업
- nav_graph
- ViewModel
- imageview
- kotlin
- asLiveData()
- 주석
- Android
- 안드로이드
- Jetpack Compose
- 일렉트론
- Navigation Component
- Livedata
- Safe Args
- room
- 개발자
- 스플래시
- Today
- Total
목록분류 전체보기 (48)
나만 보는 일기장
디스코드에는 GIF(움짤)을 골라 보낼 수 있는 화면이 있습니다. 저는 위와 같은 화면을 만들어보기 위해 레이아웃은 RecyclerView에 StaggeredGridLayoutManager를 달아 구현하고, Giphy Api에서 움짤을 받아와, Glide로 로딩하여 보여주는 방식으로 만들었습니다. item_trending_gif.xml RecyclerView에 들어갈, 움짤을 띄울 아이템의 레이아웃을 만들어 주었습니다. CardView 안에 ImageView 하나밖에 없는 단순한 레이아웃입니다. ConstraintLayout과 MaterialCardView, ImageView 모두 높이를 wrap_content로 설정하여 움짤을 받아오면 넓이는 부모 뷰 만큼 늘이고, 높이는 움짤의 비율에 맞춰 알아서 설..
DataStore는 SharedPreference를 대체하기 위해 구현된 라이브러리로, PreferenceDataStore와 ProtoDataStore 두 가지 종류가 있습니다. 이 글에서는 Key-Value 형태로 데이터를 저장하는 PreferenceDataStore를 사용해보도록 하겠습니다. 1. 의존성 추가 // PreferenceDataStore def datastore_version = "1.0.0" implementation "androidx.datastore:datastore-preferences:$datastore_version" App Gradle에 추가해줍니다. 2. DataStoreRepository 생성 저는 DataStore를 Repository에 넣어 관리하겠습니다. privat..
Room 지속성 라이브러리는 SQLite에 추상화 계층을 제공하여 SQLite를 완벽히 활용하면서 더 견고한 데이터베이스 액세스를 가능하게 합니다. 오늘은 Hilt와 ViewModel 등의 여러 라이브러리를 통해 Room을 사용하는 법을 알아보도록 하겠습니다. Room의 구조 Room을 사용할 때 만들어 주어야 하는 것은 크게 1. DB에 들어가는 테이블의 구조인 Entity, 2. DB의 데이터에 접근할 수 있는 함수를 정의해 놓은 DAO, 3. DB 그 자체인 Database 3가지 입니다. 1. Entity @Entity(tableName = Constants.TABLE_NAME) class TeamBookmarkEntity( var favoriteTeam: TeamData ) { @PrimaryK..
android:background="?attr/selectableItemBackground" // 혹은 android:background="?attr/selectableItemBackgroundBorderless" // + android:clickable="true" 위 속성들을 넣어주면 됩니다. selectableItemBackground와 selectableItemBackgroundBorderless의 차이는 아래와 같습니다. selectableItemBackground는 View의 바운더리 내에서, selectableItemBackgroundBorderless는 View의 크기에 상관 없이 터치 이펙트를 보여줍니다. 터치 효과의 색상 같은 속성의 커스마이즈를 위해서는 아래 링크를 참고하시길 바랍니다..
여러분은 드래그&드롭을 통해 아이템 간 위치를 바꾸거나 아이템을 스와이프 해 삭제하는 등의 액션을 구현하는 것을 보신 적이 있을 것입니다. 이러한 액션들을 구현하기 위해서는 ItemTouchHelper의 콜백 클래스를 구현하면 됩니다. Callback 클래스와 SimpleCallback 클래스는 드래그나 스와이프를 인식할 방향을 어디서 설정하느냐의 차이입니다. class SwipeHelperCallback(private val mAdapter: MyAdapter): ItemTouchHelper.Callback() { // 입력을 감지할 방향 설정, 설정하지 않으려면 0 override fun getMovementFlags( recyclerView: RecyclerView, viewHolder: Recyc..
오늘은 위와 같이 스타일과 포맷을 동시에 가진 TextView를 만들어 보겠습니다. 여기서 우리가 원하는 것은 하나의 텍스트뷰로 Html 스타일과 가변적으로 값을 넣을 수 있는 포맷을 동시에 구현하는 것입니다. Founded: %1$d Country: %1$s Venue: %1$s 이를 위해 먼저 strings.xml에 위와 같이 문자열 리소스를 만들어 보았습니다. 이렇게 적어주면 태그로 둘러쌓인 곳은 볼드 처리가 되고, %1$d로 표시 된 부분에 문자열 값을 넣어주면 잘 들어갈 것 같아 보입니다. with(response) { textName.text = team.name textVenue.text = getString(R.string.venue, venue.name) textCountry.text =..