애피타이저로 간단하게, 시작하자면 휴대폰을 볼 때 2/3으로 나누고 보는영역, 인터렉션 영역으로 나눈다.
MVM 개선
MVVM : 구글앞의 설계방법 (서로 의존성을 낮출 수 있다.)
안드로이드 애플리케이션 설계 원칙
안드로이드 개발 환경 -> SDK(Java) / NDK(C, C++) / PDK(C, C++하드웨어)
-군대로 인한 기억상실로 적은 내용-
■ 변수는 정보를 저장하고 사용한다.
ㄴ 변수의 메모리(크기) 공간은 INT, float, double, char, string
ㄴ 변수명 int var1 = 10 // 10을 var1에 저장한다는 뜻
저장된 값을 꺼내오는 것은? -> System.out.PrintIn(var1); 이거임
조건문 뭐 if, switch{} , case
if - 숫자, 분기 반복 switch - 조건이 많을 경우에 사용
◆ 전역 / 지역 변수 -> 보임 / 안보임으로 나눔
전역에서 지역은 보이나 지역은 전역이 안보인다.
static int var = 100; -> 변수지정 코드에
{ public ...
in var=0;
hap = num1 + num2 = var; < 이게 보여야 전역 변수임.
예외 처리 : try - catch
연산자 클래스, 인스턴스(또 붕어틀, 붕어빵 어쩌구)
객체 = 변수 + 함수
◆ 메소드 오버라이딩 : 여러 개 중 하나
ex) 자동차 클래스 : 속도 올리기() = 메소드
승용차 클래스 : 속도 올리기() < 같은 기능인데 이름만 달라! = 오버라이딩
추상클래스 / 메소드 : abstract
◆마크업! - 문서 구조 정의 (내용, 구조, 스타일)
마크업 표현이 프로그램마다 다르면? = 호환성 문제(아직 이해못함)
HTML 단점( 모호성 문제 )
>SGML과 HTML의 장점 = XML!
HTML SGML XML
DTD정의 사용자 정의 사용자정의 태그 지원 사용자 태그 지원 <태그>
불가능 무제한
단순한 구조의 문서 방대한 내용과 구조를 요함 SGML과 동일 웹상의 교환문서 <응용분야>
효과적 검색어려움 자료의 표현구조와 자료의 정확한 검색 가능 <문서 검색>
(CSS ) 내용분리 (DSSSL) (XSL)
XML은(중요 ★) <-> 메타 데이터
ㄴ 정보 저장과 구조기술을 해주는 명세서이다.
ㄴ 사용자 정의 ML을 정의한는 규칙의 집합
자체 태그가 없다.
HTML은 데이터 처리부분에서 { 모호성 } 이 존재한다.
-> 그래서 XML을 씀.
<시스템 정보 분야 (XML 문서 교환
<웹 서비스 분야 (SOAP에서 사용
element는 시작과 <element> 끝 /element가 있다.
ㄴ XML은 무조건 트리구조로 만들어야 함
요소는 내용에 같은 구조, 다른 구조 2개 만들 수 있다.
ㄴ기본적 트리구조 ㄴ복합적 트리구조
<Students>
<Course>
<Cno></Cno>
<Cname></Cname>
<Credit><Credit>
</Course>
</Students>
XML 요소 <name>홍길동</name>
ㄴ <name>XML</name> - 겹칠 때 사용하는 건? namespace
엘리먼트 이름 앞에 서로 다른 접두사를 붙여 구별하는 방법.
ㄴ네임 스페이스 기법 ㄴ<st:student>
앞에 URL을 붙인다. ㄴst에 있는 student라는 뜻
XML은 요소(속성) or 태그로 제작
(제작 단계)
->
1. 표현하려는 객체 선택
2. 요소를 추출해서 정의 / 분석
3. 분석된 정보로 ★트리★를 만들고 요소에 대한 정형화된 데이터 작성
4. 요소명과 속성명을 구분해서 정의한다.
5.트리를 보고 XML문법에 맞게 작성.
XML 설계시 트리가 필요!!!
ㄴ 정형식 문서 - XML 문법과 규칙에 맞게 오류가 없는 문서.
ㄴ 유요한 문서 - 특정 DTD 규칙대로 작성된 문서를 해당 DTD에 대해
ㄴ 문서의 형식을 정의하고 자동화 형식 확인. 자동화 형식 확인, 문서의 기준 정함
DTD : 문서 형태(구조)를 정의 (규칙의 집합)
왜 필요한데! - 문서 가독성을 높일 수 있다!
규칙대로 작성했는지 확인한다!
XML을 만들때의 표준 및 규칙이다.
일반적으로 DTD는 외부 DTD이다.
◆ XML 작성 기본 규칙
-DOCTYPE는 대문자
!DOCTYPE <문서이름>
★자식요소에서 정의 할 수 있는 선언자 기호
* : 선언된 요소가 0번이상 사용 될 수 있음(0~n)
-> A, (B | C)* + : A요소가 먼저 사용, B or C가 0번 이상 사용 (A, BBB or A , CCCC)
? : 선언된 요소가 0 or 1번 사용될 수 있다 (0~1)
-> A, B? = A가 사용, B요소가 0 or 1 번 사용
+ : 선언된 요소가 1번이상 사용될 수 있음 (1~n)
-> A, (B | C) + : A 요소가 먼저사용, B or C가 1번이상 사용 (A, BB or A, CC)
<!ATTLIST> -> 속성시 나온다.
엔티티 정의 = 바꿔치기 개념.
<!ENTITY 학교주소 "서울">
=> &학교주소; - 이렇게 바꿔치기해도 같은 값이다.
INCLUDE 유효성검사를 키워드포함하겠다.
IGNORE 유효성 검사를 키워드로 정의한 부분은 안하겠다.
XML 스키마 선언
-XML 스키마선언은 <xsd : schema>로 시작
-최상위는 항상 , Schma , 사용자가 설정가능
순차적으로 자식 엘리먼트 사용 - sequence
선택적으로 사용 - choice
element안 element는 복잡하기 때문에 <xs:ComplexType>을 추가한다.
Xpath - XML문서의 특정 부분의 위치찾기
Student[name] -> 자식요소로 <name>을 가진 모든 <Stuent>요소
Student[@sno] -> 속성이 sno인 모든 Student 요소
name[.=홍길동] -> 요소내용이 " 홍길동 " 인 모든 <name>요소
Student [@sno = 's100'] -> sno속성값이 s100인 모든 Student요소
◆ XLink
- 자원들 사이에 링크를 표현하기 위하여 사용되는 XML 관련 표준
HTML 링크 < 단 방향 링크>
XLink <단, 양 방향 모두 가능 링크>
DOM 개념 - 조작의 개념 (SAX)
XML문서와 HRML 문서 조작을 위한 API.
-> 정보를 저장하고 구조를 기술하는 명세서
= 문서를 조작하기 위한 작동 대부분 프로그래밍언어에서 DOM 사용
DOM을 이용한 XML문서 생성 과정
XML문서 -> 파서 -> 문서트리 -> DOM API를 이용(조작한다.) C, java , c++등 -> 결과 생성
파서 (유효성 검사, 내부적 트리 생성)
DOM은 트리를 만든다.
SAX : 순간 순간 문서를 읽어 드릴때 처리해줌(이벤트 기반 API)
XML : 접근 방법도 DOM이다.
ELEMENT, Attr = Node
DOM과 SAX의 특징
새 화면 만들어 띄우기
1.안드로이드 프로젝트 생성
2. 화면 디자인 또는 편집(.xml)
3. JAVA코드 작성 or 수정(.java)
4. 프로젝트 실행 및 결과확인 (AVD)
5. 종료(개발완료)
집고 넘어가야할 부분!!
main이 안보인다 -> onCreate가 시작점
실행시 xml에 있는 문자의 부분이 실제 화면으로 나오는데, 실제 객체로 나오는 부분이 setContentView이다.
★setContentView(R.layout.activity.main); -> 내용물이 뷰로 나타낼때 설정.
버튼이 동작하려면 OnClick 있어야됨.
잠시보였다가 자동으로 사라지는 메세지는? = Toast
dp // 화면 밀도에 독립적 작용단뒤 >해상도> 에 따라 같은 비율로 출력.
layout_margin > 위젯과 위젯사이의 여유
visible -> 동작여부 enabled 속성 - 클릭이나 터치가 가능하도록 하는 것은 clickable 속성
CompoundButton은 Button을 상속받은 클래스로 체크, 언체크 두 가지 상태
◆ 레이아웃 - viewGroug으로 상속받으며, 내부에 무엇을 담는 용도로 사용 위젯을 배치해 안드로이드 화면 구성시 사용
> 제일 많이 사용되는건 리니어레이아웃이다.
gravity - 레이아웃 안 위젯을 어디에 배치하는지 결정
중복 리니어 레이 아웃(격자 무늬가능)
체크박스체크 확인법 - isChecked()
layout_weight = 크기를 지정할 때 비율로 적용시 사용
ㄴ 크기가 변해도 그 비율에 맞게 설정가능
XML 사용안하고 화면 만들기
JAVA코드로 제작
+setContentView함수를 주석처리하며 xml화면이 나오지않게
+리니어레이아웃 생성 java 코드 자석
★- setcontentviewCbaseLayout, params >> 리니어 레이아웃 생성
동적으로 무엇을 만드려면 .addview(btn);이 필요
addView(); 기존의 뷰에다가 붙여넣기하는 함수
GridLayout - 위젯을 표 형태로 배치할 떄 사용
★ View와 window! ★
애플리케이션은 엑티비티로 구성되어있다. / 엑티비티와 뷰의 관계
ㄴ 하나의 윈도우를 가짐 -> 위도우는 surface를 가짐, 이벤트 관리
surface는 그리기 사각영역 ( 다이얼로그 , 엑티비티, 상태바는 고유 서피스 가짐 )
-> ViewRoot : surface는 views를 가진 viewGroup을 가짐
안드로이드 4대 컴포넌트
가스비(CASB)
안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다.
Android 앱의 필수적인 구성요소로, 각각은 시스템이나 앱에 들어올 수 있는 진입점이다.
특징
- 각 컴포넌트는 독립적으로 존재한다.
- 각 컴포넌트는 고유의 기능을 수행한다.
- 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다.
초 요약본
Activity : 화면을 구성하는 가장 기본적인 컴포넌
Content Provider : 응용프로그램 사이에 데이터 상호공유를 위한 컴포넌트
Service : 백그라운드에서 계속 동작하는 컴포넌트
Broadcast Receiver : 문자, 배터리방전, SD카드 탈부착 등 전체 응용프로그램이 들을 수 있도록 방송신호를 보냄(사이에에서 메신저 역할 (Intent)
명시적 인텐트 - 클래스 -안드로이드 4대 컴포넌트간 데이터를 주고받는 메세지 객체
양방향 엑티비티 주고 받기!!
StartActivityForResult는 향후 동작이 안될 수 있다.
ㄴ Result_OK로 넣어야함.
암시적인텐트 - 약속된 액션을 지정
안드로이드 생명주기 !
1) onCreate()
- Activity가 생성되면 가장 먼저 호출됨
- 화면 Layout 정의, View 생성, Databinding 등은 이곳에 구현함
- 생명주기 통틀어서 단 한 번만 수행되는 메소드
- 따라서 Activity 최초 실행에 해야하는 작업을 수행하기에 적합함
2) onStart()
- Activity가 화면에 표시되기 직전에 호출됨
- 화면에 진입할 때마다 실행되어야 하는 작업을 이곳에 구현함
3) onResume()
- Activity가 화면에 보여지는 직후에 호출됨
- 현재 Activity가 사용자에게 포커스인 되어있는 상태
4) onPause()
- Activity가 화면에 보여지지 않은 직후에 호출됨
- 현재 Activity가 사용자에게 포커스아웃 되어있는 상태
- 다른 Activity가 호출되기 전에 실행되기 때문에 무거운 작업을 수행하지 않도록 주의해야함
- 영구적인 Data는 이곳에 저장
5) onStop()
- Activity가 다른 Activity에 의해 100% 가려질 때 호출되는 메소드
- 홈 키를 누르는 경우, 다른 액티비티로의 이동이 있는 경우가 있음
- 이 상태에서 Activity가 호출되면, onRestart() 메소드가 호출됨
6) onDestroy()
- Activity가 완전히 종료되었을 때 호출되는 메소드
- 사용자: finish(), onBackPressed()(기존 액티비티의 onResume()까지 호출된 후 onDestroy() 호출)
- 시스템: 메모리부족(프로세스 종료)
- onStop(), onDestroy() 메소드는 메모리 부족이 발생하면 스킵될 수 있음
7) onRestart()
- onStop()이 호출된 이후에 다시 기존 Activity로 돌아오는 경우에 호출되는 메소드
- onRestart()가 호출된 이후 이어서 onStart()가 호출됨
Task - 특정일 수행시, 상호작용하는 액티비티들의 모음!
-새로운 액티비티를 실행시 열린 순서대로 스택이 들어감 (안드로이드 백 스택 이라고함)
=액티비티를 부르고 또 부르면 스택이 쌓인다. 그때 BACK 누르면 이전 엑티비티가 보여진다.
프래그먼트 - 화면분할표시
액션바 - 여러화면 사용을 위해
학습정리 (7/3 - 31분)
안드로이드 핵심 커널은 리눅스 SDK에 많은 라이브러리 포함 개발 용이
안드로이드 개발언어는 JAVA 오픈소스 지향, 운영체제부터 모든것이 무료 - > 지속적 업그레이드 제공
주요기능 (안드로이드)
- 어플리케이션 프레임워크로 제공되는 API 사용, 효율적, 빠른 애플리케이션
- 달빅 또는 아트 제공
등등..
안드로이드 1학기분 정리 끝~!
'📜✏️노트 자리없어서 적는 IT 지식📜✏️' 카테고리의 다른 글
웹디자인기능사 필기 2탄 (0) | 2024.06.08 |
---|---|
웹 디자인 기능사 필기 공부내역(78점 합격!) (0) | 2024.05.13 |
원어민이 쓰는 여행영어(Airport Duty-Free Shopping 및 배운거 복습) (0) | 2024.05.12 |
컴퓨터 네트워크 part2. (주기적 신호, 비주기적 신호, NRZ 종류들, Send()함수들, 부호화 종류) (0) | 2024.05.07 |
원어민이 쓰는 여행 영어 (0) | 2024.05.05 |