목록분류 전체보기 (60)
Wook No.1
내부 저장소 getFilesDir() : 앱과 고유하게 연결된 파일 시스템의 디렉토리를 표시하는 File 개체를 반환 getDir(name, mode) : 앱의 고유한 파일 시스템 디렉토리 내에 새 디렉토리를 생성하거나 기존 디렉토리 오픈 getCacheDir() : 앱과 고유하게 연결된 파일 시스템의 캐시 디렉토리를 표시하는 File 개체를 반환 (이 디렉토리를 임시파일용으로 정기적으로 지워야하고, 디스크 공간이 부족해지면 시스템에서 알아서 삭제함) private fun saveInternalStorage(context: Context, fileName: String, bitmap: Bitmap) { val INTERNAL_STORAGE_IMAGE_FOLDER = "imgDIr" val storageD..
App Bundle: aab 확장자를 가진 파일로, 기기에 앱이 최종 설치될 때 해당 기기의 CPU, screen density, 그리고 language를 고려하여 꼭 필요한 데이터만 다운받아질 수 있도록 하기 위한 새로운 빌드 방법이다. 플레이스토어에 앱을 aab로 등록하기 위해서는 Play App Signing이 필수이다 기존 gradle에서 아래 내용 추가하여 bundle파일명을 수정할수 있다 defaultConfig { ... archivesBaseName = "bundleApp" } ... tasks.whenTaskAdded { task -> if (task.name.startsWith("bundle")) { def renameTaskName = "rename${task.name.capitali..
CopyOnWriteArrayList Thread-safe 한 random access list. ArrayList는 스레드에 안전하게 설계되지 않아 synchronized와 함께 사용하여 동시성 제어를 해야 한다. ArrayList를 구현한 클래스로서 내부를 변경하는 작업은 항상 깨끗한 복사본을 만들어서 수행하도록 구현되어 있다. 내부의 배열은 절대 변경할 수 없으므로 순회할 때 락이 필요 없어서 속도면에서 매우 빠르다는 장점이 있다. CopyOnWriteArrayList는 데이터 수정이나 삭제 등의 다른 용도로 쓰일 경우에는 속도가 느려지기 때문에 수정할 일은 거의 없으며 주로 순회가 일어나는 용도로 사용하는 것이 적합하다. CopyOnWriteArrayList는 ArrayList와는 달리 List를..
구글 OAuth2.0 API 사용하기 https://console.cloud.google.com/ Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com OAuth 2.0 클라이언트 ID 에서 웹 애플리케이션의 클라이언트 ID 설정 code API 호출 https://accounts.google.com/o/oauth2/v2/auth? scope=https://www.googleapis.com/auth/drive.metadata.readonly& response_type=code& redirect_uri=https%3A//oauth2.example.com/code& client_..
EditText 영역을 클릭 하면 해당 영역을 가리는 이슈가 있다. 대부분 AndroidManifest에 windowSoftInputMode 옵션 adjustResize 혹은 adjustPan으로 해결이 되지만 이걸로도 해결 안되는 경우가 생긴다. 이유가 뭔지;;;; 아래 이슈에 대한 해결방법이다. http://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible/19494006#19494006 (usableHeightSansKeyboard/4)) { // keyboard probably just became visible frameLayoutParams...
기존 XML Layout을 data binding Layout으로 쉽게 Converting 하는 방법 Root Layout에서 Option + Enter (Convert to data binding layout) 쉽게 data binding layout으로 convert 할수 있다
한글로 주석을 작성하거나 할때 한글 마지막 글자에 밑줄과 함께 커서가 깜빡이는 현상이 있다 해당 현상시 마우스를 다른곳에 클릭하면 한글이 짤리게 된다;;;; 특히 커밋 메시지 작성할때 짤리게 되면 대략 난감하다;;;;; 결론 : 나는 해결아 안됐다 ㅠㅠ (노답.... 스페이스, 방향키 가 답인것인가....) 해결방법: 시스템 환경설정 -> 언어지역 -> 키보드 환경설정 -> 텍스트(탭) -> 맞춤법 자동 수정(체크해지) 실 패 잘 안 된 다!!!!!!!!
객체를 사용할 때 Scope(범위, 영역) 생성하여 속성이나 함수를 처리하는 용도로 사용되는 함수 https://kotlinlang.org/docs/scope-functions.html#takeif-and-takeunless Scope functions | Kotlin kotlinlang.org 1. let T의 확장함수이기 때문에 non-null 일 때에만 실행할 수 있다. let 함수를 사용하면 객체의 상태를 변경할 수 있다. fun T.let(block: (T) -> R): R Person("Alice", 20, "Amsterdam").let { println(it) it.moveTo("London") it.incrementAge() println(it) } 2. with fun with(recei..