본문 바로가기

전체 글

(19)
[Swift : 알고리즘] 선택정렬(Selection Sort) 선택정렬은 '가장 작은 원소를 앞으로 보내는' 알고리즘 방법입니다. 두 번의 For Loop를 사용하며 배열을 순회하며 min(최솟값)을 찾아서 그 값을 배열의 맨 앞으로 보내고 해당 값 이후의 인덱스부터 다시 최솟값을 찾아서 비교하며 정렬하게 됩니다. O(N^2)의 시간 복잡도를 가지는 구현이 단순하지만 비효율적인 알고리즘입니다. func selectionSort(notSortedArray: [Int]) -> [Int] { /* for swap var temp: Int */ var index: Int var array: [Int] = notSortedArray for i in 0 ..< notSortedArray.count { //External Loop var min: Int = array[i] in..
[Swift : MacOS] MAC statusbar 어플리케이션을 만들어보자 기본적으로 MAC OS 어플리케이션을 만들면 statusbar(이하 상태바)에 표시되지 않고 storyboard에 있는 화면이 새 창으로 뜨게된다. statusbar에서도 컨트롤 가능한 어플리케이션을 만드려면 몇 가지 작업을 해주어야한다. 1. Appdelegate NSStatusItem 설정 먼저, Appdelegate에서 NSStatusItem 변수를 추가한다. 그 다음 applicationDidFinishLaunching 메써드 안에 NSStatusItem 설정을 해준다. import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { private var statusItem: NSStatusItem! func ..
[Android] 어플리케이션 글꼴 변경하기 + 글꼴 일괄 적용 안드로이드 스튜디오에서 기본으로 제공하는 글꼴 외에도 자기가 원하는 글꼴을 적용하고 싶을때가 있다. 그럴때는 해당 글꼴의 .ttf or .otf 파일을 안드로이드 스튜디오에 넣어줌으로써 해당 글꼴을 적용할 수 있다. 1. 폰트 디렉토리 생성 폰트를 추가하기 위해서는 먼저, /res/font/ 아래에 추가를 해야하는데 font폴더가 없을경우 res -> New -> Directory 로 폴더를 생성해준다. 2. 폰트 넣어주기 그 다음 font 디렉토리에 적용하고 싶은 글꼴의 .ttf 파일을 넣어준다. (ctrl + c -> ctrl+v) 이때, 폰트 명을 반드시 소문자로 바꿔 주어야 한다 !! (대문자가 포함되어있을 시 파일을 옮긴 후 Refactor 혹은 옮기기 전에 파일명 소문자로 수정 후 옮겨주기) ..
[Android : Kotlin] 뒤로가기 두번으로 앱 종료하기 with SnackBar 뒤로가기에 대한 처리를 해주지 않으면 기본으로 구성되어있는 onBackPressed() 메서드가 호출되며 열려있는 액티비티를 finish()시키게 되어있어서 뒤로가기 버튼을 한번만 누르면 앱이 종료되어 버린다. 뒤로가기를 실수로 눌러도 바로 종료되어버리기 때문에 한번 눌르면 "종료하시겠습니까?" 라는 메시지를 보여주고 두번 누르면 앱을 종료하는 기능을 구현해보자. 이 기능을 구현하기 위해서는 onBackPressed() 메서드를 재정의해야한다. //뒤로가기 연속 클릭 대기 시간 var mBackWait:Long = 0 먼저, 멤버변수로 뒤로가기 버튼 클릭시간의 간격을 재기위해서 변수를 선언해준다. 그 다음 onBackPressed() 메서드를 재정의해준다. override fun onBackPressed..
[Android] EditText auto focus, auto 키패드 ON/OFF ON EditText의 자동 포커스, 자동 키패드 기능을 적용하려면 EditText의 nextFocusDown 속성을 이용해서 포커스의 순서를 정할 수 있다. 또한 자동 키패드를 설정하기 위해서는 AndroidManifest.xml의 해당 Activity에 windowSoftInputMode 속성값을 stateVisible값을 준다. OFF 반대로, 자동 포커스 기능을 막으려면 EditText를 감싸는 상위 view에 focusable, focusableInTouchMode 속성값에 true를 주어서 상위 view에 focus를 주면 된다. 또한 EditText의 자동 키패드를 실행을 막으려면 AndroidManifest.xml의 해당 Activity에 windowSoftInputMode 속성값을 sta..
[Android] EditText 밑줄(underline) 제거 및 Cursor(커서) 커스텀 EditText를 사용하면 EditText의 너비만큼 자동으로 밑줄이 생성되어있다. 이 밑줄을 제거하기 위해서는 EditText의 속성에 android:background="@android:color/transparent" 혹은 android:background="@null" 로 밑줄을 제거할 수 있다. 그런데 이렇게되면 텍스트창의 커서까지도 사라져버린다. 이 커서를 다시 만들어주기 위해서 /res/drawable 폴더에 text_cursor.xml 파일을 만든다. 이 때, cursor의 색상은 미리 /res/values/colors 폴더에 지정해놓는다. /res/drawable/text_cursor.xml 그 다음에 EditText의 속성에 android:textCursorDrawable="@drawa..
[Android : Kotlin] TextInputLayout을 사용해서 EditText를 꾸며보자 TextInputLayout을 사용하면 EditText에 넣은 힌트를 텍스트 입력중에 텍스트바 위로 올려서 보여주거나 텍스트의 글자 수를 세주거나 최대 글자 수를 초과할 경우 에러 메시지를 보여주는 등의 기능을 사용할 수 있다. 1. 의존성 추가 앱 모듈의 build.gradle에 안드로이드 디자인 서포트 라이브러리를 추가한다. implementation 'com.android.support:design:22.2.0' 2. 텍스트 입력중에도 힌트 보여주기 먼저, TextInputLayout으로 EditText를 감싼다. 이렇게 감싸주기만 하면 EditText의 hint가 텍스트 입력중(Focus가 되어있을경우)에는 EditText의 위에서 hint 내용을 보여주게된다. 3. pw토글 TextInputLa..
[Android : Kotlin] 네이버 지도 SDK를 사용해서 네이버 맵을 구현해보자 안드로이드 코틀린으로 네이버 지도 SDK를 사용해서 네이버 지도를 구현해보자. 1. 먼저, ☞ 네이버 클라우드 플랫폼에 가입해서 어플리케이션 등록을 한다. 2. 의존성 추가 루트 프로젝트의 build.gradle에 에 저장소 설정을 추가한다. allprojects { repositories { google() jcenter() maven { url 'https://navercorp.bintray.com/maps' // naver map } } } 그리고 앱 모듈의 build.gradle에 네이버 지도 SDK에 대한 의존성을 선언한다. implementation 'com.naver.maps:map-sdk:3.5.0' // naver map 3. 클라이언트 ID 지정 발급받은 클라이언트 ID를 SDK에 지정..