일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CollapsingToolbarLayout
- 알림
- Behavior
- Android
- onMeasure
- 안드로이드
- BOJ
- DataBinding
- CoordinatorLayout
- CustomView
- hilt
- activity
- kotlin
- 코틀린
- Navigation
- View
- Algorithm
- ViewModel
- notification
- lifecycle
- room
- HTTP
- sqlite
- onLayout
- Coroutine
- AppBarLayout
- LiveData
- recyclerview
- 백준
- 알고리즘
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지
문자열 서식 Android에서 UI와 관련된 문자열 리소스는 string.xml에 저장합니다. UI와 리소스를 분리하면서 다중 언어를 쉽게 지원할 수 있고 불필요한 코드의 중복을 줄일 수 있습니다. 정적 리소스 Hello World 위와 같은 정적인 문자열 리소스는 Java에서 getString과 XML에서 @string/hello_world로 사용할 수 있습니다. Hello World getString(R.string.hello_world) android:text="@string/hello_world" 동적 리소스 OOO님 안녕하세요. 위와 같이 동적인 문자열 리소스는 Java에서 getString과 XML에서는 Databinding으로 사용할 수 있습니다. %s님 안녕하세요 getString(R.st..
View와 ViewGroup을 상속받아서 직접 View를 만들 수 있지만 기존의 정의된 View나 ViewGroup을 상속 받아서 기능을 확장할 수 있다. View 만들기 class LoginButtonView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : MaterialCardView(context, attrs, defStyleAttr), DataBinding { override val binding: ViewLoginButtonBinding by lazy { DataBinding.get(this, R.layout.view_login_b..
CustomeViewGroup Android에서 기본으로 제공하는 ViewGroup(Layout) 대신 ViewGroup을 상속받아 UI를 구축할 수 있다. OverlapLayout 전체코드 class OverlapLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : ViewGroup(context, attrs, defStyleAttr, defStyleRes) { override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { var width = 0 var height..
MeasureSpec MeasureSpec은 View의 크기를 정할 때 중요하게 쓰인다. MeasureSpec은 ParentView에서 ChildView로 전달되며 크기에 대한 정보와 MeasureSpec Mode에 대한 정보로 구성되어 있다. MeasureSpec Mode UNSPECIFIED : Mode가 설정되지 않은 경우며 원하는 크기를 가질 수 있다. EXACTLY : 정확한 사이즈가 정해진 상태며 정해진 사이즈 안에서 원하는 크기를 가질 수 있다. (match_parent, fill_parent, 500dp 등 정확한 사이즈가 정해진 경우에 할당된다.) AT_MOST : 주어진 사이즈에서 원하는 크기를 가질 수 있다. (wrap_content로 주어진 경우 할당된다.) MeasureSpec 사..
CustomView Android에서 기본으로 제공하는 View로 UI를 구축할 수 없을 때 사용자가 직접 View를 상속받아서 CustomView를 만들 수 있다. ProgressView 전체코드 class ProgressView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : View(context, attrs, defStyleAttr, defStyleRes) { private val progressBarBackgroundPaint = Paint().apply { isAntiAlias = true style = Paint.Style.ST..
AttributeSet Android는 XML에서 View를 생성할 때 값을 설정할 수 있는 AttributeSet 인터페이스를 제공합니다. AttributeSet을 통해 View를 생성하면서 기본값을 쉽게 설정할 수 있습니다. View 만들기 View를 상속받고 기본 생성자를 설정한다. class ProgressView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : View(context, attrs, defStyleAttr, defStyleRes) { } AttributeSet 만들기 attr.xml에 선언하여 만들 수 있다. refe..
Android는 View와 ViewGroup을 통해 UI를 구축하여 사용자와 상호작용할 수 있다. 기본적으로 Button, TextView 등의 View와 ConstraintLayout, LinearLayout 등의 ViewGroup을 제공하기 때문에 쉽게 앱을 제작할 수 있다. 하지만 기본적으로 제공하는 View와 ViewGroup으로 원하는 UI를 구축할 수 없는 경우가 있으며, 이런 경우 View와 ViewGroup을 상속받아 직접 구현할 수 있고 기존의 정의된 View를 상속받아 기능을 확장할 수 있다. View Method View에서 제공하는 Method를 재정의하면서 View를 Custom화 할 수 있다. 구분 함수 설명 생성 constructor(Context) 코드에서 View를 생성할 ..
1. 데이터베이스 설정 MySQL에는 Databse라는 개념이 있다. Database별로 Table을 가지기 때문에 Database를 먼저 생성해야 한다. CREATE DATABASE IF NOT EXISTS taetae DEFAULT CHARACTER SET UTF8; SHOW DATABASES; * IF NOT EXISTS : 존재하지 않을 때만 생성한다. * DEFAULT CHARACTER SET : 기본 Encoding 방법을 설정한다. 2. 테이블 생성 USE 명령어를 사용하여 데이터베이스를 설정한다. USE taetae; DROP TABLE IF EXISTS Product; CREATE TABLE IF NOT EXISTS Product( id INTEGER PRIMARY KEY AUTO_INC..