본문 바로가기

분류 전체보기

(39)
[Error] Failed to compile values file 에러메세지에보면 '리소스를 머지할 수 없다' 는 오류메세지가 나온다. 유효하지 않은 값을 에 줘서 그렇다고 하는데 보면 greenPress에는 #을 생략했고 이전에 textColor 에는 6자리를 줘야하는데 5자리를 줘서 유효하지 않은 값을 주게되어 에러가 난것이다. 좌측에 색이 나오는걸 확인해야한다.
핸들러 사용하기 스레드와 핸들러 안드로이드에서 UI작업을 수행하는 스레드를 메인스레드 또는 UI스레드라고 부른다. ui와 관련된작업은 이 메인스레드에서 진행하여야하고 그 외 복잡하거나 오래걸리는 작업은 새로운 스래드(워커스레드)를 생성해서 진행하여야 어플의 반응성(ui반응)이 좋아지고 속도가 빨라진다. 그런데 워커스레드에서 네트워킹 작업을 하고 그 결과를 ui에 적용할때와 같이 메인스레드가 아닌 스레드에서 ui작업을 하게되는 경우 워커스레드에서 ui관련 작업 코드를 입력하면 당연히 오류가 나기때문에 반드시 핸들러를 이용해야한다. 이처럼 핸들러는 스레드간의 통신을 제공하는 안드로이드 객체이다. 핸들러 사용해서 시간지연시키는 작업을 다른 스레드에서 하기 윈도우10에 기본으로 탑재되어 있는 스티커메모 프로그램은 새로 타이핑할..
Android layout ) drawable 그리기 drawable 폴더에는 layout에 그릴 수 있는 이미지나 xml파일을 저장한다. 여기서 직접 그려서 xml파일로 만들어 요소의 백그라운드 등으로 활용할 수 있다. 사용 =>
SharedPreferences 공유환경설정파일 - 저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreferences API를 사용해야한다. - SharedPreferences 객체는 키-값 쌍을 읽고 쓸 수 있는 메서드를 제공한다. - 각 SharedPreferences 파일은 프레임워크에서 관리하며 비공개이거나 공유일 수 있다. ( preference를 공유한다는 말그대로 다른 앱과 공유할 수 있게 설정할 수 있다. ) SharedPreferences 핸들 가져오기 getSharedPreferences() : 앱의 모든 Context에서 이 메소드를 호출할 수 있다 첫번째 파라미터 : 키값 두번째 파라미터 : 모드 getPreferences() : 액티비티에 하나의 preferences만 만들고 사용하는경우, 이름을 파라..
[ 오즈 리포트 디자이너 ] 자바스크립트 로깅하는법 TraceLn 함수를 사용한다 미리보기 실행후 ctrl + z 에서 검증탭 확인
Android layout ) constraintLayout 속성 layout_constraint ~ ui를 어떤 ui의 어디에 둘것인가를 정하는 속성 layout_constraintHorizontal_chainStyle 위치 관계과 정의된 ui요소와 요소를 얼마나 떨어트릴것인가 레이아웃 양옆에 붙는다고 제약조건을 주고 ui요소의 width를 0으로 만들면 두가지 제약조건을 충족하기 위해 요소가 퍼진다 gravity 로 정렬 실행됬을때만 보고싶지만 그래도 레이아웃 편집중에는 보면서 해야될때
랜덤 수 추출 알고리즘 Random함수의 파라미터 seed값 랜덤수를 생성하는 함수 nextInt()를 제공하는 Random클래스 객체를 생성할때 seed값이라고 파라미터로 전달할 수 있다. 그리고 그 seed값을 기준으로 랜덤수를 추출하는 알고리즘을 돌리는데 아무것도 넣어주지 않으면 랜덤한 수를 뽑기에 가장 좋은 밀리세컨드값이 디폴트로 들어간다. List를 사용하는 경우1 : list에 랜덤수를 넣는 방식 fun main() { val random = Random() val list = mutableListOf() while(list.size < 6){ var ranum = random.nextInt(45) if(list.contains(ranum)){ continue } list.add(ranum) } println(lis..
컬렉션2 ) 코틀린 컬렉션의 종류소개(List, Set, Map) Collection Collection는 최상위 클래스로서 read-only 컬렉션들의 동작을 나타내고 있다. ( 사이즈 검색, 아이템 get 등) Collection은 Iterable 인터페이스를 상속하고 있다. ( Iterable는 컬렉션 요소의 데이터를 하나씩 읽어오는 동작을 정의한 인터페이스다. ) 그리고 Collection 타입을 파라미터로 요구하는 메소드에서 파라미터로 Collection을 상속한 다른 컬렉션을 사용할 수 있다. MutableCollection 는 add 와 remove 같은 동작이 가능한 Collection이다. List List는 특정한 순서로 요소들을 저장하고 그들에게 접근할 수 있는 인덱스를 제공한다. 인덱스는 0부터 시작하고 마지막 인덱스는 (list.size - 1)..
컬렉션1 ) 컬렉션 타입과 상속관계 컬렉션(set, list, map) 타입에는 크게 두가지가 있다. read-only(immutable) read-only 컬렉션 타입은 공변적이다. 만약 Rectangle 클래스가 Shape 클래스를 상속했다면 List은 List을 사용할 수 있는곳 어디에서나 쓰일 수 있다. mutable mutable 컬렉션은 공변적이지 않다. 공변적으로 사용할 경우 런타임 오류를 일으킬 수 있다. 만약 MutableList이 MutableList의 서브타입일 경우 Shape을 상속받은 다른 타입을 insert할 경우 Rectangle 타입으로 매개를 넣어야하는것을 위반할 수 있다. 🥕 mutable 컬랙션을 사용한다고 반드시 var를 쓸 필요는 없다. val을 써도 .add해서 리스트를 수정할 수 있다. 어차피 참조..
명시적 Intent 로 Activity 시작 인텐트 쓰는 경우 Intent는 메시징 객체다. 다른 앱 구성 요소(안드로이드 4대 컴포넌트)로부터 작업을 요청하는데 사용할 수 있다. 액티비티 시작 서비스 시작 브로드캐스트 전달 다른 화면으로 전환 하면서 데이터도 넘기는법 (Activity 전환) 인텐트는 명시적 인텐트와 암시적 인텐트로 나뉘는데 명시적 인텐트는 앱 내의 특정 액티비티나 서비스 등 특정한 앱 구성 요소를 시작하는 데 사용하는 인텐트이다. 명시적 인텐트를 생성하려면 Intent 객체에 대한 구성 요소 이름을 정의하고, 나머지는 선택사항이다. 여기서는 명시적 인텐트만 다룬다. 이동하고자 하는 액티비티의 정보를 담은 인텐트 객체 생성 putExtra 로 파라미터를 담아준다. (스프링의 ModelAndView 객체 .addAttribute와 ..