도저히 이곳에서 이론적인 부분을 적기에는 너무 깨지는 부분도 많고 편집이 힘들어서 이곳은 소스와 xml만 적고 이제 다음블러그(http://blog.daum.net/dayhyub)에 적는 방식으로 할 수 밖에 없음이 아쉬울 따름이다.

노티피케이션 이론 페이지 : http://blog.daum.net/dayhyub/78

=============================================================== 

1.1 토스트 노티피케이션(Toast Notification) 예제

XML(main.xml)

 




    
        
	

레이아웃 종류 설명
Linear Layout -가장 기본적인 레이아웃
-수직방향 또는 수평 방향으로,일렬로 위젯이나 뷰를 배치하는 레이아웃
Relative Layout -기준이 되는 레이아웃과의 상대적인 위치를 기반으로 뷰나 위젯의 위치를 지정하는 레이아웃
-간단하게 누구 밑에 누구,누구옆에 누구식으로 서로간의 위치 관계 지정
Frame Layout -형태상으로 모든 레이아웃 중 가장 단순
-차일드를 배치하는 규칙이 따로 없고 차일드는 프레임 좌상단에 표시
Table Layout -표형식으로 차일드를 배치하는 레이아웃
-가로,세로로 줄을 긋고 각 줄이 만나는 행과 열로 구성
-여러 개의 TableRow객체로 구성 하나의 행

 레이아웃 인플레이션(전개,Layout Inflation)

-XML문서에 정의된 레이아웃과 차일드 뷰의 속성을 읽어 실제 객체를 생성하는 동작
-인플레이션의 핵심 메서드 : setContentView
-setContentView : XML문서의 리소스 ID를 전달받아 이 정보대로 객체를 생성하여 액티비티 내부에 채움
-특별한 것이 아니라 레이아웃의 정보대로 객체를 생성하고 속성 변경 메소드를 순서대로 후출하는것
-XML정보대로 하나를 생성해내는 것이므로 임의의 객체를 XML로 부터 얻을 수 있는 좋은 방법

<여러 레이아웃 중첩으로 만들어보기>

기본적인 소스의 내용은

[나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것]참조




5. ViewViewGroup

(가장 view와 viewgroup을 잘 정리한 이미지인데 인터넷 어디에서 찾았는지 몰라서 출처를 적지 못함)

View의 속성

1) 아이디

- 객체는 한 개의 정수형의 아이디(android:id)만 가짐

- 아이디는 xml레이아웃파일에 정의 

 

-@기호의 의미는 ID를 리소스에 정의하거나 참조한다는 뜻
-@ 기회를 빠뜨리지 않도록 주의하자!
-+기호는 신규로 ID를 정의한다는 의미

2) Position

① 크기(size) : 뷰의(width) 과 높이(Height)

padding : 뷰와 뷰안의 콘텐트 사이 간격을 지정하는 값

margin : 뷰그룹의 속성, 부모뷰와 자식뷰간의 거리

 

 3) 뷰크기 설정 방법

-구체적인 숫자로 전단하는 방법
-MATCH_PARENT : 부모뷰의 크기만큼 다 채움
-WRAP_CONTENT : 뷰가 가진 콘텐트의 크기에 맞게  뷰의 크기 조정

기본위젯

1) TextView
 -View 클래스에서 파생된 클래스
 -텍스트를 표시하는 것
 -Button클래스와 에디트텍스트 클랙스의 부모 클래스

   [속성]

 -textSize
 -textStyle : bold,italic,normal
 -Text : 출력될 텍스트 문자열 지칭속성
 -textColor
 -Layout_width,layout_height
 -singleLine : 문자열이 위젯 크기보다 클 경우 강제로

     한줄로 맞추는 속성

