목록분류 전체보기 (192)
안드로이드 개발자의 창고
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/y0HGB/btsnXhFfKrj/mslEYFlIdxXnVn9UXyCTVK/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Preferences Screen UI를 통해서 Preferences를 사용할 수 있도록 제공되는 개념 PreferenceFragment를 사용하며 저장 기능까지 모두 구현되어 있다. andoridx.preferences를 사용하여 구현한다. 주요 속성(xml / pref.xml) EditTextPreference EditTextPreference(문자열 입력) defaultValue 초기 값 title 화면에 보여지는 이름 key 데이터를 가져올 때 사용하는 이름 summary 표시되는 설명 icon 좌측에 표시될 아이콘 dialogIcon 입력을 위해 뜨는 다이얼로그의 아이콘 dialogTitle 입력을 위해 뜨는 다이얼로그의 타이틀 di..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Preferences 안드로이드의 저장 방식 중 하나로 애플리케이션의 데이터를 간단하게 저장할 수 있는 수단 많은 양의 데이터를 저장할 때는 SQLite, 소규모의 데이터를 저장할 때 Preferences를 사용할 수 있다. 일반적으로 애플리케이션 설정 데이터와 같이 유일한 데이터들을 기록할 때 Preferences를 사용한다. 예제 코드 - 데이터 저장 button.run { setOnClickListener { // Preferences 객체 추출 // 첫 번째 : 이름 // 두 번째 : MODE_APPEND - 기존 데이터에 추가 해준다. // MODE_PRIVATE - 기존 데이터를 삭제하고 새롭게 저장한다. val pref = get..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Content Provider 안드로이드 4대 구성 요소 중 하나로 애플리케이션이 저장한 데이터를 다른 애플리케이션이 사용할 수 있도록 제공하는 개념 데이터를 제공하는 앱의 android:authorities를 알아야 사용할 수 있다. 예제 코드 데이터를 제공하는 앱 - AndroidManifest.xml ... ... 데이터를 제공하는 앱 - DBHelper.kt class DBHelper(context: Context) : SQLiteOpenHelper(context, "Test.db", null, 1){ override fun onCreate(db: SQLiteDatabase?) { val sql = """ create table Tes..
🌟 이번 주 목표 🌟 [ V ] 코딩 테스트 일주일 3문제 [ V ] 이번 주 강의 정리하여 블로그 작성 [ V ] 토스 과제 테스트 응시 [ V ] 과제 제시간에 끝내기 💜 Liked(좋았던 점) 과제를 빨리 끝내서 여유로웠다 코드 짜는 게 어렵다기 보단 기능이 많이 필요해서 코드가 길어졌던 것 같다. 긴 코드를 작성하는 과정에서 헷갈리거나 코드가 꼬여서 오류가 발생하는 것만 조심하면 금방 풀 수 있었다. 내주신 과제 모두 하루 안에 다 끝냈고 남은 시간에 복습을 했다. 대학 친구 모임 요즘 시간이 맞는 친구들이 많아서 자주 만나서 스트레스도 풀고 좋았다. 집에만 있다가 밖에 나가서 바람을 쐐니 기분도 좋아졌다. ✔️ Lacked (아쉬웠던 점) 모르는 기능이 나와서 헷갈리기 시작했다. 오늘 배운 Co..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 SQLiteDatabase 안드로이드에서 사용하는 내장 데이터 베이스로 표준 SQL문을 사용하는 관계형 데이터 베이스 MySQL과 유사한 문법을 사용하고 있으며 일반적인 관계형 데이터 베이스가 가지고 있는 기능을 가지고 있다. 임베디드형 데이터베이스로써 데이터베이스를 사용하는 애플리케이션에 셋팅되는 데이터 베이스이다. 안드로이드 OS에 내장되어 있으며 개발자가 만드는 애플리케이션은 안드로이드 OS에게 쿼리문을 전달하고 안드로이드 OS가 직접 데이터 베이스에 대한 처리를 하게 된다. 안드로이드에서의 SQLite 사용은 쿼리문을 이용하는 방법과 제공되는 클래스를 사용하는 방법 두 가지가 있다. SQLite OpenHelper 안드로이드에서 SQL..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDm21Q/btsm8NYBGA0/n4latV7ftusKEiSNRsICtk/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 assets raw 데이터 파일은 raw 폴더에 담으면 스트림을 쉽게 추출할 수 있다는 장점이 있지만 하위 폴더를 만드는 등 계층적으로 관리할 수 없다는 단점이 있다. 만약 파일들을 계층적인 폴더 구조를 만들어 관리하겠다면 assets 폴더를 사용한다. assets 폴더는 res 폴더 내부가 아니므로 리소스(R 클래스)로 관리할 수 없다. 예제 코드 assets 파일 생성 후 담겨있는 폴더와 데이터 assets/text/data.txt 파일 읽어오기 button.setOnClickListener { // Assets 폴더에 있는 파일과 연결된 스트림 추출 val inputStream = assets.open("text/data.txt") va..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YoYDL/btsm8hTayGV/YtK8xKkK1vJYEly7POnGK0/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Raw 가공되지 않은 원천 데이터 사운드나 동영상, 사진 등을 데이터의 용량을 줄이기 위해 압축을 하게 되는데 이러한 가공을 거치지 않은 순수 데이터들을 raw 데이터라고 부른다. 안드로이드에서는 각종 데이터 파일이나 동영상, 사운드 등의 데이터를 사용할 때 주로 사용한다. raw 폴더 실행 중 다운받거나 생성된 데이터 파일은 내부 저장소나 외부저장소에 저장해 두었다가 필요할 때 읽어오면 된다. 만약 데이터가 저장된 파일을 애플리케이션 내부에 포함 시키겠다면 raw 폴더에 저장하면 된다. raw 폴더에 저장된 파일은 스트림을 손쉽게 추출할 수 있다. 예제 코드 raw 파일 생성 후 저장된 파일들 text 파일 읽어오기 button.setOnC..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cW6tyv/btsm9CovO6r/e6CDZoWsUgr5hyG8EiGAg1/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 파일 입출력 안드로이드는 애플리케이션이 데이터를 저장할 수 있는 저장소를 두가지로 제공하고 있다. 내부 저장소 애플리케이션을 통해서만 접근이 가능하다. openFileInput, openFileOutput 외부 저장소 단말기 내부의 공유 영역으로 모든 애플리케이션이 접근 가능하다. 단말기를 컴퓨터에 연결하면 탐색기를 통해 접근할 수 있는 영역을 의미한다. FileInputStream, FileOutputStream Scoped Storage 정책 외부 저장소에 저장된 파일은 모든 애플리케이션이 접근할 수 있어 보안에 문제가 발생함에 따라 보안 강화를 위해 외부 저장소 접근을 제한한 정책 예제 코드 내부 저장소 파일을 저장한 애플리케이션만 사용..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HUXpi/btsmIr4b1NO/6LMALrSkfB3K327DEZrcMK/img.png)
✔️ 오류 및 원인 화면이 전환될 때 키보드를 자동으로 올려주기 위해서 InputMethodManager를 사용했다. 비동기적 처리를 위해서 thread를 이용하였는데 getWindowToken()이 null을 반환한다는 오류이다. lateinit var mainActivity: MainActivity val imm = mainActivity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager mainActivity = activity as MainActivity ... // 포커스 설정 dialogBinding.editTextAddCategory.requestFocus() // 키보드 올림 thread { SystemClock.sl..