android 개론
DESCRIPTION
TRANSCRIPT
안드로 App. Web 과 친해지기
후딱 안드로이드 프로그래밍에친해지고 싶을 때 좋은 책
안드로이드 프로그래밍좀 더 알아가고자 할 때 좋은 책
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
1. IDE 환경을 설정하도록 합시다 .
이건 따로 설명 생략 . 다들 인터넷을 참고 ~
2. Eclipse 에서
메시지 찍었네 .이제 다 한 거다 ~
난 아무 것도 한 것이 없는데 ,화면에 뭔가 찍혔네 !나 대신 뭔가가 되어 있겠지 . 그럼 내가 그걸 손 대면 되겠다 .
어딜 손 댈까 ?
안드로이드도 기계이니깐 분명히 어떤 단서가 있을 듯 ?!
안드로이드 App 을 실행 시키는 입장에서
해당 App 이 어떤 화면들로 구성이 되어 있고 ,만약이 OS 상에서 어떤 일이 발생되면 , 어떤 행동을 시킬지도 알아야 하고 ,OS 상에서 중요한 데이터 중 어떤 데이터를 접근하는지 ..
등과 같은 정보들을 알아야 하는데 , 이 때 이걸 참고합니다 .
근데 , Smart 하지는 않아서 , 여기 안 적어주면 별도로 알아보지는 않아요 .
LAUNCHER!!이게 바로 실행 지점이란이야기 같군 !!
이름인데 , 마침표로 시작한 걸 보니 . class?왠지 내용 중에서 보니 , 이 곳에 자세한 내용이있겠다 싶다 .
res/layout/main.xml이건 관행 !! 관행 !!
R
이건 또 다른 관행 !! 관행 !!
res/layout/main.xml xml 로 화면 구성하는 군 ?!
바뀐 화면 !!
다른 것도 바꾸고 싶다 !
그리고 main.xml 바꾸면 더 바꿀 수 있겠다 싶다 .
화면 구성은 XML 로 적절히 넣어서 하면 되겠구나 .넣을 수 있는 것들은 ?
XML 을 통한 제어 외에 java 코드를 통해서도 제어가 얼마든 가능
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
@+id/clickMe
링크 또는 분류
신규 추가
id 유형
대상을 지칭하는 값눌러도
아무런 일이 없어요 !
Swing 에서 하는 것 같이 , 누군가 누르면 눌렀다는 것을 알게 해주고 ,
그것을 아는 이는 해당 시점에 정해진 동작을 하게 하도록 합시다 .
①②
① 화면 구성원으로 있는 항목들 중 우리가 관심 있는 버튼을 가져오자 .화면에 있는 것을 찾아 올 때에는 id 를 활용하고 방법은 관행에 따른 명명으로findViewById 함수에 아이디를 전달하면 , 원하는 View 를 가져올 수 있어요 .
②클릭하는 이벤트를 감시하고 있을 친구를 붙여줍시다 .그 친구는 android.view.View.OnClickListener 부류이니 , 이 종류에 해당하는친구를 지정을 setOnClickListener 를 통해서 합니다 .이제 WebViewActivity 는 붙여 논 친구가 어떤 일을 하던 이제 신경 끝 ~ ^^
Swing 에서 하는 것 같이 , 누군가 누르면 눌렀다는 것을 알게 해주고 ,
그것을 아는 이는 해당 시점에 정해진 동작을 하게 하도록 합시다 .
LogCat : 로그 보는데 유용
Tip. v.getId() == R.id.clickMe 이를 통해서 구분
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
새로이 보여줄 화면을 만들고 ,
버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .
지금까지 우리가 가지고 논 화면이 바로 Activity!그렇다면 . 화면 == Activity 그렇기에 , 화면 만들기 == new Activity
새로이 보여줄 화면을 만들고 , 안드로이드에게 새 화면을 알려줍니다 .
버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .
안드로이드에게 App 내에 어떤 것이 있다고 알려주는 것은 ?
AndroidManifest.xml
새로이 보여줄 화면을 만들고 ,
버튼이 클릭 될 때 , 해당 화면으로 이동을 하게 해야 겠어요 .
우리는 버튼이 클릭이 될 때 , 현재 보고 있는 화면을새로운 화면을 보여주는 NextViewActivity 를 실행 시켜서
새 화면으로 이동으로 하고자 하는 Intent 를 수행하고자 합니다 .
추가 Tip.Intent 를 확장할 때에는 Bundle 에 내 의도를 더욱 담아서 ~
새로 수행되는 Activity 가 마쳐진 뒤에 그 결과 따라서 추가적 동작 할 땐 ~
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
개발은 개발자에게 , 웹은 WebView 에게 .
앞서 만들었던 NextViewActivity 가 WebView 를 품게 합시다 .
페이지에 WebView 를 넣었고 , 해당 웹뷰가 특정 URL 을 열게 했습니다 .
이제 남은 것은 실행 뿐 !
네트워크가 이상한가 싶었는데 ?!
기본 브라우저에서는 잘 접근되네 !
이게 뭐야 ~~
문제는 Permission!나름 OS 님에게 인터넷 사용한다고 알려주어야 합니다 .
이렇게 OS 님에게 알려줄 때에는 AndroidManifest.xml
뜨나 싶었는데 ,
이번에는 껍데기만 뜨네 !!
내용물 다 어이 갔어 ??
이게 뭐야 ~~
내용물 == 자바스크립트로 가져오는 부분
WebView 에 대한 세부 설정을 조정해서 원하는 형태로 만들 수 있구나 !
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
원활한 테스트를 위해서 , 로컬에 html 페이지를 만들어서 로딩합니다 .
웹서버가 없어도 로컬 html 을 통해서 UI 구성이 가능하겠지요
JavascriptInerface
Toast.makeText(…).show();
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
App 에서 Web 을 제어하는 것은 URL 을 통해서 수행할 수 있습니다 .
우선은 url param 을 던져보기를 통해서 !!
App 에서 Web 을 제어하는 것은 URL 을 통해서 수행할 수 있습니다 .
이번에는 페이지에 있는 javascript 호출을 통해서 !!
페이지 로딩이 마칠 때까지기다리기 위한 꼼수 !!
정식은 WebViewClient 설정
WebViewClient WebChromeClient
onPageFinishedonPageStartedonReceivedErroronScaleChangedshouldOverrideUrlLoading
등 브라우저 순수 동작 자체에대해서 , customizing 할 수 있는기능을 사용
onJsConfirmonJsAlertonJsTimeoutonProgressChangedonCreateWindow
등 브라주저에서 기존 기능 외javascript 기능 확장을 제어하는데사용되는 클래스
• 페이지 로딩되는 순간 로딩 메시지 보여주고 싶어요 WebViewClient 설정• 자바 스크립트에서 alert 이 보이지 않아요 WebChromeClient 설정• 로딩 되는 특정 url 에 대해서 특정 작업하고 싶어여 WebViewClient 설정
단계 1. 화면에 글씨를 써보자 .
단계 2. 버튼을 누르고 조그만 메시지 보이게 해보자 .
단계 3. 다른 화면을 추가하고 버튼 누르면 해당 화면으로 가자 .
단계 4. 버튼 눌러서 이동된 화면에 특정 웹 페이지를 열자 .
단계 5. 웹페이지에서 App 에게 이야기 해서 메시지를 보여주자단계 6. App 에서 특정 데이터를 웹페이지에게 이야기 해서 보여주자 .
단계 7. SMS 를 받으면 , 받은 메시지를 저장해 두었다가 , 보여주자 .
View
Control
Model
화면 구성하기 ~ xml 들 .물론 java 코드로도 구성 . 화면 자체
Activity, Service, Broadcast Receiver뭔가를 하는 . 경우에 따라 화면도 띄우고 .경우에 따라 화면 없이 혼자 놀고 . 가끔은 누가 뭐라고 하면 들어주기도 하는
데이터를 저장하는 역할 .SQLite, File 또는 Content Provider