본문 바로가기

앱 제작/키워드 알림 앱18

왕초보 개발자의 안드로이드 앱 UI 기본 공부하기 - 1편 0. 시작하기에 앞서... 1. 아이콘 1-1. 아이콘 다운로드 1-2. 아이콘 활용 2. 텍스트 2-1. dimens 2-2. strings 2-3. style 2-4. 텍스트 간격 3. 여백(margin) 4. 높이(elevation) 0. 시작하기에 앞서... 나는 미적 감각을 어디 갔다 팔아먹었는지 UI를 꾸미는 데에는 영 소질이 없다. 간격은 어떻게 해야 할지 배치는 또 어떻게 해야 하는지 감각도 없어, 지식도 없어, 할 줄도 몰라... 그래서 이번에 공부를 좀 해봤다. 정말 정말 간단한 기초 지식만 왕초보 입장에서 적어보려고 한다. 1. 아이콘 1-1. 아이콘 다운로드 구글에서는 기본적으로 개발자들이 무료로 사용할 수 있게 아이콘을 제공한다. 위 경로를 따라가면 이런 창이 뜨는데 Clip Ar.. 2021. 1. 13.
SwipeRefreshLayout :: 당겨서 새로고침 하기 1. SwipeRefreshLayout란? 2. xml 소스 코드 3. activity 소스 코드 1. SwipeRefreshLayout란? 앱에서 게시물 목록을 당겨서 새로고침 할 때 사용하는 것이 바로 SwipeRefreshLayout이다. 화면을 당기면 빙글빙글 돌아가는 애니메이션이 뜨면서 setOnRefreshListener를 호출하게 되는데, 이때 리스너 안에 새로고침을 하기 위한 코드를 작성해 넣으면 된다. 나는 게시물 목록을 당길 때 목록이 손가락을 따라 같이 이동하다가 탁! 놓으면 새로고침 애니메이션이 빙글빙글 돌아가기를 원했는데 기본으로 제공되는 SwipeRefreshLayout은 그런 기능이 없는 듯하다. 따로 오픈 라이브러리를 사용하던가 해야 할 것 같다. (위 영상을 보면 알겠지만 .. 2021. 1. 9.
[코틀린] infinite/endless scroll(무한 스크롤)과 recyclerView 1. infinite/endless scroll 1-1. 개념 1-2. Progress Bar 1-3. 아이템 뷰(ItemView) 1-4. 홀더(Holder) 1-5. 스크롤 리스너(Scroll Listener) 1-6. 다른 최하단 도달 감지 방법 2. Adapter 1-1. 전체 소스 1-2. 코드 설명 3. Activity 3-1. 전체 소스 3-2. 코드 설명 4. 예제 다운로드 1. infinite/endless scroll 1-1. 개념 게시물 리스트를 쭉 내리다가 어느 지점에 도착하면 그다음 게시물 리스트를 가져오는 방법이 있다. 이것을 infinite scroll 혹은 endless scroll이라고 부른다. (심지어 어떤 외국 블로거는 ultimate scroll이라고 부르던데 딱히 정.. 2021. 1. 8.
[파이썬] FCM을 통해 앱으로 푸시알림 보내기 1. 준비물 1-1. pyfcm 설치 1-2. Server Key 1-3. Token 2. 푸시 알림 보내는 방법 1-1. 1명에게 보내기 1-2. 여러 명에게 보내기 1. 준비물 1-1. pyfcm 설치 커맨드에서 "pip install pyfcm"을 입력해서 라이브러리를 설치해도 되지만 평소에 이 방식대로 하면 오류가 자주 발생해서 번거롭지만 이렇게 설치하는 것을 추천한다. Pycharm 프로그램 기준으로 위 경로대로 클릭한다. 그다음 이름을 검색하고 설치해주면 끝이다. 1-2. Server Key 파이어 베이스 서버 키를 얻기 위해서 위 경로대로 클릭한다. 만약 아직 파이어베이스 연동을 하지 않았다면 아래 링크를 보고 따라하면 된다. [Kotlin] FCM 푸시 알림 구현하기 1. 기본개념 1-1... 2021. 1. 4.
Firebase 데이터베이스 딜레이 문제 해결(= 반환 값이 null일 때) 파이어 베이스를 사용해보는 것이 이번이 두 번째인데 너무나도 바보 같은 짓으로 삽질을 무진장 해버려서 기록을 남기려고 한다. 그리고 저 처럼 혼자 인터넷으로 공부해서 옆에서 올바른 방법을 지적해 줄 사람이 없는 분들을 위해 남깁니다. 1. 첫번째 삽질 private fun importKeywords(){ FirebaseDatabase.getInstance().reference .child("keywords") .addValueEventListener(object : ValueEventListener { override fun onCancelled(p0: DatabaseError) { } override fun onDataChange(p0: DataSnapshot) { // 파이어베이스에서 데이터를 읽어옴.. 2021. 1. 3.