일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- notification
- DataBinding
- LiveData
- Coroutine
- Behavior
- View
- onLayout
- 안드로이드
- BOJ
- CollapsingToolbarLayout
- HTTP
- kotlin
- Navigation
- 코틀린
- CoordinatorLayout
- 백준
- ViewModel
- room
- 알림
- hilt
- sqlite
- Algorithm
- Android
- AppBarLayout
- onMeasure
- CustomView
- 알고리즘
- activity
- lifecycle
- recyclerview
- Today
- Total
목록Android (111)
개발일지

CollapsingToolbarLayout이 CollapseMode인지 아닌지 Handling하기 binding.nestedScrollView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> if (scrollY >= binding.toolbar.height && oldScrollY = binding.toolbar.height){ Log.d("COORDINATOR", "EXPANDED") } } Floati..

CollapsingToolbarLayout FrameLayout을 상속받은 View로 AppBarLayout이 CoordinatorLayout의 Child View에서만 정상작동 하듯이 CollapsingToolbarLayout은 AppBarLayout의 Child View일 때 정상작동 한다. Toolbar 기본적으로 toolbarId 값을 정하여 CollapsingToolbar에 Toolbar를 알리지만 굳이 추가하지 않아도 내부적으로 Toolbar를 찾는다. app:toolbarId="@id/toolbar" Title 기본적으로 title을 정하지 않으면 Toolbar의 title을 가져온다. titleEnabled를 설정하면 CollapsingToolbar의 Title을 사용하고 설정하지 않으면 ..

AppBarLayout LinearLayout을 상속받은 View로 Orientation이 Vertical만 지원한다. (Horizontal 사용시 Exception발생) AppBarLayout은 CoordinatorLayout의 Child View일 때만 정상작동하며 Scroll시 효과를 줄 수 있다. app:layout_scrollFlags scroll : Scroll에 대한 반응을 주려면 무조건 줘야한다. noScroll : 기본값 어떠한 반응도 하지 않는다. enterAlways : 언제든지 Scroll을 내리면 AppBar가 사라지고, 언제든지 Scroll을 올리면 AppBar가 나타난다. enterAlwaysCollapsed : Scroll을 내리면 min_height만큼 남기고 AppBar가..

CoordinatorLayout View간의 상호작용을 처리하기 위한 View이다. CoordinatorLayout이 Child View의 Behavior를 수신하여 다른 Child View에 Behavior를 전달한다. 각 Child View는 미리 정의된 Behavior를 사용하거나 새롭게 만든 Behavior를 사용하여 수신된 Behavior로 특정 작업을 수행할 수 있다. Scroll시 AppBarLayout 변경 SnackBar생성시 FloatingActionButton 위치 변경 Developer 정의 CoordinatorLayout is a super-powered FrameLayout. CoordinatorLayout is intended for two primary use cases: 1..

SnapHelper RecyclerView를 ViewPager처럼 사용하거나 NumberPicker처럼 Scroll하다가 하나의 Item을 자석처럼 끌어당겨 하나의 Item을 선택하게 도와주는 클래스이다. Kotlin val snapHelper = LinearSnapHelper() snapHelper.attachToRecyclerView(recyclerView) OnScrollListener를 사용해서 SnapHelper가 선택한 position 받기 recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { var currentPosition = RecyclerView.NO_POSITION override fun onScrol..

BindingAdapter Databinding을 사용하다 보면 기본적으로 제공하는 수식으로 표현 못하는 경우가 생긴다. (Glide를 사용한 ImageView 업데이트) BindingAdapter를 정의하면 해결할 수 있다. BindingAdapter object BindingAdapter { @JvmStatic @BindingAdapter(value = ["imageUrl", "error"], requireAll = false) fun loadImage(view: ImageView, url: String?, error: Drawable?) { Glide.with(view).load(url).error(error).into(view) } } @JvmStatic : Java에서도 호환을 도와주는 코드(J..

Databinding에서 제공하는 수식으로 XML에서 간단한 수식을 처리하여 Java나 Kotlin의 코드를 줄일 수 있고, 코드의 유지보수성을 높일 수 있습니다. import Java에서 import와 비슷한 의미로 변수를 선언할 때 사용한다. bind include를 사용하여 다른 layout을 포함할 때 다른 layout에 데이터를 결합하는 방법. => merge에서는 사용할 수 없다. default 데이터를 결합하기 전에 표시할 값을 선택한다. => Databinding을 사용하면 Design을 미리 볼 수 없는데 Design을 미리 볼 때도 사용할 수 있다. 문자열 리터럴 Databinding에서 문자열을 사용할 때 android:text='@{map["firstName"]}' android:t..

바인딩 객체 Databinding을 사용해서 Data를 결합하기 위해서는 DataBindingUtil이나 바인딩 클래스를 사용해서 바인딩 객체를 얻어야한다. Activity DataBindingUtil.setContentView를 사용해서 얻는다. abstract class BaseActivity(private val layoutId: Int) : AppCompatActivity() { protected lateinit var binding: VB override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() } protected open fun init() { initViewDataBinding(..