Android 96

안드로이드 - BottomSheet , BottomSheetBehavior

간혹 앱을 사용하다보면 위아래로 슬라이드 하면서 크기가 늘어났다가 줄어들었다가 하는 화면을 찾아 볼 수 있다. 이런 화면들 말이다. 밑의 레이아웃을 위로 당기면 높이가 늘어나고 내려도 다 사라지지는 않고 남아있는 형태의 sheet. 이런걸 만들고 싶었는데 어떻게 하면 좋을지 고민하다가 한번 만들어봤다. 언제나 그렇듯 코드로 알아보자. CoordinatorLayout 이라는게 눈에 띈다. CoordinatorLayout 은 FrameLayout 같이 좌표를 자유롭게 지정 가능하다. 한개의 parent 아래 포함된 여러개의 child view 를 behavior 라는 것을 이용해서 다양한 애니메이션 효과를 표현해 낼 수 있다. 라고 간단하게 설명가능하다 . 나처럼 바텀시트에 사용할 수도 있고 , 밑으로 스크..

Android/Android UI 2021.08.31

Drawable Shape 코드로 색상 동적 변경

Drawable Shape를 배경 등.. 으로 사용할때 색상을 동적으로 변경하는 방법 입니다. TextView의 배경을 둥글게 하기 위해서 shape로 배경을 깔아주고 배경 색상은 아래와 같이 지정 해줍니다. GradientDrawable bgShape = (GradientDrawable) textView.getBackground(); bgShape.setColor(getResources().getColor(R.color.colorPrimary)); 코틀린에서는 var bgShape : GradientDrawable = get_auth_text_bt.background as GradientDrawable bgShape.setColor(resources.getColor(black)) 이렇게 사용합니다.

Android 2021.07.31

안드로이드 Dialog 만들기 (kotiln)

앱을 만들다보면 DIalog를 만들때다 종종 있다. 그럴때 어떻게 해야하는지 코드로 알아보자. 아래는 실제 Dialog 코드다. class MyDialog(context: Context, layoutId: Int) : Dialog(context) { var detector: GestureDetector? = null // 다이얼로그가 나와있을때 손가락 제스쳐에 따른 행동을 구현하기 위함 protected var mContext: Context private val iv: ImageView private val text: String companion object { private const val SWIPE_MIN_DISTANCE = 120 // 제스쳐에 사용될 상수 private const val SW..

Android 2021.07.30

RxJava - Observable과 Observer 의 차이

둘다 자주 나오지만 이름도 비슷한게 정확한 차이점에 대해 궁금해졌다. 그래서 여기저기 찾아다니며 알아봤는데 차이점은 아래와 같다. Observable은 int, String 등등 여러 형태의 데이터를 관찰할 수 있는 즉 Observer 가 사용할 수 있는 형태로 바꾸는 역할을 한다. Observer 는 Observable 로 만들어진 데이터를 전달받고 그 데이터로 특정 행동을 취하는 역할을 한다. 아래 그림을 보면 더 이해하기 편하다. Observable observable = Observable .just("test1", "test2") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); observable.subscrib..

RxJava - Observable을 제외한 다른 생산자들

전 포스팅에서는 Observable에 대해서 알아봤다. 기본적인 생산자였는데 Observable 0개에서 n개의 데이터를 전달하는 생산자다. 기본적인 생산자로 단건(0 or 1)이 아니면 대부분 Observable을 쓴다. observer 방식으로 consumer 등록시 Observer를 구현해 전달한다. consumer 방식을 사용할 시 onNext, onComplete, onError와 onSubscribe가 있다. val observer = Observable.just(11, 12, 13) .map { if (it == 12) throw IllegalStateException() // 12에 에러 else it } observer.subscribe( { println("onNext $it") }, ..