안드로이드 스튜디오

2.3 앱인벤터 코딩을 생각하면서 배워보는 안드로이드 스튜디오 코딩

coding art 2020. 2. 4. 18:22
728x90

배우기 쉬운 앱인벤터에서 수직 레이아웃을 하나 설정 후 3개의 버튼을 배치하여 그 속성을 한글로 입력 후 윈도우즈 PC의 안드로이드 스튜디오와 USB 케이블로 연결된 상태에서 스마트폰 화면 출력을 관찰해 보자. 이 부분이 이해가 된다면 안드로이드 스튜디오를 쉽게 배울 수 있지 않을까?

 

다음 그림은 앱인벤터 코딩 작업과정에서 수직배치 즉 vertical layout을 준비하는 과정을 나타낸다. 즉 수직배치 아이콘을 그림과 같이 뷰어에 드래그 하면 그 다음 단계에서 버튼들을 드래그 하여 배치할 수 있다. 이 과정에 해당하는 안드로이드 스튜디오 코딩 과정을 살펴 보기로 한다.

 

즉 앱인벤터 팔레트의 레이아웃에서 수직배치(Vertical Layout)를 하나 뷰어에 드래그 한 다음 다음 그림에서처럼 팔레트의 사용자 인터페이스에서 버튼을 3회 드래그 하여 배치할 수 있으며 각각의 버튼 별 오른쪽의 속성 창에서서 텍스트 내용을 입력할 수 있다.

앱인벤터가 안드로이드 스튜디오 코딩에서 가시적인 부분만 뽑아서 쉽게 코딩이 가능하도록 했기 때문에 앱인벤터 코딩을 이해한다면 거꾸로 안드로이드 스튜디오 코딩의 이해도 그다지 어렵지 않을 것이다.

 

갑자기 안드로이드 스튜디오를 설치하고 그 사용법을 학습하는 이유는 안드로이드 폰에서 인공지능 코드를 설치할 수 있도록 지원하는 TensorFlowLite 코드를 처리하기 위해서이다. 안드로이드 스튜디오 코딩이 앱인벤터에 비해 상당히 복잡할 수도 있겠지만 안드로이드폰 카메라 코드와 결합하여 단순히 TensorFlowLite 코드를 넣어서 실행시킬 정도라면 충분히 스마트폰용 인공지능 비전을 다루어 볼 수 있을 것이다

.

이와 비슷한 기능으로서 인공지능 Classifier를 앱인벤터에 탑재할 수 있는 방법도 이미 제시가 되어 있는 상태이나 아직은 제약이 많은 상황이다.윈도우즈에 안드로이드 스튜디오 설치는 별도로 게재할 예정이다.

 

안드로이드 스튜디오를 연 상태라면 다음과 같이 FileNew>New Project...를 선택하거나     아니면 윈도우즈 시작 바에서 완전히 새로 시작할 때는 다음과 같이 Start a new...를 클릭하자.

 

Project 형태 선정에서 Empty Project를 선정한다.

 

새로 시작하는 Project 명칭을 ViewBasic 으로 설정하고 반드시 Kotlin 언어를 선택 후 Finish를 클릭하자.

 

Project 파일 구조와 하단의 빌드 창 및 우측의 안드로이드 코드 편집 창을 보여주는 화면이 나타난다.

 

Text Design Text가 선택되어 있으면 코드 구조를 보여주는데 둘째 줄의 Layout 부분을 LinearLayout 으로 수정하고 orientation을 추가 후 TextView 부분을 지우면 우측에 수직형 직사각형 스마트폰 령 화면이 설정된다. HTML 코딩 스타일임에 유의하자.

 

현재 디바이스 상태가 에뮬레이터가 아닌 스마트폰이라면 다음 같은 화면을 볼 수 있다.

 

Text에서 Design으로 넘어가 Button을 드래그하고 속성(Attribute)창을 열자. 이 과정까지를 앱인벤터 코딩과 비교하면 수직레이아웃을 연 다음 3개의 버튼을 끌어다 놓은 작업과 유사함을 알 수 있다. 한 가지 차이점은 버튼들의 코드를 가시적으로 볼 수 있다는 점일 것이다. 3개의 버튼 속성을 한글로 입력 후 스튜디오 화면에서 확인 후 RUN app 명령을 실행하게 되면 스마트폰에서 실제로 변경된 내용을 볼 수 있을 것이다. 이 작업은 앱인벤터에서 버튼을 설치하고 버튼에 Label을 주어서 Label 내용을 Text 로 입력 처리해줌과 유사하다. Design에서 Text로 바꾸면 각 버튼 별로 HTML과 유사한 XML 코드를 볼 수 있다.

 

Design에서 Text로 바꾸면 다음 그림의 예에서처럼 각 버튼 별 XML 코드를 볼 수 있다. HTMLXML 의 문법적인 특성은 유사하지만 HTML이 디스플레이적인 측면의 사용이 중요하나 XML 에서는 인터넷 웹상의 데이터 처리 및 전달에 사용된다는 점에서 차이가 있다.