1. 안드로이드 유튜브 앱 만들어보기 안드로이드 유튜브 앱을 비슷하게 만들어보면서 익혔던 내용들을 정리해보았습니다. ExoPlayer 로 동영상을 재생하는 방법과 모션 레이아웃을 통해서 재생중인 동영상 프레그먼트를 아래로 쓸어 내리면 유튜브와 비슷하게 하단에서 재생이되는 방법을 주로 다뤄 봤습니다. 주요 기능 서버에서 동영상 목록 받아와서 보여주기 메인에서 동영상 항목 클릭 시 하단에 내려져 있던 프레그먼트가 올라오면서 재생 재생 도중 영상 부분을 쓸어 내리면 하단 배너형식으로 재생 및 일시정지 가능 모션 레이아웃, 리사이클러뷰 사이 스크롤이 가능하도록 구현 사용 기술 MotionLayout ExoPlayer mocky 결과 화면 1.1. 기본 레이아웃 구성 기본 메인 레이아웃은 위와 같이 구성되어있으며..
1. Android 화면 회전, 돌려도, 돌아가도 데이터 유지 시키기 엑티비티의 경우 화면을 회전하는 경우 지워지고 다시 만들어지게 되는데 이때 액티비티에 입력되어있는 등의 정보들이 날라갈 수 있습니다. 그렇기 때문에 saveInstanceState에 돌아가기 전의 상태를 저장해두었다가 다시 OnCreate() 시 원복할 필요가 있습니다. 안드로이드 LifeCycle(생명주기)는 6가지의 콜백함수로 관리된다. 화면이 가로/세로 모드 변경될 때 onDestory() 이후 onCreate() 가 다시 불린다. 더 정확히는 onPause() -> onStop() -> onDestory() 로 액티비티가 종료된다. 이후 다시 onCreate() -> onStart() -> onResume() 을 통해 다시 실행..
1. 안드로이드 dp 값을 px 값으로 알맞게 변환해주는 코드 안드로이드 개발 시 dp 값을 사용해서 ui를 나타내게 되면 각 기기의 해상도나 크기마다 알맞은 비율을 유지하면서 디자인을 보여줄 수 있습니다. 하지만 간혹 가다 dp 값이 아닌 px 값을 인자로 받는 매서드를 사용한다던가 px값이 필요한 경우 알맞게 구해주는 것이 필요합니다. 아래 코드는 dp 값을 context의 알맞은 dp값으로 변환해주기 때문에 융통성있게 마찬가지로 px 을 거의 dp 를 사용하는 것 처럼 사용해줄 수 있습니다. px값이 불가피하게 필요한 경우 사용하시면 되겠습니다. private fun dp2px(context: Context, dp: Int): Int { return TypedValue.applyDimension( ..
1. 안드로이드 에어비앤비 앱 비슷하게 만들어 보기 네이버 맵 api 를 이용해서 에어비앤비와 비슷한 안드로이드 앱을 만들어보았습니다. 네이버 지도를 메인으로 숙소 목록을 서버(mocky 사용)에서 받아와 지도상에 마커로 나타내주고 하단에 좌우로 스크롤 가능한 페이져를 둬서 숙소를 살필 수 있습니다. 주요 기능 네이버 지도 api 를 사용해서 지도를 보여줌 Mock api 를 사용하여 예약가능한 숙소 목록을 지도에 표시 하단 시트뷰를 통한 숙소목록을 인터렉션하게 표현 현재 보고 있는 숙소의 위치를 지도에서 중앙으로 연동 숙소를 눌러 외부로 공유할 수 있음 사용 기술 Naver map api mocky ViewPager2 CoordinatorLayout BottomSheetBehavior retrofit ..
1. 안드로이드 중고 거래 앱 만들기 (With kotlin) 코틀린으로 안드로이드 중고 거래 앱을 만들어 보았습니다. 사용자는 이메일과 비밀번호로 회원가입 및 로그인 하게 되며 이후 물건과 가격 물건 사진으로 게시글을 등록할 수 있으며 제품마다 상품 게시자와 채팅할 수 있는 채팅방 목록과 채팅 또한 구현합니다. 프래그먼트뷰를 사용해서 하단의 메뉴바를 통해서 fragment 를 전환하는 방식으로 앱을 동작합니다. 파이어베이스 storage 기능을 사용하여 이미지를 업로드하고 실제로 받아와서 게시글 목록에 뿌려주는 작업 또한 실습해 보았습니다. 또 사용자는 중고 판매 게시글을 올릴때 플로팅 액션 버튼을 사용해서 제품 게시글을 올릴 수 있습니다. 주요 기능 이메일로 회원가입 및 로그인/로그아웃 사진 포함 중..
1. 안드로이드 커스텀뷰 엑티비티 종료 시키기 커스텀 뷰를 정의하고 이를 메인 엑티비티 등에 넣거나 붙여서 사용할 때 해당 엑티비티를 종료해야하는 경우에 아래와 같은 코드를 사용할 수 있습니다. 사용 예시로 버튼을 클릭해서 앱을 종료하는 경우가 있습니다. private fun finishFunction() { val activity = context as Activity activity.finish() } binding.btnPositive.setOnClickListener { finishFunction() } 2021.06.22 - [Android] - [Android] 코루틴으로 url 이미지 불러오기 (String 👉 Bitmap) 2021.06.21 - [Android] - [Android] we..
1. 안드로이드 코틀린으로 이미지 url 에서 이미지뷰에 띄우기 코루틴을 사용해서 이미지 url 을 통해 인터넷 스트림을 열어서 Bitmap 으로 가져와 ImageView에 띄워주는 코드를 작성해봅시다. 코루틴을 몰랐을 때에는 쓰레드 오류, 여러 예외들이 터지면서 이미지 로드가 제대로 안되었고, 구글링 하여 찾는 코드는 asyncTask 를 사용하는 (레거시)코드 였는데 이미지는 불러와졌는데 그래도 시원하게 뻥 뚤리는 느낌이 아니었는데 답은 코루틴에 있었습니다. 이번에 프로그래머스에서 진행하는 데브 매칭 앱 개발자 과제 또한 이미지를 불러오는 부분이 있었는데 이부분이 코루틴을 사용할 수 있냐를 넌지시 제시해 놓은 것을 이제서야 깨닫고는 왜 내가 코루틴을 공부하지 않고 테스트를 봤는지 후회가 되더라고요. ..
1. 코틀린의 코루틴(Coroutine) 이란? 안드로이드 프로그래밍을 코틀린으로 할 때 코루틴 이라는 것을 사용할 수 있는데요? 코틀린의 '코'를 따서 'Ko'루틴 인줄 알았지만 사실 코루틴의 코는 co(함께, 동시에) 라는 의미를 가지고 있습니다. 즉, 동시성 프로그래밍 개념을 코틀린에 도입한 것이 코루틴 이라고 합니다. 내용추가 21.08.24) 코루틴은 코루틴이 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드입니다. 기존의 복잡한 AsyncTask 또는 다수 스레드 관리를 직접 해주지 않아도되며, 기존 다중 스레드 보다 훨씬 더 효율적으로 동작합니다. 코루틴의 특징으로는 코루틴은 스레드 위에서 실행되는데 여러가지 코루틴이 존재한다고 할때 코루틴1,2,3 이 있다고 칠 때 코루틴1 을 ..
1. 안드로이드 웹뷰 html 문자열 데이터 넣어서 불러오기 안드로이드 웹뷰에 주소(url)이 아니라 html 그 자체를 가지는 문자열 데이터로 내용을 로드하는 방법을 알아보겠습니다. 이번에 프로그래머스에서 실시한 대브 매칭 상반기에서 요구 했던 기능 중으로 서버에서 받아온 json 데이터로 html 문자열을 받아와서 띄워야 했던 것이 있었습니다. 이것을 모르고 저는 내부로 오는 url 을 받아서 loadUrl로 열려고 하였지만 인증오류때문에 열 수가 없었습니다. 해결하지못한 기능에 대해서 살펴보던 중에 발견한 것이 바로 overview 를 키로 갖는 데이터가 html 데이터임을 알았습니다. 이것이 왜 정작 과제 테스트 할때는 보이지 않았었는지.. 의문입니다. 아무튼 바로 알아보겠습니다. //data =..
1. 안드로이드 코드상에서 컴포넌트(textView) 속성 변경하기 drawble 자원 등을 가져와 텍스트뷰의 속성 백그라운드 등을 지정할 때 ContextCompat.getDrawable 으로 콘텍스트를 전달하며 해당 자원을 넘겨서 속성을 지정할 수 있습니다. (해당 코드는 코틀린으로 작성되었습니다.) textView.background = ContextCompat.getDrawable(this, R.drawable.circle_blue) 2021.06.18 - [Android] - [Android] Intent 에 데이터(값) 넣어서 엑티비티 전환하기