336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

sp와 dp는 Android 개발에서 UI 요소의 크기를 지정할 때 사용하는 단위입니다. 이 두 단위는 화면 크기와 해상도에 관계없이 일관된 크기를 유지하는 데 중요한 역할을 합니다.

dp (Density-independent Pixels)

  • 정의: dp는 밀도 독립 픽셀(Density-independent Pixels)을 의미합니다.
  • 사용 목적: 주로 레이아웃 크기(너비, 높이, 패딩, 마진 등)를 지정할 때 사용합니다.
  • 특징: 화면 밀도(density)에 따라 크기가 조정됩니다. 예를 들어, 고해상도 디스플레이에서도 동일한 물리적 크기를 유지합니다.
  • 계산 방법: 1 dp는 기본적으로 160 dpi(dots per inch) 화면에서 1 픽셀에 해당합니다. 고밀도 화면에서는 더 많은 픽셀을 차지합니다.
val padding = 16.dp
Box(modifier = Modifier.padding(padding)) {
    // ...
}

sp (Scale-independent Pixels)

  • 정의: sp는 스케일 독립 픽셀(Scale-independent Pixels)을 의미합니다.
  • 사용 목적: 주로 텍스트 크기를 지정할 때 사용합니다.
  • 특징: dp와 마찬가지로 화면 밀도에 따라 크기가 조정되지만, 사용자 설정에 따른 글꼴 크기 조정(scale)도 반영됩니다. 사용자가 기기 설정에서 글꼴 크기를 변경하면 sp 단위로 지정된 텍스트 크기도 변경됩니다.
  • 계산 방법: 기본적으로 dp와 비슷하게 동작하지만, 추가로 사용자 설정에 따른 스케일링이 적용됩니다.
val fontSize = 16.sp
Text(text = "Hello, World!", fontSize = fontSize)

차이점 요약

  1. 사용 목적:
    • dp: 주로 레이아웃 크기를 지정할 때 사용.
    • sp: 주로 텍스트 크기를 지정할 때 사용.
  2. 스케일링:
    • dp: 화면 밀도에 따라 크기가 조정됨.
    • sp: 화면 밀도와 사용자 설정(글꼴 크기)에 따라 크기가 조정됨.

dp 사용예제

@Composable
fun DpExample() {
    Box(
        modifier = Modifier
            .size(100.dp)  // 100 dp 크기의 박스
            .background(Color.Blue)
    )
}

sp 사용예제

@Composable
fun SpExample() {
    Text(
        text = "Hello, World!",
        fontSize = 24.sp  // 24 sp 크기의 텍스트
    )
}

 

이 두 단위를 적절히 사용하면 다양한 화면 밀도와 사용자 설정을 고려하여 일관된 UI를 제공할 수 있습니다. dp는 주로 레이아웃 요소의 크기를 정의하는 데 사용하고, sp는 텍스트 크기를 정의하는 데 사용합니다. 이를 통해 사용자 경험을 개선하고, 다양한 디바이스에서 일관된 UI를 유지할 수 있습니다.

'Android' 카테고리의 다른 글

Kotlin | Jetpack Compose 란?  (0) 2024.07.15
Kotlin | 함수의 구성요소  (1) 2024.07.15
Kotlin | var, val 차이점  (0) 2024.07.14
Android Studio 설치 및 환경설정  (0) 2024.07.13
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Jetpack Compose는 Android UI 개발을 위한 최신 선언적 UI 툴킷입니다. Jetpack Compose는 기존의 XML 기반 UI 개발 방식과 달리, 코틀린 코드를 사용하여 UI를 선언적(declarative)으로 작성합니다.

