본문 바로가기

[Android]

(37)
[Android] OutLineTextView - 글자 외곽선 더하기 #What TEXT 글자에 OutLine(외곽선) 추가 하는 방법 attrs.xml 생성 CustomView 생성 Layout 적용 #attrs.xml //외곽선 width //외곽선 color #CustomTextView package com.example.qt.web.view import android.content.Context import android.content.res.ColorStateList import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet import com.example.qt.R class OutLineTextVie..
[Android] PxToDp, DpToPx 인자,리턴 타입은 변경 적용해서 쓰시면 됩니다 fun convertPixelsToDp(px: Int, context: Context): Int { val metrics = context.resources.displayMetrics return px / (metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT); } fun convertDpToPixelsTo(dp: Float, context: Context): Int { val metrics = context.resources.displayMetrics; return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics).toInt() }
[Pattern] 책임 연쇄 패턴 (Chain-of-responsibility pattern) #What 실제 업무에 적용했었던 패턴을 소개하고자 합니다 chain of responsibility 책임 연쇄 패턴 : 문제를 두 개 이상의 객체(해결 담당자)에서 해결할 기회를 주고자 할 때 사용 *'responsibility : 책임자, 담당자'의 뜻도 있다. [개요] 어떤 문제나 요청사항이 발생했을 때 현재 담당자가 해결하지 못하면 다음 담당자에게 문제를 떠넘기는 패턴 요청은 1번째 담당자에게 우전 전달, 미해결시 2번째 담당자에게 전해진다.. 쭉쭉... [장점] 문제 요청 객체와 문제 해결 객체 사이의 결합도를 낮출 수 있다 담당자 Chain에서 담당자를 추가/삭제/순서변경 이 자유로우며 (객체지향) 각 담당자 클래스의 코드가 간결 해진다 문제 해결 가능성이 높은 담당자 부터 해결 시도 하게끔 ..
[Kotlin] 3. Data Class, by #데이터 클래스 (Data Class) 데이터를 저장하는 클래스를 사용할 때 유용한 클래스이다 'data class 클래스명 constructor(val name: String, val grade: Int)' 형태로 사용한다 [Kotlin Data Class의 기능] 코틀린의 Data Class는 toString(), equals(), hashCode() 를 컴파일러가 자동 생성 해준다 toString() 오버라이드 : 클래스의 데이터 값을 문자열로 편하게 보고자 equals() 오버라이드 : 동등 비교를 하고 싶을 경우 hashCode() 오버라이드 : equals()오버라이드 하면 hashCode도 오버라이드 해야 함 Java나, 코틀린 일반 클래스를 사용한다면, 위의 3가지 함수를 일일이 오버라이딩..
[Kotlin] 3.Interface, Class, 변경자, 초기화블록, 추상 프로퍼티 #Interface 추상 메소드 뿐만아니라 구현체 있는 메소드도 정의할 수 있다. (like 'default method' in JAVA 8) 상태 저장은 불가하다 //JAVA에서의 default method 예시 interface InterfaceTest { default void print() { System.out.println("This is Default Method"); } } 코틀린 Interface 사용법 override 변경자 꼭 붙여야 함 구현 메소드의 경우 오버라이드 안하고 그냥사용 할 수 있다(원한다면 override도 가능) interface Human { fun sleep() //일반 추상 메소드 -> 당연히 오버라이드 해야 함 fun speak() = println("I'm H..
[Kotlin] 2. 코틀린 기본 - 함수(2) #가변 인자 함수 인자의 개수가 달라질 수 있는 함수 컴파일러가 가변 인자들을 배열로 만들어 줌 vararg 변경자를 이용 이미 만들어져 있는 배열을 가변 인자로 사용 가능 = *(스프레드 연산자)를 사용 class Student(var name: String, var age: Int) { //가변 인자 함수 fun printFriend(vararg friends :String) { println("Tina's Friends = ${friends.asList()}") //전달받은 배열 friends를 print } } fun print() { val student = Student("Tina", 19); //1) 가변 인자 함수 호출 student.printFriend("Scott", "Dean", "B..
[Kotlin] 2. 코틀린 기본 - 함수(최상위/확장) #함수 호출 (인자에 이름 붙여 함수 호출) 함수 호출 시 인자에 이름을 붙여서 호출 할 수 있다 java에 정의된 함수일 경우 인자에 이름 붙여 호출은 불가(코틀린은 JDK 6과 호환되는데, 클래스 파일에 함수 파람 정보를 넣는것은 JAVA 8 이후 추가됨) 장점 : 함수 호출 코드를 명확하게 표시 할 수 있다 -> 가독성 UP fun paramNameTest(str1: String, str2: String, str3: String) {...} paramNameTest("11", "22", "33") //일반적 함수 호출 paramNameTest(str1 = "11", str2 = "22", str3 = "33") //인자에 이름 붙여 호출 #함수 호출 (디폴트 파람 값 추가) 함수 정의 시 파라미터에..
[Kotlin] 2. 코틀린 기본 - 맛보기 #What kotlin을 사용하기 위한 최소한의 코드 작성법을 알아보자 #변수 변수 선언 키워드 val vs var val = value = 변경 불가 = immutable =한 번 값이 셋팅 되면 변경 할 수 없는 final 변수 var = variable = 변경 가능 = mutable 타입 생략 가능/코틀린 컴파일러가 타입 추론 해 줌 val testStr : String (가능) val testStr = "" (가능) val test (불가능 -> 타입을 생략할 경우 초기화 필수!! 왜?? 컴파일러가 타입 추론할 건덕지가 없기 때문) #함수 fun 함수명(param1 : String, param2 :String) : 리턴타입{ return ~ } fun getLongerString(str1 : S..