android 개론

43
안안안 App. Web 안 안안안안

Upload: -

Post on 14-Nov-2014

691 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Android 개론

안드로 App. Web 과 친해지기

Page 2: Android 개론

후딱 안드로이드 프로그래밍에친해지고 싶을 때 좋은 책

안드로이드 프로그래밍좀 더 알아가고자 할 때 좋은 책

Page 3: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 4: Android 개론

1. IDE 환경을 설정하도록 합시다 .

이건 따로 설명 생략 . 다들 인터넷을 참고 ~

2. Eclipse 에서

Page 5: Android 개론
Page 6: Android 개론
Page 7: Android 개론

메시지 찍었네 .이제 다 한 거다 ~

Page 8: Android 개론

난 아무 것도 한 것이 없는데 ,화면에 뭔가 찍혔네 !나 대신 뭔가가 되어 있겠지 . 그럼 내가 그걸 손 대면 되겠다 .

어딜 손 댈까 ?

안드로이드도 기계이니깐 분명히 어떤 단서가 있을 듯 ?!

Page 9: Android 개론

안드로이드 App 을 실행 시키는 입장에서

해당 App 이 어떤 화면들로 구성이 되어 있고 ,만약이 OS 상에서 어떤 일이 발생되면 , 어떤 행동을 시킬지도 알아야 하고 ,OS 상에서 중요한 데이터 중 어떤 데이터를 접근하는지 ..

등과 같은 정보들을 알아야 하는데 , 이 때 이걸 참고합니다 .

근데 , Smart 하지는 않아서 , 여기 안 적어주면 별도로 알아보지는 않아요 .

Page 10: Android 개론

LAUNCHER!!이게 바로 실행 지점이란이야기 같군 !!

이름인데 , 마침표로 시작한 걸 보니 . class?왠지 내용 중에서 보니 , 이 곳에 자세한 내용이있겠다 싶다 .

Page 11: Android 개론

res/layout/main.xml이건 관행 !! 관행 !!

Page 12: Android 개론

R

이건 또 다른 관행 !! 관행 !!

Page 13: Android 개론

res/layout/main.xml xml 로 화면 구성하는 군 ?!

Page 14: Android 개론

바뀐 화면 !!

Page 15: Android 개론

다른 것도 바꾸고 싶다 !

그리고 main.xml 바꾸면 더 바꿀 수 있겠다 싶다 .

Page 16: Android 개론
Page 17: Android 개론

화면 구성은 XML 로 적절히 넣어서 하면 되겠구나 .넣을 수 있는 것들은 ?

XML 을 통한 제어 외에 java 코드를 통해서도 제어가 얼마든 가능

Page 18: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 19: Android 개론

@+id/clickMe

링크 또는 분류

신규 추가

id 유형

대상을 지칭하는 값눌러도

아무런 일이 없어요 !

Page 20: Android 개론

Swing 에서 하는 것 같이 , 누군가 누르면 눌렀다는 것을 알게 해주고 ,

그것을 아는 이는 해당 시점에 정해진 동작을 하게 하도록 합시다 .

①②

① 화면 구성원으로 있는 항목들 중 우리가 관심 있는 버튼을 가져오자 .화면에 있는 것을 찾아 올 때에는 id 를 활용하고 방법은 관행에 따른 명명으로findViewById 함수에 아이디를 전달하면 , 원하는 View 를 가져올 수 있어요 .

②클릭하는 이벤트를 감시하고 있을 친구를 붙여줍시다 .그 친구는 android.view.View.OnClickListener 부류이니 , 이 종류에 해당하는친구를 지정을 setOnClickListener 를 통해서 합니다 .이제 WebViewActivity 는 붙여 논 친구가 어떤 일을 하던 이제 신경 끝 ~ ^^

Page 21: Android 개론

Swing 에서 하는 것 같이 , 누군가 누르면 눌렀다는 것을 알게 해주고 ,

그것을 아는 이는 해당 시점에 정해진 동작을 하게 하도록 합시다 .

LogCat : 로그 보는데 유용

Tip. v.getId() == R.id.clickMe 이를 통해서 구분

Page 22: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 23: Android 개론

새로이 보여줄 화면을 만들고 ,

버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .

지금까지 우리가 가지고 논 화면이 바로 Activity!그렇다면 . 화면 == Activity 그렇기에 , 화면 만들기 == new Activity

Page 24: Android 개론

새로이 보여줄 화면을 만들고 , 안드로이드에게 새 화면을 알려줍니다 .

버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .

안드로이드에게 App 내에 어떤 것이 있다고 알려주는 것은 ?

AndroidManifest.xml

Page 25: Android 개론

새로이 보여줄 화면을 만들고 ,

버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .

우리는 버튼이 클릭이 될 때 , 현재 보고 있는 화면을새로운 화면을 보여주는 NextViewActivity 를 실행 시켜서

새 화면으로 이동으로 하고자 하는 Intent 를 수행하고자 합니다 .

추가 Tip.Intent 를 확장할 때에는 Bundle 에 내 의도를 더욱 담아서 ~

새로 수행되는 Activity 가 마쳐진 뒤에 그 결과 따라서 추가적 동작 할 땐 ~

Page 26: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 27: Android 개론

개발은 개발자에게 , 웹은 WebView 에게 .

앞서 만들었던 NextViewActivity 가 WebView 를 품게 합시다 .

페이지에 WebView 를 넣었고 , 해당 웹뷰가 특정 URL 을 열게 했습니다 .

이제 남은 것은 실행 뿐 !

Page 28: Android 개론

네트워크가 이상한가 싶었는데 ?!

기본 브라우저에서는 잘 접근되네 !

이게 뭐야 ~~

Page 29: Android 개론

문제는 Permission!나름 OS 님에게 인터넷 사용한다고 알려주어야 합니다 .

이렇게 OS 님에게 알려줄 때에는 AndroidManifest.xml

Page 30: Android 개론

뜨나 싶었는데 ,

이번에는 껍데기만 뜨네 !!

내용물 다 어이 갔어 ??

이게 뭐야 ~~

내용물 == 자바스크립트로 가져오는 부분

Page 31: Android 개론

WebView 에 대한 세부 설정을 조정해서 원하는 형태로 만들 수 있구나 !

Page 32: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 33: Android 개론

원활한 테스트를 위해서 , 로컬에 html 페이지를 만들어서 로딩합니다 .

웹서버가 없어도 로컬 html 을 통해서 UI 구성이 가능하겠지요

Page 34: Android 개론

JavascriptInerface

Toast.makeText(…).show();

Page 35: Android 개론
Page 36: Android 개론
Page 37: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 38: Android 개론

App 에서 Web 을 제어하는 것은 URL 을 통해서 수행할 수 있습니다 .

우선은 url param 을 던져보기를 통해서 !!

Page 39: Android 개론

App 에서 Web 을 제어하는 것은 URL 을 통해서 수행할 수 있습니다 .

이번에는 페이지에 있는 javascript 호출을 통해서 !!

페이지 로딩이 마칠 때까지기다리기 위한 꼼수 !!

정식은 WebViewClient 설정

Page 40: Android 개론

WebViewClient WebChromeClient

onPageFinishedonPageStartedonReceivedErroronScaleChangedshouldOverrideUrlLoading

등 브라우저 순수 동작 자체에대해서 , customizing 할 수 있는기능을 사용

onJsConfirmonJsAlertonJsTimeoutonProgressChangedonCreateWindow

등 브라주저에서 기존 기능 외javascript 기능 확장을 제어하는데사용되는 클래스

• 페이지 로딩되는 순간 로딩 메시지 보여주고 싶어요 WebViewClient 설정• 자바 스크립트에서 alert 이 보이지 않아요 WebChromeClient 설정• 로딩 되는 특정 url 에 대해서 특정 작업하고 싶어여 WebViewClient 설정

Page 41: Android 개론

단계 1. 화면에 글씨를 써보자 .

단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .

단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .

단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .

단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .

단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .

Page 42: Android 개론
Page 43: Android 개론

View

Control

Model

화면 구성하기 ~ xml 들 .물론 java 코드로도 구성 . 화면 자체

Activity, Service, Broadcast Receiver뭔가를 하는 . 경우에 따라 화면도 띄우고 .경우에 따라 화면 없이 혼자 놀고 . 가끔은 누가 뭐라고 하면 들어주기도 하는

데이터를 저장하는 역할 .SQLite, File 또는 Content Provider