주요 특징

  1. 선언적 UI (Declarative UI):
    • UI 상태에 따라 UI를 그리며, 상태가 변경되면 자동으로 UI를 업데이트합니다. 이는 기존의 명령형(imperative) 방식보다 직관적이고 유지보수가 용이합니다.
  2. 코틀린 기반:
    • Kotlin 언어의 모든 장점을 활용할 수 있으며, 코틀린 DSL을 통해 더욱 간결하고 직관적인 UI 코드를 작성할 수 있습니다.
  3. 모듈성 (Modularity):
    • UI를 작은 컴포저블 함수로 나누어 재사용성을 높이고, 큰 애플리케이션을 더 쉽게 관리할 수 있습니다.
  4. 강력한 테마 및 스타일링:
    • Material Design 컴포넌트를 기본으로 제공하며, 테마와 스타일을 쉽게 적용할 수 있습니다.
  5. 미리보기 기능:
    • Android Studio에서 코드 변경 사항을 실시간으로 미리볼 수 있는 기능을 제공하여, 개발 속도를 크게 향상시킵니다.

Jetpack Compose의 주요 컴포넌트

1) @Composable 애노테이션:

  • 컴포저블 함수는 UI를 구성하는 기본 단위입니다. 이 함수는 상태를 기반으로 UI를 선언적으로 정의합니다.

2) 상태 관리:

  • remember, mutableStateOf 등을 사용하여 상태를 관리하고, 상태 변화에 따라 UI를 자동으로 갱신합니다.
@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }

    Button(onClick = { count++ }) {
        Text(text = "Clicked $count times")
    }
}

3) 레이아웃:

  • Column, Row, Box 등 다양한 레이아웃 컴포저블을 제공하여 UI 요소를 배치할 수 있습니다.

4) Material Design:

  • Button, Card, TextField 등 Material Design 컴포넌트를 기본으로 제공하여 일관된 디자인을 쉽게 구현할 수 있습니다.

5) 애니메이션:

  • animate* 함수와 트랜지션 API를 사용하여 쉽게 애니메이션을 추가할 수 있습니다.

 

Compose Function (구성가능한 함수)

  • UI 일부를 설명합니다.
  • 아무것도 반환하지 않습니다.
  • 몇 개의 입력을 받아서 화면에 표시되는 내용을 생성합니다.
  • @Composable 주석으로 주석 처리됩니다. 모든 컴포저블 함수에는 이 주석이 있어야 합니다. 이 주석으로 함수가 데이터를 UI로 변환하게 되어 있다는 것을 Compose 컴파일러에 알립니다. 

Compose Function 이름의 특징

    • 명사여야 함: DoneButton()
    • 동사 또는 동사구이면 안 됨: DrawTextField()
    • 명사화된 전치사이면 안 됨: TextFieldWithLink()
    • 형용사이면 안 됨: Bright()
    • 부사이면 안 됨: Outside()
    • 명사 앞에는 명사를 설명하는 형용사를 붙일 수도 있음: RoundIcon()

참고:

 

androidx/compose/docs/compose-api-guidelines.md at androidx-main · androidx/androidx

Development environment for Android Jetpack extension libraries under the androidx namespace. Synchronized with Android Jetpack's primary development branch on AOSP. - androidx/androidx

github.com

 

 

Composable  |  Android Developers

androidx.compose.desktop.ui.tooling.preview

developer.android.com

 

Jetpack Compose는 현대적인 Android UI 개발을 위한 강력하고 직관적인 툴킷입니다. 선언적 UI 패러다임을 사용하여 상태 기반 UI를 작성하며, Kotlin과의 강력한 통합을 통해 더욱 간결하고 유지보수하기 쉬운 코드를 작성할 수 있습니다. 이를 통해 개발자들은 더 생산적으로, 더 직관적인 방식으로 Android 애플리케이션을 개발할 수 있습니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Kotlin 함수의 구성요소는 함수 정의에서 사용되는 여러 요소들을 포함하며, 이를 통해 함수의 동작과 특징을 정의할 수 있습니다. 다음은 Kotlin 함수의 주요 구성요소와 예제입니다:

