본문 바로가기

소소한 코딩 이야기

(28)
[Android] Android App 개발 관련 참고사이트 1. Jetpack Compose Codelab https://developer.android.com/courses/pathways/compose Jetpack Compose | Android Developers Learn about Compose, a modern toolkit for building native Android UI. developer.android.com : JetPack Compose에 대하여 코드랩 과정을 통해 학습해 볼 수 있는 공식 사이트 2. Material Design https://material.io/ Material Design Build beautiful, usable products faster. Material Design is an adaptable system..
Checkbox를 이용한 체크리스트 만들기(50% 완료) ● 새 항목 추가에 내용 입력 후 추가버튼을 누르면 RecyclerView에 새로 추가 된 List가 반영 됨 ● 동시에 로컬 DB에 Insert 됨 -> ViewModel, LiveData로 리스트 갱신 ● 리스트에서 체크박스를 누르면 해당 Content에 취소선이 반영되도록 RecyclerView에서 setOnCheckedChangeListener를 적용 ○ 체크박스를 클릭했을 때 로컬 디비의 status도 동시에 수정되도록 구현 중 ○ 체크박스를 다중 선택하여 선택 된 리스트만 삭제 할 수 있도록 구현 예정 ○ 전체 삭제 버튼을 클릭 시 모든 리스트가 지워지도록 구현 예정 ○ Content의 휴지통 모양의 버튼을 클릭 시 해당 내용만 삭제되도록 구현 예정
Date Picker Dialog에서 선택 날짜 제한하기 Date Picker Dialog를 추가 후, 이번에는 날짜에 제한을 주어 start date 를 선택 하면 end date 선택 시 start date 보다 이전 날짜는 선택할 수 없도록 코드를 추가 해보았습니다. 1. Start Date //선택 된 start date를 담아줄 변수 선언 private lateinit var selectedDay: Calendar @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_add_contents) //start date start_date_btn..
Fragment에서 RecyclerView 사용 시 Null Point Exception 발생 시 해결방법(Kotlin) Fragment에서 RecyclerView를 이용하여 체크리스트를 구현해 보았습니다. 그런데 Activity에서 구현할 때와 다르게 계속 Null Point Exception이 발생되면서 어플이 강제종료 되는 현상이 발생 되었습니다. 분명 Adapter, ViewHolder, ViewModel 그리고 로컬 DB까지 모두 코드 상 오류가 없음을 확인하였고, DB에는 데이터가 정상적으로 INSERT 되는 것 까지 확인하였습니다. 그렇게 약 이틀 간 같은 에러와 싸우며 다양한 방법을 적용해 보던 중, 드디어.. 해결방법을 찾아내었습니다ㅠㅠ 처음에는 아래 코드와 같이 Activity에서 RecyclerView를 생성할 때 처럼 Fragment에서 Activity의 onCreate( )와 같은 onCreateVi..
View Binding 사용하기 ● View Binding? - View Binding 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성 - 모듈에서 사용 설정된 View Binding은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성 - 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함 ● 적용방법 1. View Binding 요소를 build.gradle 파일에 추가 android { compileSdkVersion 30 buildToolsVersion "30.0.2" ... //뷰바인딩 사용 설정 buildFeatures { viewBinding = true } } 2. Activity에서 View Binding 사용 (onCreate( ) 메서드에서 구현) 1) 생성된 Bind..
로컬 DB에 데이터 저장하기 성공!!! + 지금까지 프로젝트 진행도 위 영상은 현재까지 진행된 어플을 화면녹화 해 본 것입니다. 가장 애를 먹었던 Room을 활용한 로컬 DB저장까지 모두 완료 하였고 현재 세부페이지를 제작 중에 있습니다. [사용언어] - Kotlin [사용도구] - Android Studio - Vectornator (Icon 및 Logo 제작 시 사용) [구현기능] 1. Splash Screen 2. RecyclerView(feat. CardView) 3. Spinner를 이용한 Select메뉴 4. Material Design Library를 이용한 EditText 구현 5. DatePicker Dialog를 이용한 날짜선택 6. LiveData, ViewModel, Room 을 이용한 로컬 DB 구현 Kotlin과 Android Studio모두 유..
Date Picker Dialog를 이용하여 날짜 입력하기 컨텐츠 입력 시 Date Picker Dialog를 이용하여 달력을 띄우고 날짜를 선택하는 코드를 작성해 보았습니다. 달력을 구현하는 API들이 많이 있었지만 단순히 날짜만 선택하는 기능만 담으려는데 코드가 복잡해지는 것 같아 가장 심플한 기본 Date Picker Dialog를 적용했습니다. 1. UI 만들기 activity_add_contents.xml 2. 버튼 클릭 시 Date Picker Dialog 띄우기 class AddContentsActivity : AppCompatActivity() { //Calendar private var calendar = Calendar.getInstance() private var year = calendar.get(Calendar.YEAR) private v..
Splash Screen 구현하기 1. Splash Screen에 사용 할 이미지 준비 - 미리보기 화면을 보면 마치 이미지가 전체화면 크기로 꽉차게 나오는 듯 보입니다. 그러나 막상 에뮬레이터를 실행해보면 지정한 사이즈 대로 잘 나오는 것을 볼 수 있습니다. (여기에 속은 1인 입니다..ㅠㅠ) 2. Splash Activity 생성 class SplashActivity : AppCompatActivity() { override fun onPostCreate(savedInstanceState: Bundle?) { super.onPostCreate(savedInstanceState) Handler().postDelayed({ val intent = Intent(this, MainActivity::class.java) startActivit..