일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 앱
- 게임개발
- GIT
- github submodule
- 개발
- 코틀린
- 티스토리
- java
- 2d게임
- Unity
- 목서버
- github
- 내 맘대로 정리한 안드로이드
- Kotlin
- 안드로이이드 submodule
- DataBinding
- firebase
- 안드로이드
- 카페오냥
- 안드로이드개발
- Android Studio
- gitlab submodule
- submodule sourcetree
- 서브모듈 pull
- Android
- 쿼터뷰
- 타이쿤
- 유니티
- 서브모듈 sourcetree
- 앱개발
- Today
- Total
목록전체 글 (80)
Uing? Uing!!
클래스, 메소드, 프로퍼티 Kotlin으로 개발을 하다 보면 클래스와 메소드, 프로퍼티를 자주 사용하게 된다. 아래는 Dog라는 객체를 클래스르 만들어 활용하는 대표적인 예시이다. class Dog(var name: String){ // 클래스 fun bark() = println("멍!") // 메소드 } var happy = Dog("Happy") happy.bark() // Dog.bark() 메소드 호출 여기에 새로운 메소드를 추가하고 싶다면, 간단하게 클래스 안에 새로운 메소드를 추가하면 된다. class Dog(var name: String){ fun bark() = println("멍!") fun whine() = println("끼잉...") // 새로운 메소드 } 직접 수정할 수 없는 클..
코드블럭 티스토리에는 왠지 개발자 블로그가 많은 것 같다. 개발 관련 포스팅이라면 대개 코드가 들어가기 마련이다. 티스토리 글쓰기에는 코드블럭을 삽입하는 기능이 있어서 코드를 입력하기가 편리하다. 글쓰기 폼의 상단 툴바 중 ...이라고 되어 있는 아이콘을 클릭하면 코드블럭을 추가할 수 있는 메뉴가 나온다. 이 코드블럭 삽입 기능을 누르면 코드 입력창이 뜬다. 언어를 선택하고 코드를 입력하고 완료를 누르면 이런 식으로 코드가 삽입된다. 코드블럭 기본 디자인 아쉽게도 위에 첨부한 사진과 같은 포맷은 글쓰기를 입력하는 창에서만 적용된다. 실제로 글을 발행하고 나면 이렇게 단순한 디자인으로 나타난다. 이 디자인은 티스토리 스킨의 설정에서 나오는 것으로, pre 태그에 설정되어 있는 값이 적용된다. 코드블럭 디자..
리소스 안드로이드에서는 string, integer, dimen, color, style 등 여러가지 값들을 Resource 내의 파일에 이렇게 지정해두고, 샘플 스트링 아래처럼 가져와서 사용할 수 있다. val animalName = resources.getString(R.string.sample_string) 리소스의 id를 동적으로 받아와야 하는 경우 리소스 아이디가 위의 예시처럼 sample_string과 같은 깔끔한 이름이라면 문제가 없지만, 이런 상황을 가정해 보자. 어플리케이션에 사용되는 100 종류의 동물이 있는데, 각 동물의 명칭은 strings.xml 파일에 animal_{동물id}라는 name으로 추가되어 있다. 그렇다면 strings.xml 파일에는 값들이 이런 방식으로 지정되어 있..
가변적인 파라미터 개수: vararg를 사용하지 않는다면 함수를 사용하다 보면 파라미터로 몇 개의 인자를 받게 될지 정확하게 정할 수 없는 경우가 있다. 또는, 처음에 설계했던 구조의 파라미터 개수만으로 원하는 조건을 만족시킬 수 없는 경우가 있다. 예를 들어 아래 코드는 "입력값: A"라는 문자열을 출력한다. fun main(){ printData("입력값", "A") } fun printData(name: String, value: String){ val result = "$name: $value" println(result) } 그런데, printData함수를 printData("입력값", "A", "B")와 같이 입력해서 "입력값: AB"도 출력하고 싶어졌다면? 첫 번째 방법: 함수 오버라이딩하기..
ANR이란? 안드로이드 앱을 실행하다 보면 '어플리케이션이 응답하지 않는다'는 팝업 경고 메시지를 마주할 때가 왕왕 있다. 이런 경우의 오류를 ANR(Application Not Responding)이라고 부른다. ANR은 왜 발생하는가? ANR에 대한 안드로이드 공식 문서에 따르면, ANR은 다음과 같은 두 상황에 발생한다. 활동이 포그라운드에 있는 동안 앱이 입력 이벤트 또는 BroadcastReceiver(예: 키 누름 또는 화면 터치 이벤트)에 5초 이내에 응답하지 않았습니다. 포그라운드에 활동이 없을 때 BroadcastReceiver가 상당한 시간 내에 실행을 완료하지 못했습니다. 즉, 앱이 일정 시간 내에 이벤트에 응답하지 못해서 발생한다는 것. BroadcastReceiver가 이벤트에 응..
코드를 뜯어보고 싶어요 안드로이드 개발을 조금 하다 보면 같은 기능을 하는 코드이더라도 여러가지 방법으로 전개가 가능한 경우가 많다. 특히 자바에서 코틀린으로 넘어오면서 느낀 점 중 하나가 정말 다양한 방식의 코드를 간결한 문법으로 지원해준다는 점이다. 이건 코틀린의 큰 장점이지만, 공부를 하는 입장에서는 간혹 코드만 봐서는 성능 상에 어떤 차이가 있는지 알 수 없을 때가 있다. 'Kotlin의 이 문법은 Java에서는 어떤 방식으로 전개되는 거지?' '이 함수를 여기에 정의하면 전역 static으로 정의되는 건가?' 'Null-check를 이렇게 간결하게 하면 실제로는 어떤 방식으로 체크하는 걸까?' 등등의 의문은 Kotlin 코드를 좀 더 명확하게 표시된 Java 코드의 형태로 바꾸어 보는 것으로 해..
Null-check Kotlin을 이용해 개발하다 보면 nullable한 값을 처리해야 할 일이 잦다. x가 확실히 non-null이라는 것을 가정할 경우에는 x!!로 활용하여 null이면 exception(NPE, Null-Pointer Exception)이 나도록 하기도 하고, 반대로 null일때도 다른 값으로 활용하고 싶다면 x?:0과 같이 null일 때 대신 사용할 값을 정해 주기도 한다. 하지만 '어떤 값이 null이 아닐 경우에만' 특정 기능을 실행하고 싶을 때도 많다. 예를 들면 '저장된 이름이 null이 아닌 경우에만 인삿말을 출력한다'와 같은 상황. 일반적으로 이렇게 어떤 값이 null인지 아닌지 확실하지 않는 경우, 이를 체크하기 위해 아래처럼 사용하곤 한다. if (name != nu..
Layout Inspector 개발을 하다 보면, 코드만으로는 어디에서 문제가 발생했는지 확인하기 난해할 때가 있다. 이를테면 그려진 화면을 보니 ImageView를 그리는 과정에서 뭔가 오류가 난 것 같은데, 그게 단순히 width 값의 문제인지, 아니면 다른 속성값의 문제인지 확인이 필요하다거나 할 때. 이럴 때면 개발자 입장에서는 지금 눈으로 보고 있는 특정 View가 가지고 있는 값을 실시간으로 확인하고 싶을 수 있다. 안드로이드 스튜디오의 Layout Inspector는 바로 이런 기능을 제공한다. 사용법은 아주 간단하다. 아래처럼 Tools > Layout Inspector 로 레이아웃 인스펙터를 활성화 시켜주기만 하면 된다. 그러면 이렇게 스튜디오의 오른쪽 아래 부분에 레이아웃 인스펙터가 활..