반응형

안드로이드 개발 92

오늘의 음주 코딩 23년 5월 25일

오늘도 회사에서 열심히 코딩을 하고, 퇴근 후 집에서 취미 코딩(?)을 시작합니다. 취미가 코딩인거는 회사사람들에게는 비밀이에요. "미친놈" 취급당할 수 있거든요. 오늘의 음주는 제가 좋아하는 헤네시와 토닉워터를 섞은 술입니다. 집에서 칵테일을 이것저것 만들어 먹지만 제 입에는 이녀석이 최고입니다. ^^ 오늘은 Stable Diffusion을 이용한 앱을 제작하는데 아주 재미(?) 있습니다. 회사에서는 따분한 코딩만 하다가 집에 와서 다이나믹한 주제에 코딩을 하면 스트레스가 풀린답니다. 그리고 제 앱이니 아무도 딴지 걸지 않아 좋아요. 회사에서는 코드 리뷰를 한답시고 창의적인 코딩은 할 수가 없답니다. 다들 나이 먹더니 걱정인형이 되어서는 사이드 이펙트만 걱정하고 발전적인 내용은 없어요. 나이 먹어서도 ..

Android에서 화면 크기를 픽셀로 얻는 방법

안드로이드 앱을 개발하다보면 스마트폰의 각각 다른 화면 크기로 인해 어려움을 겪고는 합니다. 이럴때는 스마트폰의 화면 크기 값을 불러와서 거기에 맞추어 코딩을 하면 됩니다. 이때 꼭 필요한것이 현재 화면의 크기를 가져오는것입니다. 아주 간단히 아래처럼 코드를 입력하면 해결이 됩니다. 1. 화면 크기 가져오는 코드 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; int height = size.y; Log.d(TAG, "Display size, width = " + width + " height = " + height); 2. 앱..

안드로이드 context란?

Context? 이름에서 알 수 있듯이 응용 프로그램/개체의 현재 상태에 대한 컨텍스트입니다. 새로 생성된 개체가 진행 중인 작업을 이해할 수 있습니다. 일반적으로 프로그램의 다른 부분(활동 및 패키지/응용 프로그램)에 대한 정보를 얻기 위해 호출합니다. getApplicationContext(), getContext(), getBaseContext() 또는 this(Application, Activity, Service 및 IntentService 클래스와 같이 Context에서 확장되는 클래스에 있는 경우)를 호출하여 컨텍스트를 가져올 수 있습니다. 컨텍스트의 일반적인 용도: 새로운 objects를 만들때 사용: Creating new views, adapters, listeners: TextView..

안드로이드 키패드 숨기는 방법. InputMethodManager

안드로이드 앱을 개발하다보면 입력란에 글자를 모두 입력하고 키패드를 숨기고 싶을때가 있습니다. 이럴때는 아주 간단히 API를 사용해서 숨기기가 가능합니다. 1. 키패드가 나오는 화면 아래 그림처럼 글자를 입력하려고하면 발생하는 입력기를 코드에서 숨기는 방법을 공유합니다. 2. 해결 코드 -. 해결 코드는 아주 간단합니다. 아래 코드를 복사해서 붙인 다음 hide()함수를 호출해주는 순간 키패드는 숨게 됩니다. void hide() { InputMethodManager imm = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); //Find the currently focused view, so we can grab the..

java.lang.ClassCastException: androidx.emoji2.text.SpannableBuilder cannot be cast to java.lang.String

안드로이드 문자열 값을 다루다 보면 가끔 마주치는 에러입니다. 예를들면 char 형태의 값에 string Casting 할 때 발생하곤 합니다. 아래 예제를 보면서 해결 책을 공유드립니다. 1. 오류 로그 -. 문제 발생시 아래처럼 SpannableBuilder cannot be cast to java.lang.String 이라는 문구가 발생합니다. 2. 예제 코드 (오류 포함) -. 아래 파란색으로 마킹된 부분에서 에러가 발생합니다. CharSequence 타입인 s를 string으로 casting 하기 때문입니다. 실제로 이 문제를 해결하는 방법은 아주 간단합니다. 3. 해결 방법 -. 이 해결 방법은 꼼수(?)가 아니라 정식 해결 방법입니다. 보기엔 조금 이상해보이지만, 실제 코드를 따라가보면 아주..

