[안드로이드] 뒤로 가기 두 번 누르면 종료되게 만들기
·
안드로이드
뒤로가기를 누르면 발생시킬 동작들은 onBackPress 메서드에 있습니다. 따라서 먼저 이를 override 시켜주겠습니다. onCreate 메서드와 동일한 스코프에 정의해야함을 주의하세요. package com.example.listview_ex import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ... } override ..
[안드로이드] ListView 구현하기
·
안드로이드
ListView는 MainActivity에서 Adapter에게 정보를 전달하고, Apdater가 ListView에 요소들을 넣어주는 흐름을 가집니다. 먼저 간단히 ListView를 표시할 화면을 구성하겠습니다. 그리고 ListView에 들어갈 요소들의 레이아웃을 구성해주겠습니다. ListView에 들어갈 ListViewItem은 다음과 같이 화면에 보여질 예정입니다. ListViewItem에 들어갈 데이터 형식을 만들어주기 위해 data class인 ListViewItemModel.kt를 만들어 주겠습니다. package com.example.listview_ex data class ListViewItemModel ( var title : String = "", var description : Strin..
[안드로이드] DataBinding 으로 TextView 업데이트 하기
·
안드로이드
기존에 xml에서 특정 뷰에 대한 접근을 위해서는 다음과 같이 findViewById 함수를 사용했습니다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btn = findViewById(R.id.testBtnId) btn.setOnClickListener { Toast.makeText(this, "clicked", Toast.LENGTH_LONG).show() } } } 하지만 xml의 특정 View를 계속 findViewById로 가져오게 ..
[안드로이드] 다음 화면으로 넘어가기 & 다음 화면에게 데이터 넘겨주기
·
안드로이드
MainActivty에서 특정 ImageView를 클릭하면 다음 화면으로 넘어간다고 하겠습니다. XML은 다음과 같습니다. 우선 MainActivity에서 XML에 있는 ImageView의 아이디를 찾아 객체로 가져오겠습니다. package com.example.test import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.ImageView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(..
[안드로이드] 타이틀 바 없애기
·
안드로이드
res/values/themes/themes.xml 에서 style 안에 다음 코드를 넣어주면 된다.
[안드로이드] 처음 시작하는 화면 설정하기 & 일정 시간 delay 준 후 특정 코드 실행시키기
·
안드로이드
app/maifests/AndroidManifest.xml 을 살펴보면 딱봐도 처음에 시작할 것 같은 화면이 다음과 같이 작성되어있습니다. 생각보다 쉽게 찾아버렸습니다. 처음 시작하는 화면은 intent-filter와 exported가 true 라는 점 빼고는 다른 activity와 차이점이 없습니다. 일정 시간 delay를 준 후 특정 코드를 실행시키기 위해서는 Handler의 postDelayed가 필요합니다. 예를 들어 3초 뒤에 다른 화면으로 이동시키는 코드를 작성해보겠습니다. Handler(Looper.getMainLooper()).postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() }, 3000) Handle..
[안드로이드] Android Studio와 스마트폰 무선 연결
·
안드로이드
저는 22년 5월 현재 안드로이드 S8을 사용하고 있습니다. 따라서 무선 디버깅 + adb를 통해 스마트폰과 무선 연결 하는 방법을 찾으셨다면 이 글에는 없음을 밝힙니다. 또한 윈도우를 사용중입니다. 맥 유저분들도 다음에 뵙겠습니다. 안드로이드 특정 버전에서는 개발자 옵션에서의 무선 디버깅이 없습니다. 그럼 맨날 안드로이드 개발할 때마다 선으로 연결하면서 개발을 해야하는건가? 라고 생각했는데, 다행히 방법을 찾았습니다. 아쉽게도 선이 아예 필요가 없는 것은 아닙니다. 우선 스마트폰과 컴퓨터를 연결할 선, 스마트폰, 컴퓨터를 준비해주세요. 스마트폰과 컴퓨터를 연결한 후, 터미널을 엽니다. 우선 스마트폰과 노트북의 연결을 위해 다음을 체크해주셔야합니다. 1. 노트북과 스마트폰이 같은 네트워크에 있는가?(같은..
1주차 확률과 통계 내용 정리
·
CS
1주차 확률과 통계 내용 정리 목차 Introduction to Probablity Set Theory (operations & relations) The definition of probability Introduction to Probablity 목차 Experiment Sample Space Event Experiment Experiment는 가능한 식별 가능한 모든 결과를 말한다. 모든 경우의 수를 다 세는 것을 설명하신듯. Sample Space $S$ 로 표기한다. 한 experiment에 대해 가능한 모든 결과들의 집합을 말한다. 주사위를 한 번 던질 때의 Sample Space는 다음과 같이 나타낸다. $$ S = {1, 2, 3, 4, 5, 6} $$ Event $E$ 로 표기한다. 조건..
[컴퓨터 비전] 이미지 변환(1)
·
컴퓨터 비전
아무래도 이미지를 다루니까 이미지에 대해 설명하지 않을 수 없다. 이미지는 픽셀들의 집합이고, 각 픽셀들은 색을 가지고 있다. 모든 색은 빨강, 초록, 파랑의 적절한 조화로 만들 수 있음을 알고있는가? 몰랐다면 알아두자. 모든 색은 빨강, 초록, 파랑을 적절히 섞어 만들 수 있다. 따라서 하나의 픽셀은 빨강, 초록, 파랑 3개로 나누어서 볼 수 있다. 이렇게 나누면 각각의 색깔은 하나의 숫자로 표현이 된다. 이 숫자는 0~255사이의 숫자로 255에 가까울수록 밝아지고, 0에 가까울수록 어두워진다. 즉, 각각의 숫자 자체는 밝기를 나타낸다. 앞으로 사용할 이미지들은 데이터 타입이 numpy.uint8 이다. 따라서 값이 uint8 범위를 넘어가버리면 오버플로우가 일어나서 이미지가 비정상적으로 변할 수 있..
펜윅 트리(Fenwick Tree, BIT)
·
알고리즘
[펜윅 트리] 펜윅 트리(Fenwick Tree) 혹은 이진 인덱스 트리(BIT, Binary Indexed Tree)라고도 불린다. 펜윅 트리는 구간 트리에서 부분합에 대한 질의를 더 효율적으로 하기 위해 만들어졌다. 부분합을 통해 구간합을 구할 수도 있으므로 구간합에 대한 질의도 답할 수 있다. 단순히 부분합만 구한다고 하면 당연히 트리구조를 사용할 이유가 없지만, 원소를 변경할 때는 트리구조의 장점이 들어난다. 배열로만 부분합을 구현했다면, 배열의 원소가 바뀔때마다 O(N)의 연산을 해줘야한다. 하지만 펜윅트리는 이를 O(logN)만큼만 걸리게 함으로써 속도를 올린다. 펜윅 트리는 기존 구간트리에서 각 노드에 대해 right에 해당하는 자식 노드들을 죄다 지운 형태다. 이유는 부분합 자체가 배열의 ..