일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2d게임
- 코틀린
- 서브모듈 pull
- Kotlin
- 게임개발
- Android Studio
- github
- 개발
- 카페오냥
- 앱
- java
- Android
- github submodule
- 앱개발
- GIT
- 내 맘대로 정리한 안드로이드
- 안드로이드
- submodule sourcetree
- gitlab submodule
- DataBinding
- 쿼터뷰
- 서브모듈 sourcetree
- 안드로이드개발
- 티스토리
- 타이쿤
- Unity
- 안드로이이드 submodule
- 유니티
- firebase
- 목서버
- Today
- Total
목록안드로이드 (27)
Uing? Uing!!

안드로이드에서 화면을 그리다 보면 그림자가 있는 뷰를 만들어야 하는 일이 많다. 이런 식으로 배경에 그림자를 주기 위해서는 아예 배경 이미지 또는 drawable이 그림자를 갖도록 만들어버리는 방법이 있다. 하지만 elevation을 사용하면 따로 그림자가 포함된 리소스를 만들지 않고도 이렇게 그림자를 줄 수 있다. Elevation Elevation은 xml layout에서 뷰에 줄 수 있는 속성으로, API21부터 추가되었다. 레이아웃에서 그림자를 주고자 하는 뷰에 단순히 elevation을 dp값으로 집어넣어 주는 것만으로 그림자 표현이 가능하다. 아래 코드는 위에 첨부된 사진에 해당하는 레이아웃이다. Elevation 속성으로 넣어주는 dp값은 뷰의 z축, 즉 '높이'에 해당한다. 따라서 5dp,..
처음 안드로이드를 접하면, 화면에서 원하는 뷰에 접근하기 위해 findViewById 메소드를 사용하게 된다. 아, 요즘은 기초를 배울 때 코틀린 extensions를 사용하는 방식이 더 보편적일지도 모르겠다. 코틀린 익스텐션의 방식 역시 각 뷰에 캐싱을 걸어서 반복작업을 조금 줄여줄 뿐, 내부적으로는 이 findViewById 메소드를 사용하고 있다. 코틀린 extensions에 대해서도 이야기할 부분이 많지만, 우선은 findViewById 메소드를 들여다보고자 한다. findViewById의 동작 방식 기본적으로 findViewById 메소드는 id값을 이용해 특정 뷰를 받아와주는 메소드로, 액티비티, 프래그먼트, 뷰홀더 등에서 다양하게 사용이 되곤 했다. 이 메소드를 이용해 텍스트뷰를 가져와 데이..
아래 코드는 Animal이라는 클래스와 이를 상속받은 Dog와 Cat이라는 클래스이다. open class Animal { open fun makeSound() { println("making sound...") } } class Dog : Animal() { override fun makeSound() { println("bark!") } } class Cat : Animal() { override fun makeSound() { println("meow~") } } Animal 클래스의 인스턴스에 대해 makeSound() 메소드를 호출하면 "making sound..."라는 결과값이 출력된다. 반면 Dog, Cat 클래스의 인스턴스에 대해서는 이 문자열이 아닌 "bark!" 또는 "meow~"만이 ..
생성자(constructor) 클래스의 생성자를 설정하는 데에는 다양한 방법이 있다. 아래처럼 주 생성자를 설정하는 방법이 가장 대표적이라고 할 수 있겠다. class Dog(val name: String, val age: Int) 하지만 여러 종류의 생성자가 필요한 경우도 있다. 이를테면 name, age 중 일부만 가지고 생성하고 싶다면 이렇게 쓸 수 있을 것이다. class Person { private var name: String = "" private var age: Int = 0 constructor() constructor(name: String) { this.name = name } constructor(name: String, age: Int) { this.name = name this..
dp, sp, px 안드로이드에서 폰트 크기를 설정할 때 나는 일반적으로 sp를 사용한다. 다만 실제 디자인에서는 상황에 따라 sp가 아닌 dp, 심지어 px를 사용하는 경우도 있다. 안드로이드 개발자 문서에서는 dp와 sp, px에 대해 이렇게 설명한다. dp (밀도 독립형 픽셀) - 화면의 물리적인 밀도에 기반한 추상적인 단위입니다. 이 단위는 160dpi(인치당 도트 수) 화면에 상대적이며 화면에서 1dp는 대략 1px와 같습니다. 더 높은 밀도의 화면에서 실행한다면 1dp를 그리는 데 사용되는 픽셀의 수는 화면의 dpi에 적절한 배율로 확장됩니다. 마찬가지로 더 낮은 밀도 화면에서 실행한다면 1dp에 사용되는 픽셀 수는 축소됩니다. dp 대 픽셀의 비율은 화면 밀도에 따라 달라지지만, 반드시 정비..
클래스, 메소드, 프로퍼티 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("끼잉...") // 새로운 메소드 } 직접 수정할 수 없는 클..
리소스 안드로이드에서는 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 파일에는 값들이 이런 방식으로 지정되어 있..
Null-check Kotlin을 이용해 개발하다 보면 nullable한 값을 처리해야 할 일이 잦다. x가 확실히 non-null이라는 것을 가정할 경우에는 x!!로 활용하여 null이면 exception(NPE, Null-Pointer Exception)이 나도록 하기도 하고, 반대로 null일때도 다른 값으로 활용하고 싶다면 x?:0과 같이 null일 때 대신 사용할 값을 정해 주기도 한다. 하지만 '어떤 값이 null이 아닐 경우에만' 특정 기능을 실행하고 싶을 때도 많다. 예를 들면 '저장된 이름이 null이 아닌 경우에만 인삿말을 출력한다'와 같은 상황. 일반적으로 이렇게 어떤 값이 null인지 아닌지 확실하지 않는 경우, 이를 체크하기 위해 아래처럼 사용하곤 한다. if (name != nu..