2) ImageView

 -Png, jpeg,gif,bitmap 같은 다양한 이미지 소스로부터

   이미지를 화면에 출력하는 객체

   [속성]

 -Src : 화면에 출력할 이미지의 아이디를 지정하는 속성

   ) res/drawable-ldpi/ic_launch.png

        android:src = “@ic_launch

 -scaleType : ImageView의 크기에 맞게 이미지 크기를 조정하거나 움직이게 하는 속성
 -maxWidth,maxHeight : 이미지가 이미지뷰에 붙여질 때의

   최대 크기

 -adjustViewBounds : 이미지 크기의 가로세로비율에 맞게

   이미지 뷰의 크기 조정여부

 -cropToPadding: 패딩을 맞추기위해 이미지 일부를 잘라낼

   지 여부

 -Tint : 이미지에 틴트 컬러입히는속성

3) 스크롤 (scroll view)

-주로 화면에 내용이 많은 경우에 이를 화면에 벗어나서

   표시할 수 없을 때 스크롤을 이용해 화면에 내용 출력

4) 버튼

-클릭이벤트에 반응해 사용자 요청을 처리하는 위젯
-이미지버튼 : 이미지를 버튼에 삽입하면
-체크박스 : 체크됐는지,안 됐는지의 두가지 상태를 가진

   특별한 타입의 버튼

-라디오버튼 : 라디오 그룹에 묶여있는 라디오는 한 개만

   선택

  -토글버튼 : 채크박스와 유사하며 텍스트 변경

2강_프로젝트구성 및 View_1112.pptx

 

4.버전

버전 코드명 API 점유율
2.2 프로요 8 2.20%
Froyo
2.3.3 - 2.3.7 진저브래드 10 28.50%
Gingerbread
3.2 허니콤 13 0.10%
Honeycomb
4.0.3 - 4.0.4 아이스크림샌드위치 15 20.60%
Ice Cream Sandwich
4.1.x 젤리빈
Jelly Bean
16 36.50%
4.2.x 17 10.60%
4.3 18 1.50%

 참고사이트 : http://ko.wikipedia.org/wiki/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C_%EB%B2%84%EC%A0%84_%EC%97%AD%EC%82%AC

5.Screen Size

) 안드로이드에서 사용하는 화면 관련 용어

① 화면크기(Screen Size) : 화면의 물리적인 크기 의미

- 대각선의 길이로 표기

- 4인치, 3.5인치 처럼 주로 인치 단위를 사용

-(large), (normal), (small), 초대형(xlarge)로 분류

- 초대형(xlarge) : 2.3이후부터 7인치 초과의 크기를 분류, 갤럭시노트2도 여기 해당

종횡비(Aspect ratio) : 가로와 세로 길이의 비율

- 4:3 16:9등의 비율로 표기하는 것이 일반적

- Long, notlong 분류

- 호환성 확보와는 크게 상관없음

화소수/해상도(Resolution) : 화면을 구성하는 점의 개수

- 240 * 320 , 480 * 800, 720 * 1280 식으로 가로 * 세로로 표기

- 안드로이드는 항상 가로를 먼저 칭함

- 화소수에 상관없이 배치해야 하므로 레이아웃에서는 이 값을 직접 참조하지 않음

④ 밀도(Density) : 일정 길이 안에 점이 몇 개나 있는지를 나타냄.

- 보통 인치당 점의 개수인 dpi로 표기

- 이 값이 높을수록 좁은 면적에 많은 정보를 보여줄 수 있음

- 밀도에 따라 UI의 실제 길이가 결정되므로 실질적으로 가장 중요한 정보

-초고밀도(xhdpi: 320), (high: 240), (medium : 160), (low : 120)분류
-(http://blog.daum.net/dayhyub/65)
  ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total
Small 9.20%           9.20%
Normal 0.10% 15.10%   33.40% 22.20% 8.80% 79.60%
Large 0.60% 3.60% 1.20% 0.50% 0.50%   6.40%
Xlarge   4.40%   0.30% 0.10%   4.80%
Total 9.90% 23.10% 1.20% 34.20% 22.80% 8.80%  

 

 

 

( http://developer.android.com/about/dashboards/index.html)

1) Window - Android Virtual Device Manager를 클릭

 

2) New버튼을 눌러서 새로운 안드로이드 기계를

 3) 새로운 안드로이드 기계를 만드는 과정