함수 정의의 주요 구성요소

  1. 함수 선언 (Function Declaration):
    • 함수의 이름과 매개변수, 반환 타입을 정의합니다.
  2. 매개변수 (Parameters):
    • 함수가 입력으로 받을 값을 정의합니다. 각 매개변수는 이름과 타입을 가집니다.
  3. 반환 타입 (Return Type):
    • 함수가 반환하는 값의 타입을 정의합니다. 반환 타입이 없으면 Unit을 사용합니다. (C에서 void 와 동일)
  4. 함수 본문 (Function Body):
    • 함수의 실제 동작을 정의합니다. 중괄호 {}로 둘러싸인 코드 블록 또는 단일 식으로 표현할 수 있습니다.
  5. 접근 제한자 (Visibility Modifiers):
    • 함수의 가시성을 제어합니다. (예: public, private, protected, internal)
  6. 디폴트 매개변수 값 (Default Parameter Values):
    • 매개변수의 기본값을 정의하여 함수 호출 시 생략할 수 있습니다.
  7. 인라인 함수 (Inline Functions):
    • 함수의 성능을 최적화하기 위해 inline 키워드를 사용하여 인라인 함수를 정의할 수 있습니다.
// 1. 함수 선언과 접근 제한자
public fun greet(name: String = "Guest"): String {  // 2. 매개변수, 3. 반환 타입, 6. 디폴트 매개변수 값
    // 4. 함수 본문
    return "Hello, $name!"
}

// 7. 인라인 함수
inline fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

// 함수 사용 예제
fun main() {
    // 디폴트 매개변수 값 사용
    println(greet())  // 출력: Hello, Guest!
    println(greet("Alice"))  // 출력: Hello, Alice!

    // 인라인 함수 사용
    val result = operate(3, 4) { x, y -> x + y }
    println(result)  // 출력: 7
}

주요 구성요소 설명

  1. 함수 선언:
    • fun 키워드를 사용하여 함수를 선언합니다.
    • 함수 이름은 greet입니다.
  2. 매개변수:
    • name: String은 name이라는 이름의 String 타입 매개변수입니다.
    • name 매개변수에는 기본값 "Guest"가 설정되어 있습니다.
  3. 반환 타입:
    • 함수가 String 타입의 값을 반환하도록 정의되었습니다.
    • 반환 타입은 매개변수 목록 뒤에 콜론(:)을 사용하여 지정합니다.
  4. 함수 본문:
    • 중괄호 {}로 둘러싸인 코드 블록입니다.
    • 이 함수는 문자열을 반환합니다.
  5. 접근 제한자:
    • public 키워드는 함수가 어디서나 접근 가능함을 나타냅니다.
    • Kotlin에서 접근 제한자는 기본적으로 public입니다.
  6. 디폴트 매개변수 값:
    • name: String = "Guest"에서 name 매개변수의 기본값은 "Guest"입니다.
    • 함수 호출 시 name 값을 생략하면 기본값이 사용됩니다.
  7. 인라인 함수:
    • inline 키워드를 사용하여 인라인 함수를 정의합니다.
    • 인라인 함수는 고차 함수의 성능을 최적화합니다.
    • operate 함수는 두 개의 Int 값과 이들을 조작할 람다식을 매개변수로 받습니다.

참고 : 

 

Kotlin을 사용한 첫 프로그램  |  Android Developers

Kotlin으로 간단한 프로그램을 만들고 수정하는 방법을 알아보세요.

developer.android.com

 

 

Kotlin에서 함수 만들기 및 사용하기  |  Android Developers

Kotlin의 함수 알아보기

developer.android.com

 

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

var

  • 가변 변수: var로 선언된 변수는 가변적이며, 초기화된 후에도 값을 변경할 수 있습니다.
  • 사용 예시:
var name: String = "Alice"
name = "Bob"  // name의 값 변경 가능

val

  • 불변 변수: val로 선언된 변수는 불변적이며, 초기화된 후에는 값을 변경할 수 없습니다. 이는 상수(constant)와 유사하지만, 컴파일 타임 상수는 아닙니다.
  • 사용 예시:
val name: String = "Alice"
// name = "Bob"  // 오류: val 변수의 값은 변경할 수 없음

 

