앱 개발 프로젝트에서 배운 점(4) : 프래그먼트 간의 데이터 전달
·
🎸 기타/AOS, Kotlin
이번 프로젝트에서 제일로 어려웠던 부분이다. 상황은 이렇다. 메인 액티비티 레이아웃에 가이드라인 8 : 2로 LinearLayout 8, Start 이미지 2로 잡았다. LinearLayout에는 weightSum=10으로 하여 텍스트뷰 0.5, 프래그먼트_1_1은 7, 프래그먼트_2_1은 2.5 이렇게 weight를 주어 레이아웃을 형성했다. 메인 액티비티는 시작화면이다. 1_1과 2_1 프래그먼트에서 값을 설정한 뒤, Start 버튼을 눌렀을 때 이 데이터들이 1_2와 2_2 프래그먼트로 이동해야 한다. Start.setOnClick 리스너를 사용하면 정보 전달이 쉽게 가능하나, 이미 Start 온클릭 리스너는 프래그먼트의 변경하는 역할을 메인 액티비티에서 하고 있음. 데이터 전달까지 Start 이미..
앱 개발 프로젝트에서 배운 점(3) : TextView 배열의 원소 증감 처리 및 메인 액티비티로 넘겨주기
·
🎸 기타/AOS, Kotlin
순서대로 레이아웃에 아래의 id로 저장되어 있다. image0 number0 image1 image2 number1 image3 image4 number2 image5 image6 number3 image7 프래그먼트간의 데이터를 주고받을 때, EditView 4개도 주고받아야 한다. 그래서 레이아웃의 EditVew id 하나하나당 총 4번으로 데이터를 넘겨주려 했는데, 코드의 가독성이 매우 낮아질 거 같아서 찾아보니 Textview 배열에 담아줄 수 있었다. 레이아웃에서 EditText 뷰의 아이디를 통일시켜준다. Textview 배열과 ImageView 배열 초기화 이미지에 따른 텍스트뷰 증감 처리 레이아웃에서 EditText 뷰의 아이디를 통일 Textview 배열과 ImageView 배열 초기화 ..
앱 개발 프로젝트에서 배운 점(2) : Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법
·
🎸 기타/AOS, Kotlin
Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법 스피너란, 이처럼 클릭을 했을 때 여러가지 목록을 뜨게 하는 기능이다. res - values - array.xml 을 만들어 그 안에 태그로 클릭했을 때 뜰 목록들을 지정할 수 있다. 그러고 kt 파일에서 이 array 이름을 호출해주면 된다. 스피너를 클릭했을 때 메소드 2개 오버라이딩 sound_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(p0: AdapterView?, p1: View?, p2: Int, p3: Long) { set_music = p2 } override fun onNothing..
앱 개발 프로젝트에서 배운 점(1) : 레이아웃, 프래그먼트, 뷰
·
🎸 기타/AOS, Kotlin
레이아웃 LinearLayout과 FrameLayout의 차이점 LinearLayout android:orientation 속성을 통해 자식 뷰들을 수직 or 수평 방향으로 순차적으로 배치한다. android:weight 속성을 통해 상대적인 가중치로 공간을 동적으로 할당가능 주로 여러 개의 자식 뷰나 뷰 그룹을 나열할 때 사용됨 이번 프로젝트에서는 LinearLayout으로, 가이드라인에 의해 80%만큼 하나를 만들고, weightSum = 10으로 주어 0.5만큼 텍스트뷰를, 7만큼 프래그먼트를, 2.5만큼 또 다른 프래그먼트를 띄우게 했다. FrameLayout 자식 뷰들을 상위 좌표에 겹치기 배치한다. 즉, 여러 자식 뷰가 추가되면 그 뷰들은 이전 뷰의 위에 배치된다. 단일 뷰나 뷰 그룹을 전체 ..
[코틀린] 코틀린의 '람다'(Lamda) 살펴보기
·
🎸 기타/AOS, Kotlin
이번 글을 적기에 앞서 살펴볼 내용은 다음과 같다. 1. 람다 (Lamda) 2. 데이터 클래스 3. Companion Object 4. Object Lamda (람다) 1. 람다 식은 마치 우리가 value처럼 다룰 수 있는 익명 함수이다. + 간결한 함수 표현 방식 2. 함수를 선언하지 않고도, 코드 내에서 함수를 정의하고 사용할 수 있게 해준다. 3. 메소드의 파라미터로 넘겨줄 수 있다. ex) fun maxBy(a:Int) => a : Int를 적은 파라미터 자리에 Fun을 넣을 수 있음. 4. return 값으로도 사용할 수 있다. 람다의 기본 형태 정의 val lamdaName : Type = {argumentList -> codeBody} val sum: (Int, Int) -> Int = ..
[코틀린] 자바와 비교하며 기초 문법의 모든 것
·
🎸 기타/AOS, Kotlin
자바와 크게 다른점 1. 세미콜론(;)을 쓰지 않는다. 2. 변수 선언 및 함수의 머릿줄이 다르다. -> int a = 10; == var a : Int = 10 -> void swap() || int add()가 아닌, fun swap() : Unit {} || fun add() : Int {} 3. 타입 추론이 가능하다. var a = 10 가능 4. 조건식에 if뿐만이 아닌, when이 추가되었다는 점 5. Nullable, 자바의 NPE가 개선이 되었다는 점 .. 나머지는 코드를 보며 알아보도록 하자 Hello World fun helloworld() : Unit { println("Hello World") } 이렇게 fun을 쓰고 함수 명()를 함. 콜론을 붙이고 Unit을 쓰면, 리턴 값이 없..