분류 전체보기 426

WebView zoom in/out 안될 경우

안드로이드 웹뷰 줌 in/out 안되는 경우 웹뷰에 로드된 html 소스를 까보면 안에 요런 식으로 설정이 되어 있음. user-scalable=no 이놈이 문제인데, user-scalable=yes로 해도 100% 해결은 되지 않는다고 함! [Android] 아래 설정들을 webView 객체에 추가하면 보통 해결. webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().s..

안드로이드 2023.06.14

맥에서 크롬이 열리지 않을 때

Mac에서 크롬 실행 안될 때 새로운 맥을 받고 크롬을 설치했는데, 맥에서 크롬이 열리지 않는다! 해결 방법 1. 터미널 창을 연다. 런치패드 > 기타 > 터미널 2. 크롬 로컬 데이터 폴더를 삭제 터미널에 명령어 입력 후 실행 sudo rm -rf ~/Library/Application\ Support/Google/Chrome 3. 크롬 로컬 데이터 폴더를 수동으로 만듬 cd ~/Library/Application\ Support/Google sudo mkdir Chrome 4. 폴더에 쓰기 권한을 준다. sudo chmod a+w Chrome 5. 크롬 다시 실행 저는 이 방법으로 해결 하였습니다!! 참조 : https://velog.io/@jinuku/%EB%A7%A5%EC%97%90%EC%84%9..

개발설정 2023.05.24

인라인 함수: 람다의 부가 비용 없애기

인라인 함수: 람다의 부가 비용 없애기 람다가 변수를 포획하면 람다가 생성되는 시점마다 새로운 무명 클래스 객체가 생긴다. 이런경우, 실행 시점에 무명 클래스 생성에 따른 부가 비용이 든다. → 똑같은 작업을 수행하는 일반 함수를 사용한 구현보다 덜 효율적 inline 변경자 컴파일러는 그 함수를 호출하는 모든 문장을 함수 본문에 해당하는 바이트 코드로 바꿔치기 해준다. 작동 방식 함수를 호출하는 코드를 함수를 호출하는 바이트코드 대신에 함수 본문을 번역한 바이트 코드로 컴파일한다. [Kotlin in Action 책] p.365 8.13~8.3 synchronized 함수의 본문뿐 아니라 전달된 람다의 본문도 함께 인라이닝 된다. 함수 타입의 변수를 넘길수도 있다. fun runUnderLock(bod..

고차 함수 정의

고차 함수 (High order function) 다른 함수를 인자로 받거나 함수를 반환하는 함수 함수 타입 val sum: (Int, Int) -> Int = { x, y -> x+y } val action: () -> Unit = { println(42) } 함수 타입을 정의하려면 함수 파라미터의 타입을 괄호 안에 넣고, 그뒤에 화살표(→)를 추가한 다음, 반환 타입을 지정하면 된다. 함수타입을 선언할 때는 반환 타입으로 반드시 명시해야 하므로 Unit을 빼먹어서는 안 된다. 반환 타입이 널이 될 수 있는 타입 var canReturnNull: (Int, Int) -> Int? = {x, y -> null} 함수 타입 전체가 널이 될 수 있는 타입 var funOrNull: ((Int, Int) ->..

delay 혹은 애니메이션 후 이벤트 발생시 binding에러

binding null cannot be cast to non-null type VB 베이스 프레그먼트에 binding데이터를 넣어둔뒤 바텀시트 동작시 키보드가 뜨도록 작업이 되어있었습니다. 바텀시트 호출 -> 키보드 올라오는 도중 (해당 화면 종료) -> 바텀시트 내려가면서 키보드 Hide 이미 화면이 종료되어 binding이 null이었습니다! BaseFragment 이렇게 선언 되어있었는데 null이 됩니다 근데 또 화면에 lateinit으로 된곳은 null이 되지 않는 것 같습니다!? private lateinit var binding 일단 내가 작업하는 소스에는 이렇게 두가지의 코딩이 있었습니다. 1. 번의 해결은 화면이 종료되었는지 판단하여서 호출하지 않도록 해결 open val isAttac..

안드로이드 2023.05.19

[kotlin] mapTo

mapTo https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map-to.html mapTo - Kotlin Programming Language kotlinlang.org inline fun Array.mapTo( destination: C, transform: (T) -> R ): C collection 프레임워크 사용시 각 element의 변형을 거쳐 다른 collection에 쉽게 복사할 수 있는 함수 나는 filter를 걸어서 원하는 타입의 뷰중에 데이터만 리스트로 뽑았다.(헤더에 data는 null이라서) 참조 : https://skytitan.tistory.com/180

savedStateHandle로 ViewModel의 상태를 저장하자

savedStateHandle로 ViewModel의 상태를 저장 PR리뷰로 (Activity or Fragment)에서 사용하던 savedInstanceState를 ViewModel의 savedStateHandle로 사용해달라는 요청이 왔습니다. 검색하면서 궁금했던 점 1. 아래 글을 보면 savedStateHandle.set과 get이 있습니다. 따로 set/get은 하지 않아도 된다고 함. savedStateHandle 안에 intent로 넘어온 값이 들어있음 로그를 직접 찍어보니 Fragment의 savedInstanceState는 null이고 (true값) ViewModel의 savedStateHandle는 데이터가 있었다. (intent안에 있는 값들이다.) 그래서 뷰 모델의 LifeCycle은..

코딩/코드리뷰 2023.05.18

OS 6이하에서 벡터 이미지 제대로 안나오는 문제

Android 6.0, Marshmallow 이하의 버전에서 아이콘이 깨지는 현상이 발생하였습니다. Android 6.0 이하의 버전에서는 이미지를 추가할 때, app:srcCompat을 사용해야 하는데 그렇지 않아서 아이콘이 깨지는 문제가 발생하였습니다. 그래서 android:src 대신 app:srcComapt을 사용하도록 변경했으며, selector로 적용한 이미지들은 프로그래밍 방식으로 적용하여 해결했습니다. 원인 : fillType:"ovenOdd" 속성의 지원 가능 api level이 24 이상이기 때문에 23이하 기기에서 정상적인 이미지가 보이지 않음 - 회사분이 코멘트 주심! 어떤게 정확한 답변인지는 잘 모르겠음! srcCompat으로 제대로 나오기도 하니깐.? 아무튼 프로그래밍 해결 방법..

안드로이드 2023.05.11