이름 용도
AVD Name  안드로이드 버츄얼 디바이스 이름
원하는 이름 (myavd)
Device 해상도 설정
무난한 4인치 디스플레이 해상도로 선택
Memory Options  휴대폰 메모리의 양 설정
Interneal Storage 휴대폰 내장메모리 사이즈 설정
Target  어떤 버전으로 올릴지를 선택

 4) AVD선택하신후 Start

5) Scale display to real size : 말그대로 실제사이즈로 실행시키는지 정하는 체크박스  작게 떠서 좀더 빨리 뜬다고 보면 됨

6) 안드로이드 에뮬레이터 동중

 

7) 안드로이드 부팅중(핸드폰 전원켜는 중)

8) Avd실행

 

2강_프로젝트구성 및 View_1112.pptx

 

 

[ 폴더 ]

폴더 이름 설명 폴더의 파일들
src 안드로이드 코드를 작성하는 부분. ProjectActivity.java
gen res에서 내부적으로 생성한 컴포넌트(버튼, 뷰, 체크박스 등...)에 대한 리소스 주소를 상수화하여 자동 빌드해주며 코드상에서 컴포넌트들에 대한 접근을 쉽게 하기 위한 목적으로 존재하는 파일 R.java
assets res에 의해 참조하는 곳이 아닌 절대경로를 통하여 또다른 리소스를 참조 폴더 외부 db파일 등…
보통 오디오, 동영상, 웹 컨텐츠들을 저장
res 이미지 , 레이아웃, 스트링 등의 정적 개체들이 저장 icon.png
Drawable : 이미지 저장 main.xml
Layout : view,화면구성부분  strings.xml
Values :  string등 ,color ,anim , raw , menu 등의 폴더를 추가로 등록 지정 가능  

[ 파일 ]

파일 이름 설명
ProjectActivity.java 프로젝트의 최초 액티비티를 나타내는 파일입니다. 액티비티는 간단히 말씀드리자면 앱이 사용자에게 보여주는 화면이라고 보시면 됩니다. 보다 자세한 내용은 별도로 작성 예정입니다.
R.java R.java 파일은 프로젝트를 빌드할 때 생성되며, 클래스 R을 정의합니다. 이 클래스는 attr, drawable, layout, string이라는 내부 클래스를 추가로 정의합니다. 이들 안에 프로젝트와 관계된 리소스들의 ID들이 정의됩니다.
icon.png 프로젝트로 빌드한 앱의 아이콘 파일입니다. 기기에 다운로드 된 앱의 그것은 안드로이드의 메뉴에서 보실 수 있습니다. 이 파일은 drawable-hdpi, drawable-ldpi, drawable-mdpi 폴더에 다른 크기로 저장되어 있습니다. 어떤 파일이 사용되는지는 안드로이드 기기의 해상도와 화면의 크기에 따라 다릅니다.
main.xml 프로젝트의 최초 액티비티가 어떤 객체들을 갖는지를 정의하는 파일입니다. 초기 프로젝트에서 이 파일은 LinearLayout 객체, TextView 객체가 정의되어 있습니다.
strings.xml 프로젝트와 관계된 문구들이 정의되어 있습니다. 초기 프로젝트에는 앱의 이름, 인사말이 이 파일 안에 있습니다.
AndroidManifest.xml AndroidManifest.xml은 만들고자 하는 앱에 대한 정보와 설정들을 담는 파일입니다. 초기에 이 파일에 담겨있는 정보들은 패키지, 버전, 아이콘, 앱의 이름, 액티비티 관련 값들 등입니다.

[ 메니페스트 구성 ]

설명
Manifest 프로젝트의 패키지,버전등의 전반적인 정보 
Application 애플리케이션에서 사용하는 이름, 아이콘등과 액티비티의 추가를 할 수 있음
Permissions 애플리케이션이 사용하는 권한 신청 
너무 많은 권한을 요구하면 사용자가 외면할 수 있음
반드시 필요한 권한만 설정
Instrumentation 테스트를 위해 제공하는 Instrumentation 프레임 워크에 관한 설정
AndroidManifest.xml 다른 탭에서 GUI환경으로 제공하는 것을 일반 Xml 로 수정

