DeciamlFormat 으로 숫자 천단위로 콤마 넣기 프로그래밍을 하다보면 돈을 표기할때 콤마를 넣어서 표기 해야 할 일이 생길때가 있다. 그 때 아래 코드를 이용해서 처리하도록 하자. val dec = DecimalFormat("#,###") var test = 10000 dec.format(test) 참고로 소숫점 표기는 val dec = DecimalFormat("#,###") 이 부분에서 val dec = DecimalFormat("#,###.00") 으로 적어주면 표기된다. Kotlin 2021.10.07
RxJava를 Event Bus 처럼 쓰기 Event Bus 라는 라이브러리는 버스 네트워크의 동작 방식과 유사하게 하나의 이벤트를 동일 채널에 연결된 모든 노드들에게 보내는 역할을 해주는 라이브러리다. 안드로이드에서는 특정 동작을 했을때 intent 하거나 fragment 와 activity 사이의 데이터 전달을 할때 bundle이나 콜백 등 이런 동작들을 할 때가 있는데 이런 동작들은 코드의 재사용성을 줄이고 코드를 복잡하게 만들어서 깔끔하지 못한 코드가 될 수 있다. 이럴때 결합도를 낮추고 UI 끼리 데이터 통신을 더 편하게 처리하는게 이벤트 버스의 개념이다. 나는 interface 를 만들어서 콜백처리하는게 코드가 증가하고 불편해서 이 개념을 빌려다 쓸때가 많다. Rxjava로 이러한 동작을 어떻게 하게 할 수 있을까? 아래 코드처럼 Rx.. Android/RxJava, RxKotlin 2021.10.05
MVVM 을 왜 써야할까? MVP와 다른점이 뭘까 제목에 대한 의문을 잘 설명해둔 글이 읽어서 첨부한다. https://handnew04.github.io/posts/2020-11-24/ [Android] MVVM 예제도 다 1:1인데 MVP랑 차이가 뭘까? · Handnew's blog MVVM을 사용하는 이유? devHyeon님의 특강(?) 통해 알게된 MVVM을 사용하는 이유(MVP와 MVVM의 차이점)에 대한 정리. 직접 작성하신 샘플코드로 설명을 위해 만들어진 코드이기 때문에 실제로 사용한다 handnew04.github.io Android 2021.09.16
videoview 화면에 full 화면으로 영상크기 맞추는 코드 public class IntroVideoView extends VideoView { private static final int SCALE_TYPE_NORMAL = 0; private static final int SCALE_TYPE_CENTER_CROP = 1; private static final int SCALE_TYPE_FILL = 2; private int mScaleType; private int mHorizontalAspectRatioThreshold; private int mVerticalAspectRatioThreshold; public IntroVideoView(Context context) { this(context, null, 0); } public IntroVideoView(Co.. Android 2021.09.16
Fragment 에서 Activity의 finsh() 기능 만들기 프래그먼트에서 뒤로가기 버튼을 만들고 싶다면 ? 아래와 같이 사용하면 된다. 현재 this 의 프래그먼트를 remove 해준다. backbutton_iv.setOnClickListener { activity?.supportFragmentManager ?.beginTransaction() ?.remove(this) ?.commit() } Android 2021.08.31
안드로이드 - BottomSheet , BottomSheetBehavior 간혹 앱을 사용하다보면 위아래로 슬라이드 하면서 크기가 늘어났다가 줄어들었다가 하는 화면을 찾아 볼 수 있다. 이런 화면들 말이다. 밑의 레이아웃을 위로 당기면 높이가 늘어나고 내려도 다 사라지지는 않고 남아있는 형태의 sheet. 이런걸 만들고 싶었는데 어떻게 하면 좋을지 고민하다가 한번 만들어봤다. 언제나 그렇듯 코드로 알아보자. CoordinatorLayout 이라는게 눈에 띈다. CoordinatorLayout 은 FrameLayout 같이 좌표를 자유롭게 지정 가능하다. 한개의 parent 아래 포함된 여러개의 child view 를 behavior 라는 것을 이용해서 다양한 애니메이션 효과를 표현해 낼 수 있다. 라고 간단하게 설명가능하다 . 나처럼 바텀시트에 사용할 수도 있고 , 밑으로 스크.. Android/Android UI 2021.08.31
머신러닝 - 선형회귀를 뉴런으로 만들어보자. 앞서 선형회귀에 대해서 만들어봤는데 이걸 뉴런으로 한번 만들어서 써보자. class Neuron: def __init__(self): self.w = 1.0 # 가중치를 초기화합니다 self.b = 1.0 # 절편을 초기화합니다 def forpass(self, x): y_hat = x * self.w + self.b # 직선 방정식을 계산합니다 return y_hat def backprop(self, x, err): w_grad = x * err # 가중치에 대한 그래디언트를 계산합니다 b_grad = 1 * err # 절편에 대한 그래디언트를 계산합니다 return w_grad, b_grad def fit(self, x, y, epochs=100): for i in range(epochs): # 에포크.. AI 2021.08.29
머신러닝 - 선형회귀의 경사하강법 메모 학생 때 y = ax + b 라는 식을 자주 보곤 했다. 직선 그래프의 절편과 기울기로 x 값 y 값을 찾는 방식인데 선형회귀에도 비슷한 방식으로 사용된다 . 그러나 학생때는 x값 y값을 찾는것에 집중했다면 딥러닝에서는 데이터를 예측하기 위해서 가장 적합한 기울기와 절편을 찾는데 집중한다. 기울기를 선형회귀에서는 가중치(W) 라고 부르고 b 를 bias 라고 부른다. 그럼 한번 코드를 보면서 이해해보자. sklearn , 사이킷런이라고 부르는 파이썬으로 딥러닝을 공부할때 사용하기 유용한 데이터셋 라이브러리다. 여기서 내가 공부할때 참고한 당뇨병 환자 데이터를 가져와보겠다. from sklearn.datasets import load_diabetes diabetes = load_diabetes() prin.. AI 2021.08.29
android 10 대비하여 scopedStorage 구현 https://github.com/choidongkyu/ScopedStorage https://black-jin0427.tistory.com/242 카메라 예제와 함께 보는 Scoped Storage (안드로이드 Q 대응) 안녕하세요. 블랙진입니다. 카메라 예제와 함께 보는 Scoped Storage 포스팅 중 드디어 마지막인 안드로이드 Q 대응하기 입니다! 권한 가져오기 저장소의 종류 black-jin0427.tistory.com Android 2021.08.26
안드로이드 UI 공부 참고 참고자료 메모 https://github.com/material-components/material-components-android-examples GitHub - material-components/material-components-android-examples: Companion example apps and code for MDC-Android. Companion example apps and code for MDC-Android. Contribute to material-components/material-components-android-examples development by creating an account on GitHub. github.com https://github.com/mj.. Android/Android UI 2021.08.26