- 안드로이드/kotlin(18)
-
코틀린 비동기처리 코루틴 사용법
코루틴 코틀린의 비동기처리 방식중 코루틴은 어렵지 않고 심플하게 사용이 가능하여 많이 쓰이는 기능인데요 코루틴의 다양한 상황에서의 사용 예제를 알아보겠습니다. 쓰레드 확인 일단 CoroutineScope안에서 쓰레드는 어떻게 표시 되는지 확인해보겠습니다. lifecycleScope.launch(Dispatchers.Default) {// or Dispatchers.IO // 코루틴 스코프 영역 delay(1000) Log.d(TAG, "코루틴 : ${Thread.currentThread().name}")// worker Thread } Log.d(TAG, "메인 : ${Thread.currentThread().name}")// main Thread 코루틴 스코프 영역안의 쓰레드는 worker 쓰레드, 그..
2023.10.11 -
코틀린 char을 조건문에서 사용할때는 '' 사용
코틀린 char 조건 비교시 ''를 사용할것 다음에 또 깜빡하지 않기 위해... 메모... 알고리즘 공부를 하고 있었는데 결과값이 이상하여 디버그하여 조건문에서 문제가 있다는것을 알아냈습니다. var binary = "110011" var sb = StringBuffer() binary.forEach { b -> if (b.equals("0")) sb.append("+") else sb.append("#") } binary변수에 0이 포함되어 있기 때문에 sb값을 출력해보면 ##++## 값이 출력이 되어야 하는데 값은 ######으로 나오는겁니다. if (b.equals("0")) 이 부분이 잘못되었단 뜻인데, 잘못된게 없는데? 라고 생각하고 조금 멍 때리고 있을때 예전에 쌍따옴표 대신 작은따옴표(')를..
2023.09.12 -
코틀린 CollapsingToolbarLayout으로 움직이는 appbar만들
status bar와 toolbar가 위 그림처럼 있을때 화면을 아래로 스크롤하면 toolbar가 없어지고 위로 스크롤 하면 다시 생기도록 움직이는 toolbar를 만들어 보겠습니다. activity_app_bars_top.xml 만들기 layout_scrollFlags 속성 화면을 스크롤 할 때, CollapsingToolbarLayout을 얼마나 가리고 보일 것인지 정하는 속성입니다. scroll|enterAlways을 입력 하면 스크롤시 toolbar가 움직입니다. navigationIcon 속성 toolbar왼쪽의 햄버거 버튼 이미지를 설정합니다. menu 속성 app_bars_top_item.xml을 추가하여 toolbar오른쪽에 메뉴를 추가합니다. app_bars_top_item.xml 만들기..
2023.09.08 -
코틀린 status bar(상태바) 투명, 확장하기
앱을 만든다.... 빌드시켜 만들어진 화면을 본다.... 하지만 뭔가 깔끔하지 않고 못생긴 느낌의 화면... 상태바를 투명화 하여 확장해보겠습니다. fun setStatusBarTransparent() { window.apply { setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS ) } if(Build.VERSION.SDK_INT >= 30) {// API 30 에 적용 WindowCompat.setDecorFitsSystemWindows(window, false) } } api가 30에서 적용이 안되는 경우가 있기 때문에 위같이 적용하여 줍니다. setFla..
2023.09.08 -
list, set, map 차이
컬렉션 프레임워크를 사용하는 이유 기본 배열 array는 탐색과 접근이 용이하다는 장점이 있지만 크기를 미리 정해놓기 때문에 데이터를 추가 하거나 삭제하기에 어려움이 있습니다. 그렇기 때문에 추가 및 삭제가 용이한 컬렉션 프레임워크가 등장하였는데 컬렉션 프레임워크에는 list, set, map이 있습니다. 아래에서는 세종류의 컬렉션의 특징들을 정리해보겠습니다. LIST 순서가 있고 중복을 허용합니다 인덱스로 원소에 접근이 가능합니다 크기가 가변적입니다 val list = mutableListOf() list.add(1) list.add(2) list.removeAt(1) SET 데이터의 집합이며 순서가 없습니다 중복을 허용 하지 않습니다 검색 속도가 빠릅니다 val set = mutableSetOf() ..
2023.08.04 -
리스트를 이용한 다중 조건 정렬 sortedWith()
단순한 단일 조건의 오름차순, 내림차순의 정렬이 아닌 2가지 이상의 조건으로 정렬을 하는 방법을 정리해 보겠습니다. 문자열을 요소로 가지고 있는 리스트를 아래의 조건으로 정렬해 보겠습니다. 정렬 조건 2가지 데이터의 길이가 짧은것 부터 정렬 길이가 같을때는 알파벳 순으로 정렬 다중 조건을 적용하려면 리스트 객체의 sortedWith()를 사용 합니다. 인자로 compareBy()를 사용할수도 있지만 Comparator를 재정의 하여 정렬조건을 적용해보겠습니다. var list_string : List = listOf("tom", "kim", "lina", "jeon", "holland") val resultList = list_string.sortedWith(Comparator { a, b -> // 글..
2023.07.14