Const여러 플랫폼으로 개발해본 사람은 당연히 알겠지만
Button, ImageView, EditText
이딴거 설명하는건 대충 넘겨도 됨.
인터페이스 구성하는건 xml이나 java 코드나 형식은 다 똑같고
때문에 하다보면 생판 모르던 인터페이스도 자연스럽게 붙여내는 자신을 볼 수 있을 것이다.
기능같은건 구글링만 해도 소스가 수두룩하고
안드로이드를 처음 배우는 당신이 주목해야할 것은
Activity
Fragment
ListView
여러 종류의 Layout.
여러 종류의 해상도 대응
비트맵 메모리
이 정도인데
사실 Layout의 경우 제일 최근에 나온 ConstraintLayout 만 알아도 웬만한 구성은 다 가능함.
부수적으로는 LinearLayout, RelativeLayout, FrameLayout(제일 원시적)이 있긴 한데
위에 언급한 ConstraintLayout 쓰면 다 쌈싸먹고도 남음.
그리고 Activity와 Fragment..
생명 주기가 중요한데
둘이 똑같음.
단지 onStart, onStop, onResume, onDestroy 이런 것들이 언제 호출되는 지는
로그 찍어보고 디버깅 해봐야 금방 알 수 있다.
해상도의 경우
안드로이드는 다들 알다시피 폰이 지랄맞게 많고
해상도도 제각각이며 xxhdpi xhdpi hdpi 이딴 식으로 나뉘기 때문에 상당히 까다로움.
난 처음엔 dpi 단위만 쓰면 거의 대응되는줄 알았는데 태블릿에서 보니까 아니더라고ㅠㅠ
사실 레이아웃만 잘 구성하면 넘어가는 문제이긴 한데
그렇다고 dpi를 아예 안 쓸 수는 없음.
마지막으로 비트맵 메모리..
제일 짜증나는 부분이고
안드로이드 초보 개발자들이 제일 많이 시간을 소요하는 부분인데
한 번에 보여지는 비트맵의 용량이 상당히 제한적임.
다행히도 안드로이드는 dpi라는 고급 기술이 들어가있기 때문에
이미지 원본 크기가 어지간히 작지 않은 이상은
어느 폰에서든 깨지지 않고 보여줄 수 있음.
처음 봤을 때 참 신기했어^^
근데 위에 언급했다시피 제한이란게 존재하고
자바의 가비지 콜렉터 시스템은 완벽한게 아님.
몰론 대부분의 메모리 처리를 이 gc란게 해주지만
비트맵은 논외다.
비트맵이 사용되지 않는 타이밍을 잘 못 잡는게 원인이라는데
이 때문에 Bitmap 변수는 쓰지 않게 되면 개발자가 직접 recycle();을 호출해주는게 필요함.
안 그러면 'Out of memory'라는 구글의 수많은 주제에 올라와있는 메세지를 보게 된다.
이것도 기술과 내공이 있으면 각 상황에 맞춰서 비트맵 처리가 가능하니.. 직접 겪어보는게 답임.
ListView는 그냥 인터페이스 종류의 하나니까 자세한 설명은 생략한다.
자주 쓰이는 클래스이지만
이 새끼의 경우 허점이 크게 세가지가 있는데
1. 데이타가 많이 들어갈 경우 뒤섞여버림.
때문에 Map, ArrayList를 사용해서 재사용하는게 중요함.
2. 버벅거림.
이건 구글링하면 해결법이 다 나와있고 다 똑같음.
ViewHolder라는 재사용 기술을 쓰면 된다.
귀찮지만 Adapter의 서브클래싱이 중요.
3. 1번을 해결하려고 Map, ArrayList를 쓰면 리스트아이템의 안에 있는 Button이 잘 동작하지 않게 됨.
이 경우 OnTouchListener를 활용하면 해결 가능.
이상입니다.
RecyclerView를 공부하면되