주요 차이점

  1. 가변성 (Mutability):
    • var는 가변적(mutable)입니다. 한 번 초기화한 후에도 값을 변경할 수 있습니다.
    • val은 불변적(immutable)입니다. 한 번 초기화하면 값을 변경할 수 없습니다.
  2. 초기화 후 변경 가능성:
    • var는 언제든지 새로운 값으로 재할당할 수 있습니다.
    • val은 선언 시 할당된 값을 유지하며, 재할당이 불가능합니다. 그러나 참조하고 있는 객체의 내부 상태는 변경될 수 있습니다.

val과 참조의 불변성

val 키워드는 참조의 불변성을 의미하며, 객체의 내부 상태는 변경될 수 있습니다. 즉, val로 선언된 변수는 새로운 객체로 재할당할 수 없지만, 그 객체의 property는변경될 수 있습니다.

val person = Person("Alice", 25)
person.age = 26  // 객체 내부 상태 변경 가능
// person = Person("Bob", 30)  // 오류: val 변수에 새로운 객체 할당 불가

사용 권장 사항

  • val 사용: 가능하면 val을 사용하여 불변성을 유지하는 것이 좋습니다. 이는 코드의 안전성을 높이고, 예기치 않은 변경을 방지할 수 있습니다.
  • var 사용: 값이 변경될 필요가 있는 경우에만 var을 사용합니다.

Kotlin에서 val과 var를 적절히 사용하면 코드의 가독성과 안정성을 높일 수 있습니다. val을 기본으로 사용하고, 필요한 경우에만 var를 사용하는 것이 권장됩니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Windows OS 에서 Android Studio 설치하는 과정을 포스팅한다.

 

환경설정을 한 후 Android Studio 를 설치한다.

1. JDK 설정

2. Android Studio 설치

 

OpenJDK 설정

1. 아래 사이트에서 사용하고 싶은 JDK 버전을 다운로드 받는다. 이 포스팅에선 JDK17 을 설치한다.
https://openjdk.org/
https://jdk.java.net/java-se-ri/17


 

Java Platform, Standard Edition 17 Reference Implementations

Java Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Community. The binaries are available unde

jdk.java.net

 

 

OpenJDK

Learn about the key active Projects in the Community including Amber (high-productivity language features), Loom (lightweight concurrency), Panama (foreign functions and foreign data), Valhalla (primitive types and specialized generics), and, of course, th

openjdk.org

2. 다운로드를 받은 압축 파일을 압축해제 한다. 



3. 압축해제한 폴더 안에 jdk-17 를 환경 설정할 위치로 이동시킨다. 



4. [윈도우키+R키] 로 [실행] 창에 아래를 입력해 시스템 속성을 켠다.



5. JAVA_HOME 를 시스템변수에 추가한다.

설정 확인은 cmd 창에서 가능하다.

적용이 되지 않은 경우 입력된 내용을 다시 확인해보고 재부팅 후 다시 확인해보자

echo %JAVA_HOME%
# 설정이 되지않은 경우
%JAVA_HOME%
# 설정이 된 경우
c:\jdk-17

 

6. 시스템 변수에서 path 에 아래 경로를 추가한다.


7. 설치된 것을 확인하려면 cmd 창에서 아래 입력을 하면 된다.

java -version
javac -version

 

Android Studio 설치

 

1. Android Studio 다운로드 페이지로 이동해서 다운로드를 받는다.

https://developer.android.com/studio?hl=ko#get-android-studio

 

Android 스튜디오 및 앱 도구 다운로드 - Android 개발자  |  Android Studio  |  Android Developers

Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.

developer.android.com

 

2. 다운로드 받은 후 아래 링크를 참고하여 설치를 진행한다.

https://developer.android.com/codelabs/basic-android-kotlin-compose-install-android-studio?hl=ko#2

 

Android 스튜디오 다운로드 및 설치  |  Android Developers

Android 스튜디오를 다운로드하고 설치하는 방법을 알아보세요.

developer.android.com

 

 

 

+ Recent posts