Software/Android2017. 3. 28. 12:13

참조 : http://silpmomo.tistory.com/63


'Software > Android' 카테고리의 다른 글

[Android] GoogleMaps의 화면이 안뜰때  (0) 2015.03.10
레이아웃 중첩  (0) 2015.02.05
렐러티브 레이아웃  (0) 2015.02.05
리니어 레이아웃과 배치  (0) 2015.02.04
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
Posted by 십자성군
Software/Android2015. 3. 10. 15:50

permission까지 다 설정했는데 액티비티 안에 Google Maps의 View를 배치하고 Google로고가 들어가는 뷰까지 떴는데, 지도는 안뜰 경우


-코드구조적인 문제라기 보다는 사용자 인증에서 설정한 package경로와 메니페스트에서 설정한 package경로가 다른겁니다.

혹시 TabhostFragment를 쓰고계시지는 않으신지요? google Maps를 위한 클래스가 들어있는 패키지는 사용자 인증에서 설정한 패키지와 같을지라도 실제로 내용이 들어가는 container는 다른 패키지일지도 모릅니다. 사용자 인증에서 설정해야하는 경로는 container의 경로입니다.

'Software > Android' 카테고리의 다른 글

매니페스트 debgugable 설정  (0) 2017.03.28
레이아웃 중첩  (0) 2015.02.05
렐러티브 레이아웃  (0) 2015.02.05
리니어 레이아웃과 배치  (0) 2015.02.04
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
Posted by 십자성군
Software/Android2015. 2. 5. 14:21


Posted by 십자성군
Software/Android2015. 2. 5. 13:30

앞서 다룬 리니어레이아웃 외에도 다양한 레이아웃이 존재한다. 여기서는 리니어레이아웃과 함께 자주쓰이는 렐러티브레이아웃(Relative layout)을 다루도록 한다.


리니어레이아웃은 기본이 '순서대로 차곡차곡 배치'한다는 것이다. 렐러티브레이아웃의 배치는 ~의 위에, 아래에 배치하는 상대배치이다. 즉, 뷰와 부모 또는 뷰 끼리의 위치관계를 지정하여 배치하는 것이다.


아래는 렐러티브레이아웃의 배치속성이다.


렐러티브레이아웃의 배치를 위해서는 비교대상이 먼저 정의되어 있어야한다는 사실에 주의해야한다.

가령 A와 B라는 뷰가 있는데 레이아웃상에 B를 A의 아래에 배치하고 싶다면 A가 먼저 정의되고 배치되어야 한다.


또한 논리에 맞지 않는 정의는 당연히 불가능하다.

가령 A를 B의 위에, B를 A의 위에 같은 정의는 불가능하다.

'Software > Android' 카테고리의 다른 글

[Android] GoogleMaps의 화면이 안뜰때  (0) 2015.03.10
레이아웃 중첩  (0) 2015.02.05
리니어 레이아웃과 배치  (0) 2015.02.04
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
Posted by 십자성군
Software/Android2015. 2. 4. 16:40

◎레이아웃 :


앞서 확인햇듯이 레이아웃은 ViewGroup으로부터 파생된다. 따라서 텍스트나 버튼 등의 기본 위젯들이 차일드로 포함된다. 즉 여러 기본 위젯들이 모여서 하나의 레이아웃을 구성하고 이들이 모여 액티비티 화면이 완성된다.


◎리니어 레이아웃(Linear layout) :


Linear라는 이름 그대로 차일드 뷰를 일렬로 배치한다. 배치방법을 수평으로 일렬로 하거나 수직으로 일렬로 배치하는것을 기본으로 한다.


위는 버튼, 텍스트를 배치하는 사진이다. orientation(방향)이 horizontal(수평)으로 되어있기 때문에 뷰를 수평으로 배치한 것이다.


◈함수:

orientation : 레이아웃의 배치방향을 선택할 수 있다.