안드로이드 px, dip, dp 와 sp 차이 설명

안드로이드 개발할때 쓰는 단위가 여러가지가 있습니다. 예를들어 layout 에서 textview의 위치나 크기를 입력할때는 dp를 쓰고 있습니다. 글씨의 크기를 지정할때는 sp를 사용하고 있습니다. 이런 용어들을 정리해봤습니다. 우선 아래 예제를 보면 sp, dp, pt를 사용하는 예제를 확인할 수 있습니다. 실제 layout 정보는 아래와 같습니다. 이제 각 단위에 대해 알아보겠습니다. 1. px -. 픽셀 - 화면의 실제 픽셀에 해당합니다. 2. in -. 인치 - 화면의 물리적 크기를 기준으로 합니다. 1인치 또는 2.54센티미터 3. mm -. 밀리미터 - 화면의 물리적 크기를 기반으로 합니다. 4. pt -. 포인트 - 화면의 실제 크기를 기준으로 1/72인치입니다. 5. DP 또는 dip -...

[수정완료] FAILURE: Build failed with an exception.

안드로이드 개발중에 종종 발생하는 에러입니다. 아래처럼 android studio setting에서 Gradle User home 을 변경하면 해결이 되는 경우가 많습니다. 아래 1번 2번 3번 중 하나는 해당 문제 해결이 대부분 가능합니다. 1. gradle user home 메뉴를 이용해 해결하는 방법 File -> Settings 를 누릅니다. Build Tools -> Gradle -> Gradle User home 메뉴의 폴더 모양의 아이콘을 클릭합니다. 이후 .gradle을 현재 열려있는 프로젝트의 .gradle을 선택합니다. 2. Gradle version up 하는 방법 -. 아래의 JDK선택하는 메뉴에서 원하느 gradle 버전을 선택해서 sync up 하면 해결이 됩니다. 3. Sync..

OutOfMemoryException 해결 방법

에러 이름에서 알 수 있듯이 메모리가 부족한 상태에서 나오는 exception입니다. Exception in thread “main”: java.lang.OutOfMemoryError: Java heap spac Heap size의 부족으로 Java Object를 Heap에 할당하지 못하는 경우. Exception in thread “main”: java.lang.OutOfMemoryError: PermGen space Class나 Method 객체를 PermGen space에 할당하지 못하는 경우 발생 애플리케이션에서 너무 많은 class를 로드할 때 발생한다. 주로 잘못된 설계/구현에 의해 발생한다. -XX:PermSize, -XX:MaxPermSize Option을 이용하여 오류를 수정하기도 한다...

IOException 해결 방법

안드로이드 개발시 흔하게 보이는 에러중에 하나입니다. 보통 입출력 관련 에러에서 흔하게 발생합니다. 예를 들면 파일을 기록하거나 읽어올때 발생합니다. 사실, 개발하다보면 여러가지 경우에 발생하는게 바로 IOException입니다. 1. 에러 -. 아래는 에러 발생시의 로그입니다. error: unreported exception IOException; must be caught or declared to be thrown input.readLine(); 2. 에러 코드 (오류 포함) 3. 해결 방법 -. 위 에러의 경우는 에러 발생 가능성이 있는 부분에 throw 처리를 안하고 있기 때문입니다. 아래처럼 throw 할 수 있는 exception을 추가해주면 문제는 자연스럽게 해결이 됩니다. 4. 백서 (..

Default Activity not found 해결 방법

안드로이드 개발중에 아래처럼 Could not identify launch activity: Default Activity not found 이라는 에러 메시지를 보게 된다면 간단히 해결할 수 있는 해결 방법을 공유합니다. 1. 에러 로그 -. Could not identify launch activity: Default Activity not found Error while Launching activity Failed to launch an application on all devices 2. 에러 코드 -. java / kt 파일에선는 에러의 원인을 찾을 수 없습니다. AndroidManifest.xml에 보면 그 원인을 찾을 수 있습니다. 위 XML 파일을 보게 되면 .MainActivity를 정..

반응형