구글 hackfair 에 제출할 앱에 Material Design 적용 작업을 진행하고 있다.


주로 테스트 올려서 테스트 하는 디바이스는 갤럭시 넥서스(kitkat 4.4- Cyanogen) 과 넥서스5 (marshmallow 6.0) 인데,  

루트 레이아웃부터 LinearLayout, RelativeLayout 로 되어있던걸 CoordinatorLayout 으로 바꾸고, 

아래쪽 목록뷰에도 스크롤 적용을 했다. ListView -> RecyclerView, CardView 적용.


design support library ( http://googledevkr.blogspot.kr/2015/06/designsupport.html ) 를 이용하면 하위버전에서도 Material Design 적용이 된다고는 하는데, 롤리팝 이후부터만 지원되는 기능들이 몇가지 있다.


StatusBar(시계랑 아이콘 표시되는 영역) 색상 적용은 Kitkat 에서도 이런 라이브러리를 쓰면 가능하나 시스템 기본은 지원하지않으므로(?) 그대로 뒀다 -_-


View 의 elevation 속성은 5.0부터 지원되는데, 그아래 버전에서는 평평하게(!!) 나타난다.

구분되는 부분을 elevation 속성으로 고쳐놨었는데, 구분되는(?)듯한 UI가 안보이니깐, 

롤리팝 아래 버전에는 구분선 뷰를 넣고 visible , 이후 버전에는 gone 으로 처리했다. 



앱 시작 스플래시 화면을 하위뷰로 두고 보여주는 식으로 처리했었는데, 루트레이아웃을 바꾸면서 넥서스5에서는 AppBar(ToolBar)아래부분에 - 그러니까 위에 AppBar 를 덮으면서 나와야되는데 - 나타난다, 갤럭시 넥서스에는 의도한대로 나오는데, 이부분은 Activity 방식으로 바꿔야 할 것 같다.





방금전 구글플레이 알파 테스트에 apk 를 업로드 하면서 나온 추가된 권한들 목록이다.


응(?)

저장소 쓰기 안쓰는데 뭐지... 찾아보니 AndroidManifest.xml 에 저장소 쓰기 권한이 들어가있었다.

프로젝트 생성할때 넣어두고 잊어버리고 있었나보다.


그 외에 권한에 변경점이라면 구글 맵 연동하면서 자동으로 추가된 내용인가보다.


build.gradle 의 defaultConfig 도 살펴보니 targetSdkVersion 21 로 되어있었다. 

여기도 만들때 그냥 그대로 두고 업데이트 안해놨나보다.


targetSdkVersion  23으로 바꿔놨으니 Runtime Permission 도 처리 해줘야겠군!


덧)

구글 플레이 서비스 (상위 모듈)을 넣어줬더니 의존성 걸려있었던 모듈에서 위의 추가되었던 기능들을 사용하는걸로 확인됐다.

아래코드로 수정한뒤 해당권한이 없어졌음.

compile 'com.google.android.gms:play-services-maps:8.3.0'

compile 'com.google.android.gms:play-services-location:8.3.0'