본문 바로가기

Diary/삽질노트

[2019.01.01-02] 뉴스 크롤링 앱을 만들면서..(3)

오늘 구현한 것

- 두개의 리사이클러뷰 각각에 Progress bar 로 데이터 로드 상태 보여줌

- swipe represh 추가. 참고 : https://medium.com/@bluesh55/android-당겨서-새로고침-간단하게-구현하기-a42846c14c23

- 위젯 기능 추가하는 중.


일단 위젯이 생각보다 까다로운 녀석이라는 것을 이번에 처음 알게됐다.

기존 방식과는 다르게 위젯은 다른 프로세스에서 뷰를 인플레이트 하는 과정을 거치는, 기생(?)하고 있는 구조라고 한다. (참고 : http://itmir.tistory.com/551)

그리고 브로드캐스트를 받아 처리하는 방식으로 위젯 데이터가 갱신되는 것 같다.

또한 위젯을 만드는 과정이 은근히 복잡하다...!! 아래 순서는 내가 마음대로 매겨봤다.

1. res/xml 에 appwidget-provider 정의하기 (여기서 위젯에 대한 기본 설정들을 지정할 수 있다. 예를 들면 위젯 프리뷰 이미지, 사이즈 변경 모드, 위젯 데이터 갱신 시간 설정 등)

2. 위젯 xml 레이아웃 정의. 사용할 수 있는 뷰그룹, 뷰가 제한되어있다. RemoteView 라는 새로운 놈을 사용하기 때문이다..! (여기서 가장 충격적이었던게, 리사이클러뷰는 없고 리스트뷰를 사용해야한다. 나 리스트뷰 잘 모르는데...ㅠㅠ)

3. AppWidgetProvider 를 상속받은 클래스 만들기. 이친구가 브로드캐스트 리시버 클래스라고 보면 될 것 같다.

4. 매니페스트에 리시버(인텐트필터 + 메타데이터) 추가하면 끝

근데 이 복잡한 과정을 안드로이드 스튜디오에서 다해준다 ^_^ new -> Widget 하면 끝!

하지만 나는 그냥 단순한 리스트를 뿌려주기만 하면 되는데, 내가 생각한 것보다 좀 더 복잡한 것을 구현해야할 것 같다.

옛날 자료지만 영어를 못읽어서 일단 참고하자 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0r2u1&articleno=87

그리고 공식문서 : https://developer.android.com/guide/topics/appwidgets/

고민해야할 것

- 위젯에 리스트뷰 추가하기