공유 컴퓨터 : smb://192.168.0.76. - 계정 : 304, 비번 : 1111
**Mac 비밀번호 : 1111
**프로그램을 설치하려고 할때 다운로드 받은 파일이라 안된다는 경우 시스템 환경설정을 실행하고, [보안 및 개인정보보호]에서 설정
**Mac의 키보드
- CapsLock 키가 한영 전환
- 복사나 붙여넣기기 윈도우키 + c, 윈도우키 + v
**Android를 하기 위한 준비
1. JDK 설치
=> 설치 확인 : Windows의 경우 환경변수에 ProgramFile - Java - jdk - bin 이라는 디렉토리를 path에 추가하고 명령어 입력
=> 터미널에서 java -version(JRE 설치여부와 버전 확인), javac -version(JDK 설치여부와 버전확인)
2. Android Studio 설치
3. 환경 설정
1) Mac에서는 Android Studio 메뉴의 Preferences를 실행하여 설정
2) Windows에서는 환경설정 메뉴가 대부분 window메뉴에 있음
4. 에뮬레이터 설치
**Java Build Tool
1. Maven
=> pom.xml 파일을 기반으로 하는 빌드 도구
=> spring mvc project의 기본 빌드 도구
2.Gradle
=> build.gradle 파일을 기반드로 하는 빌드도구
=> android studio project 의 기본 빌드 도구
=> json 형식으로 설정
**Document
1. Android 의 기본원리나 프로젝트 생성
=> https://developer.android.com/guide
2. API에 대한 설명
=> https://developer.android.com/reference/packages
**프로젝트 실행
=> Run] - [Run app]을 선택하도 되고 삼각형 모양의 아이콘을 클릭해도 됨
=> 에뮬레이터로 실행하는 경우 미리 설치가 되어있어야 함
**프로젝트 구조
1. manifests/AndroidManifest.xml
=>앱의 환경 설정 파일
=> 앱의 기본 모양, 컴포넌트 등록과 삭제 권한 설정등을 함
- 프로젝트 내부에 컴포넌트를 만들었더라도 여기 등록되지 않으면 사용 불가
- 컴포넌트는 개발자가 클래스를 이용하여 만들지만 인스턴스를 만들어서 실행하는 것은 Android System
- 이것을 제어의 역전(IoC - Invesion of Control)이라고 함
2. java 디렉토리
1) 패키지 이름 : 소스파일
2) 패키지 이름(androidTest) : 안드로이드 앱을 테스트하기 위한 클래스
=> 환경설정을 읽어서 테스트
3) 패키지 이름(test) : 단위 테스트를 하기위한 클래스
=> 환경설정은 읽지 않고 테스트(알고리즘 테스트)
3. res 디렉토리
=> 프로그램 실행에 필요한 자원이 저장되는 디렉토리
=> 여기 저장된 리소스는 앱이 실행될 때 메모리에 전부 로드 됨
=> 안드로이드는 리소스에 저장된 자원을 하나의 상수에 할당하여 자원명을 리소스 ID를 이용하여 사용할수 있게 해줌
- 안드로이드에서는 리소스를 만들때 소문자, 숫자만 이용하여 만들도록하고, 영문 소문자로 시작하도록 강제
4. Gradle Script
=> 빌드를 위한 grade파일이 위치하는 디렉토리로 build.gradle 이 빌드 설정을 위한 파일
=> project, module 수준이 있고, project-애플리케이션 1개, module-독립적 실행 가능 단위, 한 project에 다수의 module 제작 가능
**디버깅(Debugging)
=>디버깅은 논리적인 오류나 예외를 처리하기 위해서 메모리의 값을 확인하며 실행하는 작업
1. break point 설정 : 라인 번호 옆의 gutter를 클릭해서 생성
2. Debug Mode 실행 : [Run] - [Debug]를 선택
=> 논리적인 오류나 NullPointerExceptioni의 경우에 주로 이용
**Exception 확인
=> printStackTrace에서 위에서 아래로 내려오며 자신이 만든 클래스 중 가장 먼저 나오는 것을 찾아 그 위치부터 안으로 들어가며 처리
**Git Hub연동
1. 프로젝트 업로드
1) [VCS] - [Import into Version Control] - [Share Project on Github]
=> git이 설치되어 있지 않으면 git을 설치하라고 뜨고 설치가 끝나면 Android Studio를 종료하고 다시 시작하여 수행
2) id와 Password 입력창이 보이고 로그인을 수행
3) 레포지토리 이름 설정하는 창이 보임
**안드로이드 화면 출력
1.Activity
=> 안드로이드 화면출력 컴포넌트
=> setConteneView(View 또는 Layout ID) 메소드를 호출하면 Activity의 메인 뷰가 설정됨
2. ViewGroup : 뷰들을 모아서 출력하는 레이아웃
3. View : 화면에 보여지는 객체로 Widjet이라고도 함
=> 안드로이드 화면 출력시 ViewGroup을 이용해서 다른 ViewGroup, View를 하나로 만들고, Activity의 메인뷰로 설정하여 출력
**View를 만드는 방법
1. Java 코드로 뷰를 만들기
=> 동적으로 뷰를 생성할 수 있음
=> 뷰의 속성을 변경할 때 컴파일부터 다시 해야 합니다.
2. Layout.xml 파일을 이용하여 xml로 만들기
=> Activity가 실행될 때 모든 뷰를 생성해야 함
=> 뷰의 속성을 변경한 후 실행만 다시하면 됨
3. 보통은 기본화면은 xml로 설정하고 이후 속성변경은 java 코드로 수행하는 경우가 많음
**View 실습 - Java 코드로 뷰를 생성
1. Android Project 생성
2. MainActivity.java 파일의 onCreate 메소드 수정
@Override
protected void onCreate(Bundle savedInstanceState) {
//오버라이딩시 직접 만든 클래스의 메소드를 오버라이딩하는 경우가 아니면
//상위 클래스의 메소드를 호출해 주어야 함
super.onCreate(savedInstanceState);
//xml 파일의 내용을 메인뷰로 설정
//setContentView(R.layout.activity_main);
//레이아웃 생성
LinearLayout linear = new LinearLayout(this);
//버튼 생성
Button btn1 = new Button(this);
//버튼의 속성을 설정
btn1.setText("버튼");
//버튼을 레이아웃에 추가
linear.addView(btn1);
//Activity에 레이아웃을 메인뷰로 설정
setContentView(linear);
}
**View 실습 : xml로 뷰를 실행
=> 새로운 프로젝트를 생성하지않고 실행가능한 Activity만들기
1. File - New - Activity - Empty Activity
2. Activity 이름과 Layout 파일의 이름을 설정하는 대화상자가 출력
=> Launcher Activity를 체크하면 실행가능한 Activity로 만들어짐
3. 생성된 Layout 파일의 내용 수정
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewXML"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="XML 버튼"/>
</LinearLayout>
**View의 종류
1.Window
=> View의 일종으로 애플리케이션이 생성되어 화면에 출력시 가장 바탕이 되는 뷰로 1개만 생성이 가능
- Window의 크기가 디바이스 전체 크기로 설정
=> View들을 관리
2.Surface
=> Layer라고도 불리며 View 위에 놓여서 실제 그림을 그리는 역할을 수행하는 객체로 단독 출력 불가
3.View
=> 터치 등의 이벤트를 처리할 수 있고 화면에 surface를 하나 가지고 있는 객체
4.출력 구조
=> Activity(View Controller) -> View -> Surface(Layout)
=> 화면 변경
- Activity 변경
- Activity 그대로 두고 View를 변경
- View를 그대로 두고 Surface를 이용해서 출력하는 그림을 변경
5. 실제 출력은 운영체제가 수행
=> application에서 운영체제가 출력하는 surface를 직접 핸들링하게되면 운영체제와 앱이 충돌할 수 있음
- 출력은 Surface를 추상화한 View를 이용
=> MVC : Model, View, Controller로 나누어서 구현
=> View만을 이용해서 출력하게 되면 View에 데이터를 저장해야 함
=> 출력은 View가 담당하고 데이터는 별도로 가질수 있는 Activity의 개념을 도입하여 Activity가 Controller의 역할 수행
6. Android에서의 View
1) widget : 하나의 컴포넌트
2) view group : 다른 widget들을 모아서 출력할 수 있는 View
**Android에서 로그 출력
=> System.out.print, println을 사용할 수 없음
=> Log.레벨(String title, String msg)를 이용
=> 출력은 logical 화면에서 확인
=> 레벨은 l, d, w, e등이 있음
**Android Studio에서 Activity를 생성하거나 새로운 View를 인식하지 못하여 에러가 발생하는 경우
=> [Build] - [Clean Project] 와 [Rebuild Project]를 수행
=> Android Studio를 재실행
**View의 속성
1. id
=> xml에서 view를 만들고 이 view를 자바에서 사용하고자 할 때 설정
- @ + id/아이디 : +기호는 새로 생성한다라는 의미이고 +가 없으면 id 를 사용
=> ex) android:id = "@+id/name"
- 자바 코드에서는 위에 만든 뷰가 속한 뷰나 Activity에서 findViewById(아이디)로 가져와서 사용
2. layout_width, layout_height
=> 필수 속성
=> View의 너비와 높이
=> 3가지 방법으로 설정
- match_parent(fill_parent) : 부모의 크기와 같이 만들어 줌
- wrap_content : 내용의 크기로 설정
- 크기와 단위로 설정
=> 크기 설정은 부모의 Layout과 다른 View와의 관계에 따라 다르게 설정(절대 크기 X)
3. 단위
1) 절대 단위 : px, in, mm
2) 상대 단위 : dp(dip), sp(sip), em
- dip : 160dpi를 기준으로 1px가 1dp, 320dpi가 되면 2px이 1dp
- sip : 글꼴에따라 크기가 달라지는 단위
=> Android에서는 dp나 sp를 이용해서 크기 설정하는 것을 권장
4. 배경색 - background
=> 색상값은 #ARGB나 #RGB를 이용하여 설정
=> 각각의 색상은 16진수 2자리
5. padding, margin
=> padding은 내부 여백으로 경계선과 내용물 사이의 여백
=> margin은 외부 여백으로 내 경계선과 다른 콘텐츠의 경계선 사이의 여백
=> padding, margin으로 설정시 4방향 동일하게 설정, 각각의 방향은 padding, margin 다음에 left, rigth, top, bottom등으로 설정
6. visibility
=> 뷰의 표시 여부
=> visible, invisible(숨겨진 상태이지만 영역은 차지), gone(숨겨지며 영역도 사라짐)
7. clickable, longClickable
=> boolean값으로 설정하여 클릭가능 여부를 설정
8. focusable
=> 포커스를 받을수 있는지 여부
=> 스마트폰에서는 포커스를 받을수 있는지 여부가 키보드 사용 가능 여부를 결정
9. 맞춤을 위한 속성
=> LayoutParams와 Layout_gravity
**View의 속성을 xml에서 설정하고, 버튼을 이용하여 View의 속성을 동적으로 변경
1. 실행 가능한 activity를 추가
2. Layout을 수정
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ViewAttributeActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Visible"
android:id="@+id/btnvisible"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello_andr"
android:background="#FF00FF"
android:textColor="#00FF00"
android:visibility="invisible"
android:id="@+id/txtmsg"
/>
</LinearLayout>
=> 버튼 : btnvisible
=> 텍스트 : txtmsg
Tip!
=> 앱 제작시 여러 View를 사용하므로 각 속성의 ID를 저장해 두는 것이 좋음
**final
=> 클래스 앞에 붙으면 상속할 수 없는 클래스
=> 메소드 앞에 붙으면 오버라이딩할수 없은 메소드
=> 변수 앞에 붙으면 변경할 수 없는 변수
**anonymous class
=> 클래스를 상속하거나 인터페이스를 implement해서 사용할 때 별도의 클래스를 만들지 않고 인스턴스를 생성하여 사용하는 방식
=> 이 클래스 내부에서 지역변수는 사용 불가
- 지역변수 사용시 final로 만들어서 사용
=> Android Studio가 anonymous class 중에서 메소드가 1개인 경우는 람다코드로 변환해버리는 경우가 있음
- Android를 하기 전에 Java의 람다문법은 숙지해야 함
- 람다는 프로그래밍언어마다 호칭이 다르므로 언어별로 따로 학습해야 함
**Mac에서 MySQL 설치
1. dmg 파일을 다운로드 받아서 설치
2. 설치 중간에 root 비밀번호 확인
- 비밀번호를 메모를 해두었다가 변경을 해야 합니다.
- jt7!;afg)V_u
3. 시스템 환경 설정을 열어서 MySQL 을 start
4. 터미널에 접속
cd /usr/local/mysql/bin
./mysql -u root -p
alter user ‘root’@‘localhost’ identified by ‘비밀번호’;
flush privileges;
5. DBeaver를 설치하고 접속
'수업 정리' 카테고리의 다른 글
70일차 수업정리(Android Layout) (0) | 2020.07.15 |
---|---|
69일차 수업정리(Lambda, Android Interface) (0) | 2020.07.14 |
67일차 수업정리(텍스트 파일보고 다시 정리) (0) | 2020.07.10 |
66일차 수업정리(RestController, ajax) (0) | 2020.07.09 |
63~65일차 수업 정리(Spring MVC Project 외 정리) (0) | 2020.07.08 |