Android 앱 34

android JetPack navigation 설정법 기초 (1)

안드로이드 JetPack 중에서 많이 사용되고 있고, 개발방향으로 구글에서 많이 밀고 있는 Navigation 의 기본 사용법에 대해 알아보도록 하겠습니다. Navigation 은 사용자가 앱 내의 여러 콘텐츠를 이동하고, 그곳을 들어갔다 나올수 있게 하는 상호작용을 의미 합니다. JetPack 의 Navigation 컴포넌트는 단순 버튼 클릭에서 부터 좀 더 복합한 패턴에 이르기까지 다양한 이동을 구현 할 수 있도록 도와 줍니다. 이제 본격적인 설정법을 알아 보도록 합니다. 우선 build.gradle 에서 설정 부터 추가 합니다. build.gradle (project) repositories { google() jcenter() } build.gradle (app) dependencies { .....

adroid Jetpack 이란?

Jetpack은 개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 제거, 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다. JetPack 은 개발자들이 더욱 쉽게 높은 퀄리티의 앱을 개발 할 수 있도록 도와 주는 라이브러리 모음입니다. JetPack 포함도니느 라이브러리들은 androidx.* 라는 이름으로 패키지화 되어 있고, android platform API 와는 분리가 되어 있습니다. 사용을 위해서는 원하는 jetpack에서 사용할 라이브러리를 선택하고, build.gradle(Project) 에는 저장소 -google() 추가 build.gradle(Module:App) 에 dependencies 에 추가 해 주면 됩니다. J..

import kotlinx.android.synthetic.main.activity_main.* 안될때

import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_main.* 이들이 안될때 plugins 에 'kotlin-android-extensions' 를 추가 하고 상단에 나오는 'sync now' 클릭 해 준다. plugin 을 추가 안 했을때는 import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_main.* 요걸 import 하라는 요청도 없다. 이게 안될때 나오는 문제로는 xml의 id 를 통한 접근이 불가능 하다. navController = na..

constaint layout (쉬움) - 위치의 결정

Constraint layout 은 어렵게 사용하면 어렵지만, 간단하게 생각하고 만들면 정말 쉽게 만들 수 있습니다. 처음부터 이것 저것 고려 하고 잘 만들면 좋겠지만 이번 포스트에선 간단한 앱을 만들기 위해 UI를 쉽게 구성 하는 방법에 대해 알아 보도록 하겠습니다. 배치 원하는 view 를 Palette 창에서 선택하여 드래그 & 드롭 으로 배치 하면 됩니다. 저는 recycleView 를 배치 해 보았습니다. 상하좌우로 4개의 동그라미가 있습니다. 이게 이 view (recycleView)의 영역을 나타냅니다. 뷰가 배치되면 자동으로 적당한 영역으로 잡히게 되는데 recycleView 는 Layout 전체 크기로 잡히게 되네요 뷰의 크기는 layout_width, layout_height 값으로 결..

view 크기 설정하는 값들

View 기본 설정값 match_parent = 부모와 동일한 크기 wrap_content = 실제 사용되는 크기 (포함된 컨테츠의 크기) 안드로이드 view의 크기를 지정할 때 사용되는 단위의 종류 - dp : 밀도 독립적 픽셀(Density-independent Pixels) UI 레이아웃을 정의할 때 레이아웃 치수나 위치를 밀도 독립적 방식으로 표현하기 위해 사용해야 하는 가상 픽셀 단위 - in : 인치(inch) 기반의 물리적 스크린 크기 - mm : 밀리미터(millimeters) 기반의 물리적 스크린 크기 - px : 스크린상의 실제 픽셀에 대응하는 단위. 픽셀 단위로 크기를 정하게 되면 화면 밀도가 큰 스크린에서는 작게 보여 지게 됨 -sp : 텍스트 크기를 정의하는 경우 sp(배율 독립적..

1. about Layout

View & ViewGroup & Layout 안드로이드에서 모든 사용자 인터페이스의 요소는 View 클래스(android.view.View)의 서브 클래스이다. 안드로이드에서 기본적으로 제공되는 어러 뷰 클래스 이외에도 계승을 통해 다양한 구성도 가능 하다. 기본적으로 제공되는 view 에는 button, textveiw checkbox 등이 있다. 이를 가르켜 widget(위젯) 또는 component(컴포넌트) 라고 부른다. ViewGroup은 그림 1과 같이 View와 다른 ViewGroup 객체의 레이아웃 구조를 정의하는 투명 컨테이너이다. ViewGroup 을 계승받는 객체는 composite view (복합뷰) 라 부른다. ViewGroup 또한 view 클래스를 계승 받는다. 위에서 언급했..

kotlin 코틀린 - 고차함수, 람다함수, 익명함수

고차함수 (High Order Function) 고차함수란 파라미터 또는 반환값으로 또 다른 함수가 사용되는 함수를 말합니다. 설명은 어렵지만 이해 하면 고차함수 자체는 어려운 내용이 없습니다. 함수를 변수처럼 입력으로 받을 수 있고 출력으로 사용 하는 함수 를 이르는 것일 뿐이니까요 fun add(num1:Int, num2:Int): Int { return num1 + num2 } fun sub(num1:Int, num2:Int): Int { return num1 - num2 } fun calc(func:(Int,Int)->Int, num1: Int, num2: Int) { var ret = func(num1, num2) println("Result $ret") } fun main(){ calc(::a..

kotlin 코틀린 - package scope 접근제한자

package 패키지는 소스코드 파일 첫줄에 선언해 주시면 됩니다. package com.tistory.arvigoes.testPackage 패키지의 이름은 마음대로 지으셔도 상관 없으나 만약 라이브러리화 해서 배포까지 염두에 둔다면 다른 모듈과의 충돌을 피하기위해 위와 같은 형태로 이름을 선언하시는게 유리 합니다. 많이들 사용하는 방식으로 회사(개인)의 메인 역순으로 순서대로 사용하고 마지막에 패키지의 용도 또는 식별가능한 의미있는 단어를 사용합니다. 만약 패키지 선언부가 없다면 kotilin은 이 파일을 default 패키지에 자동으로 포함됩니다. 이름충돌등이 발생할 수 있어 가능하면 패키지 이름을 지정하는 것이 좋습니다. import 이미 만들어둔 패키지나, 외부모듈의 패키지를 가져와 포함 시키는 ..

kotlin 코틀린 - 클래스 상속(inheritance), 추상화(abstract), interface

상속(inheritance) 상속은 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 상속을 통해 코드 재활용성을 제공하고, 클래스 간의 계층적 관계를 구성하여 다형성의 토대를 마련 합니다. 실제 주변에서 상속이 어떤 개념으로 사용되는지 한번 알아 볼까요? 이전까지 Dog 라는 클래스를 만들었습니다. 개(Dog)와 고양이(Cat)는 동물(Animal)이라는 속성을 상속 받고 있습니다. 그리고 진돗개, 삽살개, 등은 개 라는 속성을 상속 받고 있습니다. 이걸 코드로 한번 표현해 보도록 하겠습니다. open class Animal(var name:String, var owner:String, var type:String) { fun nameTag() { println("Type:${type}, n..

kotlin 코틀린 - class 클래스

클래스 기초 기본자료형 Char, Byte, Short, Int, Long 등도 코틀린 내부에서 제공하는 클래스 클래스는 고유의 값을 담는 변수인 속성 (attribute) 과 기능을 구현한 함수 (function) 으로 이루어져 있습니다. 클래스는 instance 를 만드는 틀입니다. 우리가 기본자료형 Int, Long 등을 사용할때 Int 를 직접 사용하지 않았습니다. var number : Int = 0 이렇게 변수를 만들어 사용하였습니다. 이 변수가 클래스의 인스턴스라고 생각하시면 이해가 쉽습니다. var number2 :Int = 1 추가로 변수를 선언한다면 number 와 number2 는 같은 클래스 이지만 다른 값을 가지는 instance 입니다. 이제 Kotlin 에서 클래스를 만들어 보..