2강_프로젝트구성 및 View_1112.pptx

 

 

2강_프로젝트구성 및 View_1112.pptx

 (1) File > New > Android Project

(2) 프로젝트 생성

Application

Name

응용프로그램 자체의 이름
HelloWorld로 입력

Project Name

프로젝트 이름 입력
이클립스의 Project Explorer에서 프로젝트 식별 명칭으로 사용
여기서는 HelloWorld사용

Package Name

프로젝트 생성 클래스가 저장될 패키지 이름,클래스파일 저장될 폴더 경로
패키지명은 고유해야함
유일한 패키지를 사용해야만 구글 플레이에 업로드 가능

 

 

Create custom launcher icon

사용자 정의 아이콘을 사용할지 여부 설정 체크박스

Create activity

프로젝트의 액티비티 생성 여부 선택

Mark this project as a library

프로젝트를 라이브러리로 만들어 사용할 때 체크

Create Project in Workspace

프로젝트 소스를 이클립스 workspace에 생성하는지 여부 옵션
체크 해제시에는 원하는 위치 프로젝트 생성 가능

 

Foreground

홈 화면에서 보이는 launcher 아이콘을 선택하는 화면
Image : 별도의 이미지 선택
Text : 문자를 아이콘으로 사용
clipart : 안드로이드 제공 클립아트 중 선택

shape

아이콘 배경이 되는 부분 설정
none 배경이 투명
Square 사각형
Circle 원형
(3) Create Activity

 (4) New Blank Activity

 

Create custom launcher icon

사용자 정의 아이콘을 사용할지 여부 설정 체크박스

Create activity

프로젝트의 액티비티 생성 여부 선택

Mark this project as a library

프로젝트를 라이브러리로 만들어 사용할 때 체크

Create Project in Workspace

프로젝트 소스를 이클립스 workspace에 생성하는지 여부 옵션
체크 해제시에는 원하는 위치 프로젝트 생성 가능

 

. 안드로이드 개발툴 설치방법

1. 개발툴 설치

(1) JDK 설치

사용목적에 따라 SE(Standard),EE(Enterprise),ME(Mobile) 세 가지로 제공되는데 안드로이드 개발에는 SE EE를 사용한다. 나는 SE버전을 사용하기로 한다.

OS Windows버전으로

다운로드 받게 된 파일명은

 http://www.oracle.com/technetwork/java/javase/downloads/index.html 에 접속한다.

(2) 이클립스 설치

1) http://www.eclipse.org/downloads/ 사이트 접속

2) Eclipse IDE for Java Developers -> Windows 32bits 클릭 

 

(3) 안드로이드 SDK

1) 안드로이드 플랫폼을 위한 SDK를 설치

2) SDK는 안드로이드 개발 라이브러리, 도움말 문서, 개발보조 툴 등을 포함하고 있다.

3) 개발에 필요한 파일은 SDK를 통해 배포되며 앞서 설치한 ADT는 이클립스와 SDK를 연결하는 역할을 한다.

 

4) 안드로이드 SDK는 다음 사이트에서 구할 수 있는데 이 사이트가 이른바 안드로이드 프로그래밍의 홈페이지인 셈이다.

http://developer.android.com

5) 안드로이드 SDK 다운로드 사이트 접속

http://developer.android.com/sdk/index.html

(4) ADT(Android Development Toolkit)설치

- 이클립스의 메뉴에서 [Help]-[Eclipse Marketplace]선택하여

[Android Development Tools for Eclipse]검색한 후 ADT 설치

 

이전 글 : http://blog.daum.net/dayhyub/18

 

개발툴설치방법_20130912.doc

 

1강_안드로이드설명과 설치환경구축.pptx

2.1 안드로이드의 아키텍처

