일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 테마
- Navigation Component
- 주석
- BottomNavigationView
- Binding Adapter
- 일렉트론
- Gradle
- ViewModel
- android studio
- Datastore
- room
- imageview
- Livedata
- recyclerview
- Jetpack Compose
- asLiveData()
- 면접
- Safe Args
- TypeConverter
- 개발자
- themes.xml
- electron
- nav_graph
- 안드로이드
- kotlin
- fragment
- Android
- hilt
- 스플래시
- 취업
- Today
- Total
목록개발/Android (39)
나만 보는 일기장
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 =..
@Singleton @Provides fun provideHeaderInterceptor(): Interceptor = Interceptor { chain -> chain.run { proceed( request() .newBuilder() .addHeader("x-rapidapi-host", API_HOST) .addHeader("x-rapidapi-key", API_KEY) .build() ) } } 를 통해 모든 요청에 특정한 헤더 등을 추가할 수 있습니다.