본문 바로가기

전체 글

(63)
안드로이드 프로젝트 구성 안드로이드 프로젝트 구성 코드 : 프로그래밍 언어로 작성 동적인 내용 리소스 : 앱 내에 저장한 자원 정적인 내용 (이미지, 사운드, 동영상 레이아웃 등) 환경 설정: 앱에 대한 정보를 설정 코드나 리소스 또는 환경 설정을 변경하면 앱을 다시 심사받아야 한다. 프로젝트 파일 AndroidManifest.xml : 테마 설정과 권한 설정 및 컴포넌트 등록 컴포넌트를 만들었는데 등록을 하지 않으면 사용할 수 없습니다. Java 디렉토리 1. 첫번째 패키지 : 실제 앱의 코드가 들어가는 패키지 2. 두번째 패키지 : 안드로이드 코드 테스트 패키지 3. 세번째 패키지 : 자바코드 테스트 패키지 res 디렉토리 : 리소스 디렉토리 용도 별로 별도의 디렉토리를 제공 예전에는 R.java 파일이 정적으로 생성 돼서 ..
코틀린: Generic 데이터의 자료형을 동적으로 지정 동일한 알고리즘을 사용하는 메소드를 여러번 구현하는 것은 자원의 낭비 하나의 메소드만 구현해놓고 실행 될 때 자료형을 결정해서 코드를 완성하고 실행하기 위한 개념 fun add(a : Int, b : Int ) : Int { return a + b } fun add(a : Double, b : Double ) : Double { return a + b } => Any 로 만들어진 자료형은 어떤 종류의 데이터든지 전부 대입이 가능 fun add(a : Any, b: Any ) : Any { return a + b } 템플릿으로 해결 fun add(a : , b : ) : { return a + b } 미지정 자료형에 Int 를 넣어주세요 add(10, 20) add(10, ..
코틀린 : Class Extension 클래스의 기능 확장 Class Extension : 클래스의 기능 확장 클래스의 기능을 추가 할 때 상속을 이용하는 경우가 많습니다. API 에서 제공하는 클래스 중에 final 클래스는 상속을 할 수가 없습니다. String.x = fun(){} //String 클래스에 x 라는 함수가 추가된 형태 // 이 기능은 코틀린 파일이 Java 파일로 변경 될 때 코틀린 파일 이름.class 로 변환이 됩니다. //코틀린 파일에 새로운 인스턴스를 추가해서 String 의 기능이 확장 된 것처럼 사용 class StringEx { var str:String = String() fun x() { } } val y : String = String()
코틀린 : Exception Handling (예외 처리) Exception Handling (예외 처리) Exception : 문법적인 오류는 없어서 실행은 되지만 실행 도중 특수한 상황이 발생해서 프로그램이 중단 되는 현상 try { 예외가 발생할 만한 코드 } catch ( 변수명 : 예외 클래스 이름 ) { 예외 클래스에 해당하는 예외가 발생했을 때 수행할 내용 } ... finally{ 무조건 수행하는 코드 } catch 는 여러 개 가능 finally 는 생략할 수 있고 한 번 만 나와야 합니다.
안드로이드 native app 개발 환경 구축하기 JDK 1.8 이상을 설치 : www.oracle.com 다운로드 android studio 를 설치 : developer.android.com 안드로이드 스튜디오 설치 후 1. 에뮬레이터 추가 2. SDK 추가 (최신 버전 이외의 API를 사용하고자 하는 경우와 Google Play 사용 하는 경우) 안드로이드 작업 단위 1. Project : 1 개 이상의 앱을 관리하기 위한 단위 => Project 를 생성하면 1개의 모듈이 자동으로 추가 2. Module : 1 개의 앱 => 생성하면 1 개의 Activity를 자동으로 추가 3. Activity : 1 개의 화면 6.0 Marshmallow : 카메라 버전 8.0 Oreo : pip 동영상 올리고 내리고 9.0 Q : AI 10.0 R : 텐서플..
코틀린 : null 안전성 코틀린 : null 안전성 1. 코틀린의 자료형은 null 허용 타입과 불허 타입으로 나눌 수 있음 null 허용 타입을 만들 때는 자료형 뒤에 ? 를 붙이면 됩니다. null 허용 타입은 val 로 만들지를 않습니다. val n1 : Int = 10 var n2 : Int = 10 val n3 : Int? = null // 문법상은 가능하지만 실제로는 하지 않는다 var n4 : Int? = null n3 = 4 // 에러 2. null 허용 타입에 null 을 불허 타입의 데이터는 대입이 가능 하지만 null 불허 타입에 null 허용 타입의 데이터는 대입이 안됩니다. var n1 : Int = 20 var n2 : Int? = 30 n2 = n1 // 정상 수행 n1 = n2 // 에러 3. ? 연..
코틀린 : Collection 과 람다, 정렬 Collection 과 람다 groupby 함수 groupby (T->R):Map 매개 변수가 1개이고 리턴이 있는 함수를 대입해서 리턴 값을 데이터를 분류를 해서 Map 으로 리턴해주는 함수 정렬 reverse, sorted, sortedBy, sortedDescending, sortedDescending reverse 는 매개 변수 없이 사용해서 데이터의 순서를 반대로 만들어 줍니다. sorted 는 매개 변수 없이 사용해서 데이터를 오름차순 ( 작은 것 -> 큰 것 ) 정렬해서 리턴 합니다. 데이터의 크기를 비교할 수 있는 경우에만 사용 가능 sortedBy 는 매개 변수가 1 개이고 리턴이 있는 함수를 대입받아서 리턴 값을 가지고 오름차순 정렬을 해서 리턴합니다. null class User(va..
코틀린: 컬렉션과 람다 컬렉션과 람다 어떤 형태의 람다 표현식이 필요한 지 생성 컬렉션은 데이터의 모임 : 배열(Array), 리스트(List), Set Map 은 수행 되는 것도 있고 안되는 것도 있다. fun main(args:Array){ val ar = arrayOf(20, 30, 17, 22) // 일반적인 람다 표현식을 대입 ar.forEach({n:Int -> println(n)}) // 매개 변수가 1개 이면 매개변수를 생략하고 it를 사용 가능 ar.forEach({println(it)}) // 람다 표현식이 함수의 마지막 매개 변수라면 () 외부에 작성 가능 ar.forEach{println(it)} // forEachIndexed // 2개의 매개 변수를 갖고 리턴이 Unit인 람다 표현식을 대입 // 첫번..