전체 글
[패스트캠퍼스 챌린지 8일차] Android voice recorder
오늘은 voice recorder 앱을 만들기 위해 기본 UI를 구성하였습니다. recorderButton을 불러주고 현재 녹음을 진행하는지 상태 여부에 따라 아이콘이 바뀌도록 구성해주었습니다. enum class State { BEFORE_RECORDING, ON_RECORDING, AFTER_RECORDING, ON_PLAYING } enum class state를 생성하여서 BEFORE_RECORDING : 녹음 전, ON_RECORDING : 녹음중, AFTER_RECORDING: 녹음 후, ON_PLAYING : 재생 이 처럼 정의해 주었습니다. fun updateIconWithState(state: State){ when(state){ State.BEFORE_RECORDING ->{ setIm..
[패스트캠퍼스 챌린지 7일차] Android Timer
오늘은 seekBar를 움직였을 때 타이머 숫자가 변하고 시간이 변함에 따라 변하는 기능을 구현하였습니다. object : CountDownTimer(initMillis, 1000L){ override fun onTick(p0: Long) { updateRemainTimes(p0) updateSeekBar(p0) } override fun onFinish() { updateRemainTimes(0) updateSeekBar(0) } } CountDownTimer 함수의 멤버함수로 onTick 과 onFinish 함수를 정리해주었습니다. private fun updateRemainTimes(remainMillis: Long){ val remainSeconds = remainMillis / 1000 rema..
[패스트캠퍼스 챌린지 6일차] Timer_App
Timer앱을 만들기 위한 UI를 먼저 구성하였습니다. 가운데에 TextView 2개를 구성하고 하나는 분을 나타내고 하나는 초를 나타냅니다. app:layout_constraintHorizontal_chainStyle="packed" 위 코드를 이용하여서 떨어져 있는 TextView 두 개를 remainMinutesTextView 가로 chain 값을 packed로 주어 모이도록 하였습니다. 아래 SeekBar를 이용하여 움직이는 정도에 따라 타이머가 설정되도록 만들 예정입니다. 최대 시간은 max값으로 60을 주었습니다. seekBar.setOnSeekBarChangeListener( object : SeekBar.OnSeekBarChangeListener{ override fun onProgress..
[패스트캠퍼스 챌린지 5일차] Android 전자액자 마무리
오늘은 전자액자 앱 마무리를 지었습니다. 최종적으로 사진을 다 추가하고 난 뒤에 실행하기 버튼을 누르면 3초에 한번씩 사진을 바뀌면서 보여주는 기능을 만들었습니다. 이미지 뷰 2개를 만들어주고 하나를 앞에서 보여주고 그 다음 이미지를 보여주기 위한 이미지뷰입니다. private fun startTimer(){ timer = timer(period = 3000){ runOnUiThread { val current = currentPosition val next = if(photoList.size https://bit.ly/3FVdhDa 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
[패스트캠퍼스 챌린지 4일차] Android 전자액자
어제 만들던 부분에서 추가된 점은 이미지 뷰 6개를 추가하고 권한 확인 후 이미지 선택하는 화면을 불러오는 작업을 하였습니다. 레이아웃 부분에서 이미지를 너비를 보고 높이를 결정하는 방법을 새롭게 알게 되었습니다. 코드를 보시면 LinearLayout 부분 설정에서 app:layout_constraintDimensionRatio="H,3:1" H, 3:1의 값을 넣음으로써 W(너비)를 보고 높이를 3:1 비율로 결정하였습니다. override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permi..
[패스트캠퍼스 챌린지 3일차] Android 권한 부여하기
오늘 구현해본 기능은 앱에 권한을 부여하는 작업이었습니다. 예를들어서 우리가 평소 카메라 앱을 다운받아서 실행해보면 사진첩에 접근 권한 수락하냐는 다이얼로그가 나오고 수락을 눌러 권한을 부여하는 그 작업입니다. 현재까지는 사진 추가하기 버튼을 누르면 권한을 받아오는 작업까지 했습니다. addPhotoBtn.setOnClickListener { when{ ContextCompat.checkSelfPermission( this, android.Manifest.permission.READ_EXTERNAL_STORAGE ) == PackageManager.PERMISSION_GRANTED -> { //todo 권한이 잘 부여되었을 때 갤러리에서 사진을 선택하는 기능 } shouldShowRequestPermis..
[백준] 11559 c++ Puyo Puyo
https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net [문제] 뿌요뿌요의 룰은 다음과 같다.필드에 여러 가지 색깔의 뿌요를 놓는다. 뿌요는 중력의 영향을 받아 아래에 바닥이나 다른 뿌요가 나올 때까지 아래로 떨어진다. 뿌요를 놓고 난 후, 같은 색 뿌요가 4개 이상 상하좌우로 연결되어 있으면 연결된 같은 색 뿌요들이 한꺼번에 없어진다. 이때 1연쇄가 시작된다. 뿌요들이 없어지고 나서 위에 다른 뿌요들이 있다면, 역시 중력의 ..
[패스트캠퍼스 챌린지 2일차] Android 계산기
오늘은 history 버튼을 눌러서 scroll view 형식으로 계산 기록들이 나오는 뷰를 만들고 Room을 이용해서 DB를 사용하였습니다. 계산 결과들을 DB에 저장하고 history view 부분에 보여주고 계산 기록 삭제 버튼을 통해서 view를 초기화 시켜주는 기능까지 완성하였습니다. 오늘 배운 것: Room을 사용하기 위해서 build.gradle (Module) 부분을 수정해주었습니다. dependencies { implementation("androidx.room:room-runtime:2.3.0") kapt("androidx.room:room-compiler:2.3.0") } plugins { id 'kotlin-kapt' } @Database(entities = [History::cla..