- AVD Manager를 열어줍니다.
- 용량이 10GB임을 확인할 수 있습니다.
- 상세보기를 열어서 Wipe Data를 선택해 줍니다.
- 실행시키면 용량이 2GB로 줄어든 것을 확인할 수 있습니다.
- 용량이 커질수록 버그도 많이 생기고 무거워지므로 정리해주는게 좋습니다.
- LinearLayout으로 MainView를 잡아줍니다.
- 내부에 TextView와 LinearLayout으로 내부를 디자인해줍니다.
- text를 View 가운데에 넣기 위해서는 gravity = center를 사용해서 넣어줍니다.
- 사이즈를 키우고 색상을 변경해줍니다.
- 기본 제공 color에 Red가 없어서 색상표에서 직접 골랐습니다.
- color 앞에 @android를 붙이면 더 다양한 색상도 볼 수 있습니다.
- id를 추가해줍니다.
- Button을 2개 넣어줍니다.
- MainAvtivity에 Log를 찍어줌으로써 콘솔에서 확인이 가능합니다.
- Logcat이라는 콘솔창에서 Log 메세지를 확인할 수 있습니다.
- 최초화면의 지연방식은 MainThread에서 진행하면됩니다.
- init()으로 activity_main.xml에 TextView와 Button을 찾을 예정입니다.
- 이 숫자는 해쉬코드로 tvCount의 메모리 주소를 나타냅니다.
- xml 파일에 있는 모든 것들을 메모리에 올린 뒤에 R에다가 두므로, 개발자는 R만 찾아가면 됩니다.
- TextView를 바깥으로 빼서 전역변수로 두고, private로 잡아줍니다.
- init( ) 내부에서는 tvCount만 써주면 됩니다.
- 보기 지저분해서 try-catch문을 지워줍니다.
- init( )은 View를 찾는 함수입니다.
- btnAdd와 btnMinus를 찾아줍니다.
- Listener를 등록하면 계속 지켜보고 있다가 작동을 하면 바로 스택에 때려줍니다.
- Listener를 등록할때는 SetOn만 적고 필요한 기능을 찾으면 됩니다.
- View를 받으므로 ConstarintLayout도 사용할 수 있습니다.
- 실행 시킨후 증가 버튼을 누르면 Logcat에 작동이 됨을 확인할 수 있습니다.
- btnMinus도 추가해서 잘 작동하는지 확인해봅니다.
- initData를 추가해줍니다.
- count는 상태 데이터로 사용합니다.
- init과 initListener 사이에 initData를 넣어줍니다.
- butAdd와 btnMinus의 기능을 구현한 후 테스트 해 봅니다.
- Java 폴더 안에 새로운 class를 추가해줍니다.
- CountProvider class를 새로 만듭니다.
- fori를 자동완성하면 기본 for문을 완성해줍니다.
- Thread.sleep을 for문으로 돌려서 5초를 지연시켜 줍니다.
- logt를 자동완성하면 Tag가 만들어집니다.
- logd를 자동완성하면 msg가 만들어집니다.
- 이 위치 countProvider를 MainActivity에 넣고 테스트 해봅니다.
- 콘솔에서 잘 작동됨을 확인할 수 있습니다.
- initData( )가 상태를 초기화하는 부분이므로 countProvider를 initData( ) 내부에 넣어줍니다.
- CountProvider 코드를 수정해줍니다.
- MainActivity에서 initData 코드를 수정해줍니다.
- 실행시키면 우선 Loading...이 화면에 출력됩니다.
- 5초 후 화면에 5가 출력됩니다.
- 새로운 프로젝트로 Cal을 만듭니다.
- gradle에 추가 계산기 라이브러리를 추가해줍니다.
- implementation 'io.apisense:rhino-android:1.1.1'
- 이 디자인의 계산기를 만들어 봅니다.
- 디자인 플랫폼 : https://dribbble.com/shots/popular/mobile
- 여기 디자인을 보면서 Clone Coding해보면 좋습니다.- Ctrl + Enter : 줄은 바꾸지 않고 한줄 추가
- Shift + Enter : 한 줄 추가 하면서 줄 바꾸기
- Ctrl + D : 한 줄 복사해서 추가
- static은 내가 관리하는 영역이 아니라 앱이 처음에 만들어질때 다 로드해놓기 위해서 사용하는데, 1번만 띄울수 있으며 메모리에 계속 떠 있으므로 부하가 심합니다.+ CharSequence를 String이라고 생각하면 됩니다.