Programming
[Android] Frame Layout
FrameLayout은 여러개의 View들을 중첩하고, 그 중 하나를 전면에 표시할 때 사용하는 레이아웃이다. 여러 뷰를 겹치게 배치할 수 있다는 점이 뷰 위젯을 겹치지 않고 순서대로 화면에 배치하는 LinearLayout과 가장 큰 차이점이다. FrameLayout을 사용하면 여러 View를 중첩하여 배치가 가능하기 때문에 좀 더 다양하게 화면을 구성할 수 있다. FrameLayout 화면에서 가장 전면, 즉 최상단에 보여지는 뷰는 xml 코드에서 가장 마지막에 해당하는 뷰가 배치된다. Linear Layout 같은 경우는 xml 에서 코드를 작성한 순서대로 화면에 배치가 되는데, Frame Layout은 이와 반대로 xml 코드를 작성한 순서 반대로 화면에 배치가 되어 xml의 가장 마지막으로 뷰가 ..
[Android] Relative Layout
Relative Layout은 부모(Parent) View 또는 자식(Child) View의 상대적 위치 관계를 정의하여 UI를 배치하는 Layout이다. LinearLayout은 가로나 세로 방향으로 View가 순서대로 배치되었지만 RelativeLayout은 View간의 상대적인 위치 관계를 정의하지 않으면 배치가 되지 않는다. 속성 뷰로 설정 layout_toRightOf="@" @뷰의 오른쪽 layout_toLeftOf="@" @뷰의 왼쪽 layout_aboveOf="@" @뷰의 위 layout_belowOf="@" @뷰의 밑 layout_toStartOf="@" @뷰의 시작부분 layout_toEndOf="@" @뷰의 끝부분 layout_alignRight="@" @뷰의 오른쪽으로 정렬 layo..
[Android] Linear Layout
Linear Layout은 View를 수평 또는 수직 방향으로 배치할 수 있는 레이아웃으로 orientation 속성을 통해 배치방향을 결정할 수 있다. 기본설정은 가로(horizontal)로 되어있다. //하위 뷰들을 수직방향으로 배치 android:orientation = "vertical" //하위 뷰들을 수평방향으로 배치 android:orientation = "horizontal" 간단한 페이지를 구성할 때는 Linear Layout을 사용하는게 좋지만 복잡한 페이지는 Linear Layout을 여러 번 사용하고, 중첩된 레이아웃으로 인해 레이아웃 처리 시간이 늘어나게 되므로 결국엔 어플리케이션을 무겁게 만들게된다.
[Android] Gradle Scripts
안드로이드 프로젝트를 생성하면 Gradle Scripts 라는 영역에 build.gradle, settings.gradle 등의 파일이 자동으로 만들지는데 이 파일들을 통해 안드로이드 프로젝트의 빌드 정보, 라이브러리 등을 관리할 수 있다. Gradle Scripts 의 구조 Gradle Scripts는 아래 그림과 같이 총 7개의 파일로 구성되어 있다. 1. build.gradle (Project: 프로젝트명) 프로젝트 수준의 gradle 설정 파일 2. build.gradle (Module: 프로젝트명.app) : 모듈 수준의 그레이들 설정 파일 : 모듈의 종류는 app모듈, 웨어러블 모듈, 안드로이드TV 모듈 등이 있다. : 보통 phone&tablet 프로젝트를 생성하기 때문에, 기본으로 app ..
[Kotlin] 기본형과 참조형
보통 프로그래밍 언어의 대부분 자료형은 기본형 자료형과 참조형 자료형만을 사용한다. 하지만 기본형과 참조형 모두 사용하는 Java와 달리 Kotlin에서는 참조형 자료형만을 사용한다. 기본형은 참조형에 비해 상대적으로 속도가 빠른데, 그럼 Kotlin은 Java보다 비효율적이라고 생각할 수 있지만 이는 잘못된 생각이다. Kotlin에서는 코딩할 때는 모두 참조형만 사용하는데, 이것은 다시 코틀린의 성능 최적화에 따라 JVM에 실행하기 위해 코틀린 컴파일러에서 기본형으로 대체된다. 즉 Kotlin에서도 기본형으로 대체될 수 있는 자료형은 코딩할 때는 참조형으로 사용하더라도, 실제로는 기본형으로 동작한다. 기본형(Primitive data type) 변수에 값 자체를 저장하며, Stack 영역에 생성된다. ..
[Android] AndroidManifest
AndroidManifest.xml 안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록 기본 설정 이 파일이 XML 문서임을 선언하는 문장 version은 XML의 버전을 의미하고 encoding은 이 파일에 적용되는 인코딩 방식이 무엇인지를 의미한다. manifest xmlns:android = "http//schemas.android.com/apk/res/android" xmlns:android는 android라는 'namespace를 선언한다' 는 뜻이다. 여기서 namespace는 고유한 URI를 의미한다. packge = "com.example.rp3_cong_baemin" 이 정보로 앱을 식별한다. gradle 파일에 설정된 applica..
[Android] 안드로이드 앱 크기단위
화면크기 화면의 실제 물리적 크기이미, 화면의 대각성 크기로 측정된다. 단순화하기 위해 Android에서는모든 실제 화면 크기를 네 가지 일반화된 크기 그룹으로 분류한다. 초대형 화면 : 최소 960dp x 720dp 대형 화면 : 최소 640dp x 480dp 보통 화면 : 최소 470dp x 320dp 소형 화면 : 최소 426dp x 320dp 화면 밀도 물리적 화면 공간 안에 있는 픽셀의 개수이며, 일반적으로 dpi(dots per inch:인치당 도트수)라고 부른다. 단순화하기 위해 Android에서는 모든 실제 화면 밀도를 여섯 가지 일반화된 밀도 그룹으로 분류한다. ldpi (저밀도) ~120dpi mdpi (중간 밀도) ~160dpi hdpi (고밀도) ~240dpi xhdpi (초고밀도)..
![[Java] Math클래스 관련 메소드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdVsrmP%2FbtrENgpRYLW%2FAAAAAAAAAAAAAAAAAAAAALoNfeEylpdXOHdqNI84HjfAbllbtF3dUen9z8UNvyY3%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DrlAtO0by66NlVRQcJlivEx9GMVE%253D)
[Java] Math클래스 관련 메소드
abs() Math 클래스의 abs() 메소드는 인자로 넘긴 데이터의 절댓값을 반환한다. 전달된 값이 양수이면 전달된 값 그대로 반환한다. import java.lang.Math; public class Main { public static void main(String[] args) { System.out.println(Math.abs(-10)); // 출력값 : 10 System.out.println(Math.abs(0)); // 출력값 : 0 System.out.println(Math.abs(10)); // 출력값 : 10 } } random() random() 메소드는 0.0~1.0 사이의 임의의 double형 데이터를 생성하여 반환한다. 해당 메소드를 사용하여 특정 범위의 난수를 발생시킬 수 있..