layout_width/layout_height : 레이아웃 내부의 해당 뷰의 크기를 지정한다. 수치로 크기를 정하거나 규칙으로 지정할 수 있다.


위의 사진은 텍스트 2개, 버튼 한개를 배치한 상태에서 Hello world 텍스트 뷰의 layout_width를 레이아웃의 크기에 맞추었기 때문에 옆에있던 두개 뷰가 화면 오른쪽 바깥으로 밀려난것이다. wrap_content는 뷰의 내용물의 크기에 맞춰 뷰의 크기가 정해진다.

gravity : 뷰의 내용물을 정렬한다. '|'를 이용하여 정렬조건을 조합할 수 있다.



위처럼 폭에 대해 match_parent로 뷰의 폭을 액티비티 가득히 만들고 가운데 정렬을 해보았다.

layout_gravity : gravity가 뷰의 내용물을 정렬한다면 layout_gravity는 뷰를 부모에 대해서 정렬한다. 명령의 내용은 gravity와 동일하다.

수직리니어라는 가정하에 첫번째 그림을 보자. 위와같은 수직정렬은 수직리니어에서 무시된다. 수직정렬 자체가 무시된다. 리니어레이아웃은 기본적으로 뷰를 순서대로 차곡차곡 빈틈없이 배치하는 것이기 때문에 첫째 뷰 위에 두번째 뷰가 위차할 수 없다. 다만 오른쪽 그림과 같이 수평정렬은 가능하다. 반대로 수평리니어에서는 수평정렬이 무시된다.

background

baselineAligned : 뷰가 아닌 레이아웃에 적용하는 속성으로, 수평리니어에서만 적용되며 수직리니어에서는 무시된다. 기능은 나란히 배치된 높이가 서로다른 뷰들의 수직정렬을 위로 맞출것인지 아래로 맞출것인지를 정한다.



baselineAligned 속성의 default는 true로 오른쪽 그림과 같이 아래쪽 베이스가 가지런히 정렬된다. false로 할 경우 왼쪽 그림과 같이 된다.


layout_weight : 부모의 남은 공간에 대한 차지비율을 정하는 속성으로 weight는 중요도를 의미한다. 부모안에 있는 뷰들의 모든 weight총합에 대한 비율에 따라서 남은 공간이 배분된다. default는 0이다.


위 그림은 버튼의 weight를 각각 1과 2로 지정한 것이다.


위 사진은 2번 버튼의 weight만 1로 지정한 것이다. 다른 뷰는 모두 0으로 지정되어있기 때문에 2나 3으로 설정해도 같을 것이다.


패딩/마진

레이아웃에 뷰들을 배치할때, 기본적으로 다닥다닥 붙어있다. 물론, 이들간의 간격을 조절할 수 있는데 이것이 padding과 margin이다.

layout_margin : 뷰와 부모사이의 간격을 지정. 주위에 형제 뷰가 있으면 형제 뷰와의 간격에도 적용(상하좌우 4면에 개별적으로 지정 가능)

padding : 뷰와 내용물간의 간격을 지정(상하좌우 4면에 개별적으로 지정 가능)


'Software > Android' 카테고리의 다른 글

레이아웃 중첩  (0) 2015.02.05
렐러티브 레이아웃  (0) 2015.02.05
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
setContentView()  (0) 2015.01.29
Posted by 십자성군
Software/Android2015. 2. 4. 14:52

레이아웃의 화면방향은 

xml에서 android:orientation="vertical" 이나 "horizontal"로 설정할 수 있다.


일부의 레이아웃이 아니라 앱 자체의 화면을 가로로 하려면 AndroidManifest.xml에 설정을 추가해준다


<activity

...

...

android:screenOrientation="landscape" >




'Software > Android' 카테고리의 다른 글

