일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다시정리하기
- 알고리즘 인증_1주차
- Filter
- iPortfolio
- foldindexed
- array랑 list
- 코틀린
- recyclerview
- filternot
- 코딩테스트
- 알고리즘 인증_2주차
- 알고리즘 인증
- 다시봐
- 다시 정리해야함
- 취준기록
- Today
- Total
목록전체 글 (136)
Moments of growth
Jetpack이 나오기 전 Support library라고 하는 라이브러리 모음집이 이미 존재했었지만 여러가지 문제점을 개선하면서 새로운 이름을 붙여 다시 나온 것이 Jetpack이다. Support library도 현재 사용 가능하지만 공식문서에서 AndroidX를 사용할 것을 권장하고 있다. AndroidX란 Jetpack의 라이브러리들을 묶은 패키지명이다. AndroidX는 기존에 사용중이던 com.andoird.support.* 라이브러리들을 하나로 통합한 것 아래 이외에도 여러가지 jetpack 라이브러리가 있다. +) Compose는 Jetpack에 추가된 새로운 도구 키트이다. (UI를 구성하는 코드를 xml이 아닌 클래스 파일에다 작성하는 기술) Reference) 안드로이드 Jetpack..
ViewTreeObserver로 View 측정하기 ViewTreeObserver를 통해서 리스너를 달고, 전체 ViewTree의 변화가 생길 때 시점을 알 수 있다. getRootView 메소드를 통해서 RootView의 높이와 최상단 부모 View의 높이를 서로 비교해서, 일정 크기(200dp)이상의 차이가 발생한다면 키보드가 올라왔다고 가정할 수 있다. mRootViewHeight와 mRelativeWrapperHeight는 px 단위의 값이므로 200dp를 px 단위로 변환해서 비교해야한다. dpToPx 함수 var mRootViewHeight = binding.clBg.rootView.height var mRelativeWrapperHeight = binding.clFirstApply.height..
갤러리에서 사진을 가져와서 프로필 사진을 다시 서버로 보내기! 며칠동안 수많은 구글링과 디버깅 끝에 성공했다. 헤더로 accesstoken을 받고, Body 값으로 File을 넣어줘야하는 API이다. MyPageService.kt interface MyPageService { @Multipart @POST("user/upload") fun postProfile( @Header("accesstoken") token: String, @Part file: MultipartBody.Part ): Call } @Multipart 어노테이션을 꼭 붙여줘야한다. Multipart란? Multipart는 HTTP를 통해 File을 Server로 전송하기 위해 사용되는 Content-type 이다. HTTP 프로토콜은 ..
서버 연동을 하면 가장 자주 볼 수 있는 에러가 아닐까 싶다. 이건 말 그대로 array값을 예상했으나 현재 object라는 의미이다. 위와 같이 "data" 값이 {} 중괄호, 즉 array의 값으로 와야하는데 밑에 코드처럼 data를 List 형태(object)로 선언해줬다. data class ResponseChangePW( val data: List, val status: Int, val success: Boolean, val message: String ) data class ResponseChangePW( val data: ExUser, val status: Int, val success: Boolean, val message: String )
cardView를 이용해서 그림자 elevation 효과 만들었다. elevation이 안 되는 경우를 검색해본 결과 보통 총 3가지 방법이 있었는데 android:elevation 값을 주고 android:background를 white로 줬고 그림자 그릴 공간을 확보하기 위해, 자식 뷰에 layout_margin 값을 주고 부모 뷰인 frameLayout에 padding 값+ clipToPadding=”false”을 줬다. 그런데도 elevation이 먹히질 않아서 다른 방법을 찾은 것이 cardView이다. 카드뷰로 cardElevation을 줬다. Reference) [안드로이드] 모서리가 둥근 ImageView | Round corner of ImageView CardView를 이용해서 모서리가..
보기 싫은 오류 문구.. 나의 해결책은 단 한가지였다. 용량 부족..!! 특히 에뮬레이터를 많이 만들고 지우고 반복하면 쓸데 없는 용량을 차지하게 된다. 삭제해주는 방법은 아래와 같다. C드라이브 용량을 비워주면 정상적으로 작동한다.
RegisterActivity -> 회원가입 완료 후 뒤로 가기했을 때 스택에 남아있지 않게 함 val intent = Intent(this, RegisterNameIdActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) //스택에 남지 않게 startActivity(intent) 주의할 점은 manifest에서 무조건 noHistory = "true" 라는 속성을 줘야한다. 예를 들어 a -> RegisterActivity -> c 순으로 진행인 경우 c에서 뒤로 가기를 누르면 a로 가게 된다. 이 프로젝트의 경우에서는 LoginMainActivity -> RegisterActivity(이메일, 비번 입력) -> RegisterN..
NestedScrollView에서 맨 밑에 있는 버튼을 bottom으로 제약을 주게 되면 키패드가 올라올 때 같이 따라 올라오게 되는 문제가 발생한다. android:windowSoftInputMode="adjustPan" 흔히 구글링해서 해결책으로 나오는 방법인데 scrollview에서는 적용되지 않는다. 그렇다고 scrollView를 안 쓸 수가 없었는데, 키보드가 올라올 때 자동으로 edittext가 가려지지 않게 올라가는 액션을 쓰기 위해서 scrollView를 포기할 수 없었다. 이 문제를 아래와 같이 해결했다. NestedScrollView 안에(cl_bg 안에) constraintLayout을 2개 넣은 구조 결론적으로 내용 작성하는 edittext와 다음 버튼 사이에는 일정한 간격이 최소한..