안드로이드는 크게 자바로 구성된 요소(상부구조,사용자영역)와 C언어로 구성된 네이티브 코드 영역(하부구조,플랫폼영역)으로 나누어 진다.

  • 응용프로그램 : 보통 우리가 개발하는 영역을 부른다.
  • 프레임워크 : 디바이스 하드웨어와 위치정보 접근,백그라운드 서비스,알림등 많은 기능 사용,안드로이드 컴포넌트를 재사용하고 다른 APP을 배포할때 기능을 사용하기 쉽게 함
  • 달빅 : 다양한 디바이스에서 효과적으로 실행,메모리를 적게 차지하게 최적화된 파일인 Dalvik Executable Format(.dex)의 파일을 실행시키고 가상머신은 'dx'도구로 .dex파일을 변환해 자바 컴파일러로 해당 클러스를 기동 

  • 라이브러리 : C/C++로 개발된 계층
    • System C library : 임베디드 리눅스 기반 디바이스용
    • Media Libraries : 오디오 비디오포맷 이미지 파일 재생 및 녹음
    • Surface Manager :그래픽
    • LibWebCore : 안드로이드 브라우저,웹뷰...웹브라우저엔진
    • SGL : 2D그래픽
    • 3D libraries
    • FreeType : 비트맵과 벡터 폰트
    • SQLite : DB엔진
  • 하드웨어 추상화 계층(HAL) : 표준화되지 않은 라이브러리의 문제를 해결하기 위해 함수제공
  • 리눅스커널 : 백그라운드 스레드, 메모리관리, 보안, 디바이스 드라이버등 담당, 추가로 바인더, 로우메모리 킬러,전원관리 등 추가

2.2 안드로이드의 구성요소

  • 액티비티 : 사용자 인터페이스의 화면을 표현
  • 서비스 : 백그라운드에서 오랫동안 수행되거나 사용자에게 UI를 제공하지 않는 컴포넌트 예) ,네트워크 전송, 미디어 플레이어,파일읽기 등의 작업
  • 콘텐트 프로바이더(CP) : 애플리케이션 데이터 공유 집합을 관리 SQLite
  • BR : 시스템의 상태를 체크하고 에벤트에 응답하는 컴포넌트

어제 드디어 2달간 도전했던 서울시 공공앱 공모전에 응모를 하고 무엇을 다시 시작해 볼까하다가 잠시 다른 차기APP를 만들 것에 대한 아이디어를 정리하는 동안은 지금까지 읽은 책과 인터넷자료를 정리해서 우리 회사 후배들에게 하게 될 강의를 일단 이곳에 올려보며 정리를 해볼까하는 생각을 하며 가능하면 하루에 한 컨셉은 이곳에 올려볼까하는 다짐을 해본다.

그 첫 발걸음으로는 안드로이드의 특징과 장단점이라는 부분이다. 현재 구글의 안드로이드는 애플의 iOS와 함께 모바일 플랫폼을 지배하는 양대산맥이며 삼성이 있는 우리나라에서는 사실 애플앱개발자보다는 안드로이드 개발자를 지향하는 사람이 훨씬 많은 게 사실이다. 그런데 세계적으로는 전에 어떤 자료에 보니 프로그램언어의 비율중 안드로이드는 9%대였고 objective -c는 의외로 8%였다. 좀더 다양한 언어들이 서로의 장점을 가지고 발전해 가기를 바래보며 안드로이드도 애플 iOS도 더 좋은,편리한 플랫폼으로 발전해가기를 빌어본다.

이렇게 안드로이드는 'Open Software,Open Device,Open Ecosystem'을 추구한다. 이러한 개방성 과 무료라는 점 그리고 애플의 플랫폼과 비슷하게 업데이트 유통 결제등 개발자가 골치아파하는 문제를 플랫폼이 알아서 해준다는 점이 이렇게 성공할 수 있는 요소가 된 것이 아닐까?

1강_안드로이드설명과 설치환경구축.pptx

 

 

+ Recent posts