안드로이드 LayoutInflater 사용하기

안드로이드 LayoutInflater 사용하기

안드로이드에서 레이아웃 XML파일을 View객체로 만들기 위해서는 LayoutInflater를 이용한다. LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.my_layout, parent, false); 이렇게 간단하게 사용 할 수 있다. LayoutInflater 생성하기 1. Context#getSystemService() LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.my_layout, parent, false); 2. Activity#getLayoutInflater() LayoutInflater inflater = getLayoutInflater(); 액티비티에서는 LayoutInflater를 쉽게 얻어올수 있도록 getLayoutInflater() 메소드를 제공한다. 엑티비티의 윈도우에 있는 getLayoutInflater()로 포워딩 해준다. // android/app/Activity.java public LayoutInflater getLayoutInflater() { return getWindow().getLayoutInflater(); } 3. LayoutInflater.from() LayoutInflater inflater = LayoutInflater.from(context) View view = inflater.inflate(R.layout.my_layout, parent, false); LayoutInflater에서는 LayoutInflater를 쉽게 생성 할 수 있도록 static factory 메소드 LayoutInflater.from()을 제공한다. (내부적으로 getSystemService를 호출함) ...

February 21, 2016 · Juyeong Lee

루비 가중치 랜덤

Ruby Weighted Random 랜덤 배열을 무작위로 섞는 방법은 루비 기본 API에서 제공한다 [a, b, c].shuffle # => [c, a, b] [a, b, c].sample # => b shuffle을 통해 섞거나, sample을 통해 추출 할 수 있다. 가중치 랜덤 이때 각 값의 가중치(weight)를 다르게 적용하려면? 쓸만한 gem이 없어서 만들어 보았다.1 (github.com/juyeong/wrandom) ex) a.weight => 1, b.weight => 99 [a, b].wsample { |item| item.weight } #=> b [a, b].wshuffle { |item| item.weight } #=> [b, a] 99%의 확률로 99가 추출된다. Algorithm Weighted random sampling with a reservoir 논문에 나오는 알고리즘 ...

February 20, 2016 · Juyeong Lee

[Git] Merge된 Branch들 삭제하기

1. merge된 branch 1개를 지우기 git branch -D my_branch 2. merge된 모든 branch들을 지우기 브랜치 모두 지우기 git branch --merged | grep -v "\*" | grep -v master | grep -v develop | xargs -n 1 git branch -d master와 develop은 삭제 목록에서 제외하는 예제이고, 추가적으로 제외할 branch를 명시해 줄 수 있다. 참고자료

February 18, 2016 · Juyeong Lee

루비 조합 (Combination)

조합(combination)이란 n개의 원소를 가지는 집합에서 k개의 부분집합을 고르는 조합의 경우의 수를 이항계수라 하며, nCk나, C(n, k) 로 나타낸다. 기호 C는 콤비네이션이라고 읽기도 한다. 참고 루비에서 조합을 구하는 방법 def combination(n, k) ((n-k+1)..n).inject(:*) / (1..k).inject(:*) end combination(4, 3) # => 3 combination(6, 2) # => 15 경우의 수가 아닌 실제 값을 구하는 방법은 더 쉽다. 루비에서 기본적으로 제공하는 방법을 이용하면 된다. [1,2,3].combination(2).to_a # => [[1, 2], [1, 3], [2, 3]] [1,2,3,4].combination(3).to_a # => [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]] 루비에서 순열(permutation)을 구하는 방법 def permutation(n, k) ((n-k+1)..n).inject(:*) end permutation(4, 3) # => 24 (4*3*2) permutation(6, 2) # => 30 (6*5) [1,2,3].permutation(2).to_a # => [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]] (추가) 루비에서 제공하는 combination을 이용한 방법 [1,2,3,4,5].combination(3).size # => 10 더 쉽다….

February 13, 2016 · Juyeong Lee

지니모션에서 로컬호스트 서버 접근하기

Accessing a localhost server from the Genymotion Android emulator 안드로이드 에뮬레이터인 제니모션(Genymotion)을 사용하다가 로컬에서 돌리 서버에 접속할 일이 생겼다. 제니모션은 버츄얼박스를 이용해서 에뮬레이터를 사용하기때문에 제니모션에서의 localhost와 컴퓨터의 localhost가 다르다. ifconfig vboxnet0 또는 ipconfig vboxnet0 를 이용하여 호스트의 주소를 알아내서 사용하면 된다 일반적으로는 192.168.56.1 일 것이다. 그래도 동작하지 않는다면 10.0.3.2를 사용하면 동작한다고…. (제니모션 와이파이 DHCP주소가 10.0.3.2로 나옵니다.) 요약 제니모션에서 로컬호스트 서버에 접근하려면 ip주소를 localhost, 127.0.0.1대신 192.168.56.1 또는 10.0.3.2로 시도해보면 된다! 참고자료 - http://bbowden.tumblr.com/post/58650831283 홈페이지 - https://www.genymotion.com/ 제니모션.? 지니모션.? 유튜브에선 제니모션이라고 하던데.. 한국어 블로그는 지니모션 뿐이다..

February 4, 2016 · Juyeong Lee
안드로이드 시간 측정

안드로이드 시간 측정

성능 측정 long startTime = getCurrentTime(); // do something long endTime = getCurrentTime(); Log.d(DEBUG, "elapsedTime : " + (endTime - startTime)); 일반적으로 성능을 측정할때는 어떤 기능을 수행하는데 걸리는 시간을 측정합니다. 안드로이드에서도 역시 어떤일을 하는데 시간이 얼마나 소요되었는지를 측정해야 할 때가 있습니다 예를 들면 이 코드는 어떤 기능을 수행하는데 소요된 시간을 보여줍니다. Java Java에서는 시스템의 시간을 가져오는데 기본적으로 System.currentTimeMillis(), System.nanoTime()을 제공합니다. System.currentTimeMillis() System.currentTimeMillis()은 1970/1/1 00:00:00 UTC을 기준으로 현재 시간을 리턴합니다. 시스템의 TimeZone에 관계없이 항상 UTC 시간을 리턴하기 때문에 보통 “Unix time”, “epoch time"이라고 부릅니다. System.currentTimeMillis()는 시스템의 시간을 가져오지만, 시스템의 시간은 언제든지 변경될수 있기 때문에 시간 측정에는 적합하지 않습니다. (ACTION_TIME_TICK, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED과 같은 브로드캐스트에 의해 시간이 변경되는걸 알 수 있습니다.) ...

February 4, 2016 · Juyeong Lee