728x90 전체 글520 안드로이드 FrameLayout * 내부에 배치된 view 들이 같은자리에 계속 배치되는 layout * 화면구성보다는 탭과 같은 기능을 만들 때 사용하는 경우 주요 속성은 없다 배치되는 view는 모두 좌측 상단에 배치 margin 속성이나 layout_gravity 속성을 이용해 배치되는 위치를 결정하여 사용한다 2022. 5. 27. 안드로이드 LinearLayout 방향성을 가지고 view를 배치하는 layout 가로 혹은 세로방향으로 배치 주요 속성 orientation : 배치되는 모양을 결정 layout_weight : LinearLayout 안에 배치되는 View 들의 비율을 설정 # (N:M:O) 비율 설정 내부 레이아웃 2개 속성 값 버튼 속성 2022. 5. 27. 코틀린 개발시 추가 코틀린 개발할때 편하게 할 수 있음 build.gradle에서 추가 id 'kotlin-android-extensions' 작성 후 우측 상단 Sync Now 클릭 2022. 5. 26. 코틀린 set package set fun main() { val set1 = setOf(1,5,10,5,10) println("set1 = ${set1}") val set2 = mutableSetOf() println("set2 = ${set2}") for (item in set1) { println("item = ${item}") } println("set1.size = ${set1.size}") println("set2 = ${set2}") set2.add(10) set2.add(20) set2.add(30) set2.addAll(listOf(40,50,60)) println("set2 = ${set2}") set2.remove(30) println("set2 = ${set2}") val toList = set2.. 2022. 5. 26. 코틀린 map package map fun main() { val map1 = mapOf("key1" to 10,"key2" to 20,"key" to 30) println("map1 = ${map1}") val map2 = mutableMapOf() println("map2 = ${map2}") val map3 = mutableMapOf("key1" to 10,"key" to 11.11) println("map3 = ${map3}") println("map1.get(\"key1\") = ${map1.get("key1")}") println("map1[\"key2\"] = ${map1["key2"]}") println("map1.size = ${map1.size}") println("map1.keys = ${map1... 2022. 5. 26. 코틀린 리스트 package list fun main() { // 불변형 리스트 val list1 = listOf(10,20,30,40,50) val list2 = listOf("문자열1", "문자열2","문자열3") println("list1 = ${list1}") println("list2 = ${list2}") val list3 = mutableListOf() val list4 = mutableListOf("문자열1", "문자열2","문자열3") println("list3 = ${list3}") println("list4 = ${list4}") val list5 = emptyList() println("list5 = ${list5}") val list6 = listOfNotNull(10,20,30,null,40,.. 2022. 5. 26. 코틀린 문자열 package string fun main() { val str1 = "안녕하세요" println("str1[0] = ${str1[0]}") println(str1.equals("안녕하세요")) val str2 = str1.substring(1..3) println("str2 = ${str2}") val str3 = "HELLO world" val str4 = "hello world" println("str3.compareTo(str4) = ${str3.compareTo(str4)}") println("str3.compareTo(str4,true) = ${str3.compareTo(str4,true)}") println("str3.contentEquals(str4) = ${str3.contentEqual.. 2022. 5. 26. 코틀린 배열 package array fun main() { val array1 = arrayOf(10, 20, 30, 40, 50) println("array1 = ${array1}") println("array1.contentToString() = ${array1.contentToString()}") val array3 = intArrayOf(10, 20, 30, 40, 50) val array4 = doubleArrayOf(11.11, 22.22, 33.33) val array5 = arrayOf("문자열1","문자열2") val array6 = Array(5, { 0 }) println("array6 = ${array6.contentToString()}") val array7 = Array(5) { it * .. 2022. 5. 26. 코틀린 고차함수 package highorderfunc // 매개변수로 함수를 받는 함수 fun main() { val t1 = fun(x1: Int, x2: Int): Int { return x1 + x2 } testFunc1(t1,100,200) testFunc1(fun(x1:Int,x2:Int):Int{ return x1 - x2 },100,200) val lambda1 = {x1:Int, x2:Int -> x1 *x2} testFunc1(lambda1,100,200) testFunc1({x1:Int,x2:Int -> x1/x2},200,100) val t2 = testFunc2() val r2 = t2(100,200) println("r2 = ${r2}") val t3 = testFunc3() val r3 = t.. 2022. 5. 26. 코틀린 infix 함수를 연산자처럼 사용할수있음 package infixfunc fun main() { val v1 = 100 add2 50 } infix fun Int.add2(a1:Int) : Int{ return this + a1 } 2022. 5. 26. 코틀린 확장함수 package extentionfuc fun main() { val str1="abcd" println("str1.getUpperString() = ${str1.getUpperString()}") } // 기존 클래스에 메서드 추가 // 실제 변경된 자바코드 확인해보면 새로운 함수 생성 클래스에 메소드 추가 아님 fun String.getUpperString() : String{ return this.toUpperCase() } 2022. 5. 26. 코틀린 함수형 프로그래밍 package functionprograming fun main() { val r1 = testFun1(100, 200) println("r1 = ${r1}") val r2 = testFun2(100, 200) println("r2 = ${r2}") val r3 = testFun3(100, 200) println("r3 = ${r3}") val lambda1 : (Int,Int) -> Int = {a1:Int,a2:Int -> a1+a2} val r4 = lambda1(100,200) println("r4 = ${r4}") val lambda2 = {a1:Int,a2:Int -> a1+a2} val r5 = lambda2(100,200) println("r5 = ${r5}") val lambda3: (I.. 2022. 5. 25. 코틀린 연산자 오버로딩 package operatoroverloading fun main() { val num1 = 100 val num2 = 200 val a1 = num1+num2 println("a1 = ${a1}") val a2 = num1.plus(num2) println("a2 = ${a2}") val obj1 = TestClass(100, 200) val obj2 = TestClass(1000, 2000) val obj3 = obj1 + obj2 println("obj3.a1 = ${obj3.a1}") println("obj3.a2 = ${obj3.a2}") val obj4 = obj1 - obj2 println("obj3.a1 = ${obj4.a1}") println("obj3.a2 = ${obj4.a2}") }.. 2022. 5. 25. 코틀린 Sealed 열거형은 특정 값을 의마하는 상수들을 모와 관리하는 개념 Sealed 객체를 모아 관리하는 개념 package sealed fun main() { val v2 = Number2.SealedOne(1) val v3 = Number2.SealedTwo(2) checkNumber2(v2) checkNumber2(v3) } enum class Number(val num: Int) { ONE(1),TWO(2) } fun checkNumber(a1: sealed.Number) { when (a1) { Number.ONE -> println("1입니다") Number.TWO -> println("2입니다") } } sealed class Number2{ class SealedOne(val a1:Int,val a2:I.. 2022. 5. 25. 코틀린 열거형 package enums fun main() { printDirection(Direction.WEST) printDirection(Direction.EAST) val west:Direction = Direction.WEST printDirection(west) printNubmer(Number.ONE) } enum class Direction { NORTH,SOUTH,WEST,EAST } enum class Number(val num: Int,val str:String){ ONE(1,"일"),TWO(2,"이"),THREE(3,"삼") } fun printDirection(a1: Direction) { when (a1) { Direction.NORTH -> println("북쪽") Direction.SOU.. 2022. 5. 25. 코틀린 캐스팅 package casting fun main() { val obj1:SubClass1 = SubClass1() val obj2:SubClass2 = SubClass2() // 부모에 담는다 // 스마트 캐스팅 발생 val super1:SuperClass1 = obj1; // 스카트 캐스팅 발생 val inter1:Inter1 = obj2 //자식 클래스로 변경하는 경우 as 사용 // as : 지정된 클래스 타입으로 강제 변환하는 연산자(연관된 클래스만!!) super1 as SubClass1 inter1 as SubClass2 super1.subMethod1() inter1.subMethod2() //-------------------------------------- //일반적으로 is 사용하면 tr.. 2022. 5. 25. 코틀린 null 처리 package nullsafe fun main() { testFun1("문자열") //컴파일 에러가 아닌 런타임 에러이다 // testFun1(null) testFun2("문자열") testFun2(null) testFun3("문자열") testFun3(null) testMethod1("안녕하세요") testMethod1(null) testMehod2("안뇽") testMehod2(null) } // !! 널을 허용하지 않는 변수에 널을 허용하는 변수를 담아준다 // 되도록 사용하지 말자 fun testFun1(str:String?){ val value1:String = str!! println("value1 = ${value1}") } // ? 연산자 // null일 경우 뒤에 값 default로 사용.. 2022. 5. 25. 코틀린 익명 중첩 클래스 package innerclass // inner에서는 outer 접근 자유롭다 // outer에서는 inner 접근 어려움 fun main() { val obj1 = Outer1() val obj2 = obj1.Inner() obj2.innerMethod2() val t1 = TestClass2() t1.testMehtod1() val t3 = object :TestClass1(){ override fun testMehtod1() { println("익명 중첩 클래스의 testMehod1") } } t3.testMehtod1() // 인터페이스는 생성자 없음 val t4 = object :TestInter1{ override fun interMethod1() { println("익명 중첩 클래스의 in.. 2022. 5. 25. 코틀린 Generic package generic fun main() { val t1 = TestClass1() t1.testMethod1(100) val t2 = TestClass1() t2.testMethod1("dfdf") val t3 = TestClass2(100) t3.testMethod(200) } class TestClass1 { fun testMethod1(a1:T){ println("a1 = ${a1}") } } class TestClass2(var a1: T){ fun testMethod(a2: T) { println("a1 = ${a1}") println("a2 = ${a2}") } } // 불변성 // 제네릭 타입에 부모 클래스를 담을수 없다 class TestClass5() // 공변성 // 제테릭 타.. 2022. 5. 25. 코틀린 DataClass package dataclass // DataClass 매개체의 데이터를 관리하는 용도로 사용하는 클래스 // abstract, open, sealed, inner 클래스로 정의할 수 없다. // 반드시 주 생성자를 가지고 있어야 한다. fun main() { val obj1 = TestClass1(100, 200) val obj2 = TestClass2(100, 200) var obj5 = TestClass1(100, 200,300) var obj6 = TestClass1(100, 200,300) if (obj5 == obj6) { println("같은객체") } else{ println("다른 객체") } var obj7 = TestClass2(100, 200,300) var obj8 = TestCl.. 2022. 5. 25. 코틀린 Companion java static 이다 package companion //companion object 객체 생성하여 접근 불가능 fun main() { val obj1 = TestClass() println("obj1.a1 = ${obj1.a1}") obj1.testFun1() println("TestClass.a2 = ${TestClass.a2}") TestClass.testFun2() } class TestClass { var a1 = 100 companion object{ var a2 = 1000 fun testFun2() { println("testFun2") // 멤버변수 사용 x //println("a1 = ${a1}") } } fun testFun1(){ println("testFun1") print.. 2022. 5. 24. 코틀린 지연 초기화 package lazyinit fun main() { val obj = TestClass1() println("obj.a1 = ${obj.a1}") println("obj.a2 = ${obj.a2}") obj.testMethod1() println("obj.a3 = ${obj.a3}") println("obj.a4 = ${obj.a4}") } class TestClass1 { var a1:Int = 100 var a2:Int // 선언시 초기화를 하지 않아도 됨 // primitive 타입은 지원 X // val 선언 x lateinit var a3:String //4를 사용을 할때 초기화 val a4:String by lazy { println("a4 init") "문자열2" } init { a2 = .. 2022. 5. 24. 코틀린 property package property fun main() { val testClass = TestClass(100, 200) println("testClass.a1 = ${testClass.a1}") println("testClass.a2 = ${testClass.a2}") testClass.a1=101 println("testClass.a1 = ${testClass.a1}") val testClass2 = TestClass2() println(testClass2.v3) testClass2.v3=201 } // var getter, setter 둘다 사용 가능 // val getter만 사용 가능 class TestClass(var a1:Int,val a2:Int) class TestClass2{ var v1:.. 2022. 5. 24. 코틀린 상속 부모 클래스는 open 붙여줘야한다. package inherit fun main() { val subClass1 = SubClass1() println("subClass1 = ${subClass1.subMember1}") subClass1.subMember1() println("subClass1.superMember1 = ${subClass1.superMember1}") subClass1.superMethod1() val subClass2 = SubClass2() var subClass3 = SubClass3(1) } open class SuperClass1 { var superMember1 = 100 fun superMethod1() { println("supercalss1 의 메소드 입니다.") }.. 2022. 5. 24. 코틀린 생성자 package constructor fun main() { val obj1 = TestClass1() val obj2 = TestClass2() val obj3 = TestClass2(100, 200) val obj4 = TestClass3(1,2) val obj6 = TestClass5(1, 2) val obj7 = TestClass5(100) } class TestClass1 { init { println("객체 생성되면 자동으로 동작") } } class TestClass2 { var v1:Int = 0 var v2:Int = 0 constructor(){ println("매개변수 없는 생성자") } constructor(v1: Int, v2: Int) { println("매개변수 2개 생성자") .. 2022. 5. 24. 코틀린 반복문 for문 package iter fun main() { val a1 = 1..10 for (item in a1) { println("item = ${item}") } var a2 = 1..10 step 2 for (item in a2) { println("item = ${item}") } // val a3 = 10..1 val a3 = 10 downTo 1 for (item in a3) { println("item = ${item}") } val a4 = 10 downTo 1 step 2 for (item in a4) { println("item = ${item}") } } 2022. 5. 24. 코틀린 when package `when` fun main() { val a1 = 2 when (a1) { 1 -> println("a1 = 1") 2 -> { println("a1 = 2") } 3 -> println("a1 = 3") else -> println("값 없음") } val a2 =3 when (a2) { 1,2 -> println("1, 또는 2 입니다") 3,4 -> println("3, 또는 4 입니다") } val a5 =5 when (a5) { in 1..3 -> println("1~3 사이") in 4..6 -> println("4~6 사이") } println("setValue(1) = ${setValue(1)}") } fun setValue(a1: Int) = when(a1){ 1 -> ".. 2022. 5. 24. 코틀린 함수 package func fun main() { test1() test2(100,11.1) test3(100) // 기본값이 설정된 함수에만 사용 가능 test3(a2=3.3) println("test4(1,2) = ${test4(1,2)}") test5() test7() test7(1) test8() } fun test1() { println("etst1호출") } fun test2(a1: Int, a2: Double) { println("test2 호출") println("a1 = ${a1}") println("a2 = ${a2}") } fun test3(al: Int = 0, a2: Double = 0.0) { println("test3 호출") println("al = ${al}") println(.. 2022. 5. 24. 코틀린 변수와 자료형 var 수정가능 변수 val 수정 불가능 변수 변수 선언시 ? 작성시 null 허용 ? 작성 안하면 null 불가 var a5:Int = 500 var a6:Int? = null 변수 뒤 !! 붙이널 널허용하지않는다는 표시 컴파일 에러나지 않는다 var a5:Int = 500 var a6:Int? = null var a8:Int = a6!! 2022. 5. 24. logstash 패턴 불일치 태그 _grokparsefailure 해당 tag로 검색 2022. 5. 19. 이전 1 ··· 5 6 7 8 9 10 11 ··· 18 다음 728x90