렐러티브 레이아웃  (0) 2015.02.05
리니어 레이아웃과 배치  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
setContentView()  (0) 2015.01.29
짤막한 tip. 인수 생략  (0) 2015.01.29
Posted by 십자성군
Software/Android2015. 2. 2. 18:01

참고하고 기억해야할 계층표입니다.

저작권 때문에 PPT로 다시 만들긴 했는데, 어떨지 모르겠네요.


1.위젯




2.뷰그룹




'Software > Android' 카테고리의 다른 글

리니어 레이아웃과 배치  (0) 2015.02.04
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
setContentView()  (0) 2015.01.29
짤막한 tip. 인수 생략  (0) 2015.01.29
용어  (0) 2015.01.29
Posted by 십자성군
Software/Android2015. 1. 29. 17:50

setContentView는 MainActivity에서 제일 처음 볼 수 있다. 이 메서드를 호출하여 액티비티에 내용물을 채우게 되는데, 단독으로 뷰가 존재하기도 하지만, 차일드 뷰를 거느리는 경우가 많다. 이런 차일드로 구성된 레이아웃을 액티비티에 채우게 되는데 이를 위한 setContentView는 두 가지 호출법이 있다.


void Activity.setContentView(int layoutResID)

void Activity.setContentView(View view [, ViewGroup.LayoutParams params])


첫째 방법은 xml에 레이아웃을 만들고 이에 부여된 ID를 setContentView에 전달하여 호출한다.

둘째 방법은 뷰 객체를 동적으로 생성한 후 메서드를 통해 호출하는 방법이다.

'Software > Android' 카테고리의 다른 글

앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
짤막한 tip. 인수 생략  (0) 2015.01.29
용어  (0) 2015.01.29
일단 한번 돌려보기  (0) 2015.01.29
Posted by 십자성군
Software/Android2015. 1. 29. 17:45

Java는 디폴트 인수를 지원하지 않습니다. 따라서 인수의 개수에 따라서 이에 대한 메서드가 일일이 중복 정의되어 있습니다.

생략 가능한 인수는 []로 표기하기로 하기 때문에 아래와 같은 선언이 가능합니다.


void Activity.setContentView(View view [, ViewGroup.LayoutParams params])

'Software > Android' 카테고리의 다른 글

위젯와 뷰그룹의 계층  (0) 2015.02.02
setContentView()  (0) 2015.01.29
용어  (0) 2015.01.29
일단 한번 돌려보기  (0) 2015.01.29
안드로이드 새 프로젝트 만들기  (0) 2015.01.29
Posted by 십자성군
Software/Android2015. 1. 29. 15:38

개발이든 이론공부든 모두 기본적인 용어, 개념을 알아야 대화가 통합니다. 프로그래밍의 기본적인 용어를 다루지는 않지만 안드로이드 개발중에 자주 사용하게 될 용어, 개념들을 다루겠습니다.


안드로이드 응용프로그램의 4가지 주요 구성요소

Activity(액티비티)

사용자 인터페이스를 구성하는 기본단위입니다.

우리가 보는 '화면 하나'가 액티비티인데, 하나의 액티비티가 스크롤이나, 레이아웃, 뷰 등으로 구성됩니다.

우리가 만드는 응용프로그램은 하나 이상의 액티비티를 가지게 되며 이 액티비티 사이들 넘나들게 됩니다.


Service(서비스)

UI없이 백그라운드에서 무한히 실행되는 컴포넌트라고 합니다. 미디어 플레이어, 네트워크 감시 등 UI가 없지만 '사용자의 명령을 받아들일 수 있는 액티비티'와 연결해서 사용됩니다.


Content Provider(콘텐츠 제공자): CP

안드로이드의 보안에 의해, 다른 프로그램의 데이터에 함부로 엑세스 하지 못합니다. 이러한 데이터 공유를 위한 합법적인 장치가 CP입니다.(데이터베이스 등)


Broadcast Receiver(방송수신자): BR

