일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- LiveData
- Android
- 코틀린
- Navigation
- onLayout
- onMeasure
- 알고리즘
- 안드로이드
- CoordinatorLayout
- HTTP
- room
- 알림
- DataBinding
- AppBarLayout
- CollapsingToolbarLayout
- View
- Behavior
- recyclerview
- BOJ
- Algorithm
- ViewModel
- notification
- kotlin
- Coroutine
- CustomView
- sqlite
- lifecycle
- hilt
- 백준
- activity
- Today
- Total
목록Android (111)
개발일지
Google API를 사용해서 Google인증과 Google OAuth로 얻은 idToken값으로 People API를 사용하여 사용자의 다양한 정보를 얻을 수 있다. OAuth를 사용하면 프로젝트 자체에서 회원관리 기능을 구현할 필요가 없고 Google의 AccessToken으로 사용자의 정보를 받아오기 때문에 기존 ID/Password방식보다 보안이 좋다. 또한 사용자 입장에서 한번의 클릭으로 쉽게 로그인할 수 있는 이점이 있다. 1. Google API 콘솔 프로젝트 구성 만들기 console.cloud.google.com/ Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google..
문자열 서식 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를 생성할 ..