배터리 방전, 네트워크 전송 완료 등의 신호를 받습니다. 즉, 시스템에서 전달되는 방송을 대기하고 수신합니다.

방송 수신 시 이를 해석하고 적절한 액티비티나 서비스를 띄웁니다.

-----------------






MainActivity : 메인 액티비티의 소스 파일입니다. 앱을 시동했을 때 기동하는 중심이 되는 액티비티 입니다.

R.java : 응용프로그램 내의 각종 개체에 접근하기 위한 ID를 정의합니다. 예를들어 액티비티 내의 String, 버튼 등은 각자의 ID를 가지고 있습니다. 개발자가 편집할 일은 없습니다.

Library, lib 폴더 : 안드로이드 기본 라이브러리입니다.

bin : 컴파일의 중간 결과 파일이 저장됩니다.

asset : 비디오, 오디오 등의 리소스가 들어가는 폴더입니다.

drawable : 이미지 파일이 저장됩니다. l, m, x등 해상도별로 각각 제공됩니다.

layout/activity_main.xml : 레이아웃을 정의합니다. 즉, 버튼, 배경, 글 등을 배치하여 디자인 합니다.

menu/activity_main.xml : 메뉴를 정의합니다.

values/string.xml : 앱상에서 배치되는 문자열을 정의합니다.

AndroidManifest.xml : 프로젝트의 버전, 이름, 구성 등의 정보를 지닙니다.(최소 타겟 버전 등)


<액티비티, 뷰, 레이아웃>

Activity(액티비티)

앞에서 언급했지만 다시 언급합니다.


사용자 인터페이스를 구성하는 기본단위입니다.

우리가 보는 '화면 하나'가 액티비티인데, 하나의 액티비티가 스크롤이나, 레이아웃, 뷰 등으로 구성됩니다.

우리가 만드는 응용프로그램은 하나 이상의 액티비티를 가지게 되며 이 액티비티 사이들 넘나들게 됩니다.


View(뷰)


앞서 언급했듯이 액티비티는 화면 하나를 표현합니다. 이 설명에서 약간 오해가 생길 수 있는데, 우리 눈에 보이는 것은 액티비티가 아니라 액티비티에 포함되어 있는 '뷰' 입니다. 뷰 여러 개가 모여서 하나의 액티비티를 이루며 결국 우리들이 보는것은 뷰들의 집합인 것입니다. 그리고 액티비티가 여럿 모여서 하나의 응용 프로그램이 됩니다.


대략 아래와 같은 느낌입니다.


실제로 우리 눈에 보이는것은 액티비티 안의 뷰 인겁니다.


뷰는 크게 위젯과 뷰그룹으로 분류됩니다.

위젯

: 사용자 인터페이스를 구성하는, 직접적으로 보이는 요소입니다. 버튼, 텍스트 등을 위젯이라고 부르며 사용자에게 정보를 보여주고 명령을 받을 수 있으므로 컨트롤이라고도 합니다.

뷰그룹

: 위젯과는 달리 직접적으로 보이지는 않습니다. 여러가지 연관성 있는 뷰들을 유기적으로 결합하여 서비스를 제공하는 뷰의 집합으로 이들을 레이아웃이라고 합니다.


Layout(레이아웃)

앞서 설명했듯이 ViewGroup으로부터 파생되는 클래스로, 다른 뷰를 차일드로 포함합니다.

버튼, 텍스트 등의 기본 위젯을 모아서 하나의 레이아웃을 구성할 수 있으며 레이아웃이 여러 개 모여서 하나의 액티비티 화면이 완성됩니다.

'Software > Android' 카테고리의 다른 글

setContentView()  (0) 2015.01.29
짤막한 tip. 인수 생략  (0) 2015.01.29
일단 한번 돌려보기  (0) 2015.01.29
안드로이드 새 프로젝트 만들기  (0) 2015.01.29
안드로이드 개발환경 구축  (0) 2015.01.27
Posted by 십자성군