본문 바로가기
반응형

전체 글388

Activity 화면이 꺼지지 않도록 하려면? 앱을 만들다 보면, 유저의 입력을 받지 않아도 계속 화면이 켜져 있도록 해야 하는 경우가 있는데요.이 경우에는 어떻게 해야할가요?XML에서 설정해주는 방법과, Java코드에서 하는 방법이 있는데요.하나하나 알아보겠습니다. 1. XML에서 설정하는 방법 아래와 같이, android:keepScreenOn="true" 을 해주는 것 만으로, Activity실행이후에 유저가 화면을 끄지 않는 한은 Sleep 모드로 들어가지 않습니다. 2. Java Code에서 설정하는 방법 JavaCode에서 설정하는 방법도 한 줄이면 되는데요.>> getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);이 코드를 추가해주기만 하면됩니다. 참고로, Cpu가 .. 2017. 4. 21.
clipChildren 으로 ViewGroup의 범위를 벗어나는 안드로이드 UI 안드로이드 앱을 만들면서, UI작업을 하다보면 ViewGroup의 범위를 벗어나도록 표현해야 할 경우가 생깁니다.무작정 마이너스 마진을 넣는다고 되지는 않구요. ViewGroup의 clipChildren 옵션을 사용해야 하는데요. 오늘은 이 clipChildren옵션을 사용해서 VIewGroup범위를 벗어나는 UI를 그리는 방법에 대해서,실제로 코드를 작성해보면서 정리해 보겠습니다. 1. ViewGroup에 ClipChildren 적용하기 ViewGroup중 하나인 RelativeLayout에 ClipChildren을 먼저 적용해 보겠습니다.이 옵션은 ViewGroup의 Child가 부모의 범위안에서 그려지도록 제한할지를 정하는 옵션입니다.false를 주지 않으면 기본값인 true로 되어서, 아무리 마이.. 2017. 4. 17.
안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 오늘은 멀티Thread와 관련된 Runnable과 Looper 그리고 Handler에 대해서 정리해 보겠습니다. 1. 멀티 Thread Java의 JVM에서는, 하나의 Process에서, Thread 라고 하는 코드를 실행시키는 객체를 여러개 가질 수 있도록 허용하고 있습니다.이를 활용하여, 복잡한 계산이라든가, 네트워크 등의 실행을 다른 쓰레드에서 효율적으로 실행할 수 있도록 하고 있는데요.멀티 Thread를 실행하는데 관련된 요소들을 정리해 보도록 하겠습니다. 1-1. Process 와 Thread 먼저 쓰레드가 속해있는 Process에 대해서 정리해 보겠습니다. Process는 실행중인 프로그램의 객체를 의미하는데요.이를 Android를 기준으로 생각해보겟습니다. Android에서 앱을 실행할때, .. 2017. 4. 9.
Math 클래스 의 반올림, 올림, 버림 등 자주 사용하는 메소드 정리 #Java Java 프로그래밍을 하다보면, 반올림이나 올림 혹은 내림등을 해야하는 경우들이 있습니다. 이럴 때는, Math클래스의 메소드인 round나 ceil, floor 등을 사용하면 되는데요. 오늘은 이 Math클래스의 자주 사용하는 메소드들에 대해서 정리해 보겠습니다. 1. 반올림 먼저, 반올림에 대해서 알아보겠습니다. 사용하는 메소드는 round()이구요. 여기서는 0.5324라는 값을 주었는데요. 반올림하면 아래와 같이 1을 반환해줍니다. 2. 내림 이번에는 무조건 값을 버리는 내림을 해볼텐데요.사용하는 메소드는 floor() 입니다.아래와 같이 소수점 아래값을 모두 버리고, 0,0을 반환해 줍니다. 2017. 4. 9.
git-quick-stats 로 보는 다양한 Git 통계 오늘 작업한 코드량이나, 특정 개발자가 작업하여 Git에 커밋한 코드 수는 어떻게 확인할 수 있을까요? 통계를 확인하는 git 명령어들을 터미널에서 입력해줄 수도 있겠지만,좀 더 쉽게 통계를 볼수 있도록 해주는 툴이 있어서 소개해 드리겠습니다~ 이름은 git quick-stats인데요.이름에서도 알 수 있듯이, 빠르게 stat을 볼 수 있도록 해줍니다.그럼, 설치방법과 간단한 사용법들을 간단하게 정리해 보겠습니다. 1. 설치 방법 맥에서는 brew를 이용하면 너무나 쉽습니다.(항상 brew update 하시는 것 아시지요?) 아래와 같이 터미널에 입력하면, 알아서 설치를 마쳐줍니다.>> brew install git-quick-stats Window나 Linux에서의 좀 더 자세한 설치방법은, 아래링크의.. 2017. 4. 5.
BindService 의 생성과 Activity 에서의 Bind 안드로이드 앱을 만들다보면, 백그라운드에서 동작하고 있는 Service와 Activity간에 인터랙션이 필요한 경우가 있습니다. 단순히 Service를 stop하고 start하며, intent로 데이터를 전달하는 것 뿐만이 아니라, 사용자의 터치등에 반응하여, Service의 메소드를 실행하고 결과를 Activity의 UI에 반영해주어야 하는 경우인데요. 오늘은 이를 가능하게 해주는 BindService를 생성하고, Activity에서 Bind하는 방법에 대해서 정리해보겠습니다. 1. Bind 서비스 생성 Bind 서비스를 생성하기 위해서, BinderClass를 상속받아서 사용할 수도 있구요. Messenger를 이용하는 방법도 있는데요. 같은 App이고, 같은 Process에 속해있는 Service와.. 2017. 4. 4.
Google Map 에서 내 위치 지도에 표시하기 이번 글은 Android에서 Google Map API 이용해 지도 화면 만들기에 대해 다루었던 예전 글에서 이어지는 내용입니다.Android Studio를 이용해서, 구글맵 화면을 만드는 것에 대해서는 아래 링크에서 먼저, 제 글을 읽어주세요.>>> Google Map API 이용해 지도 화면 만들기 Android 에서 동적 권한 얻기 2017. 4. 3.
SourceTree 에서 수정하는 gitignore SourceTree를 이용하면 형상관리를 쉽게 할 수 있어서 좋은데요. 하지만, 가끔 관리하지 않아도 될 파일들이 추가되는 경우가 있습니다. 특히, Android Studio를 사용하다 보면, Studio와 관련된 파일들이 많이 생성되는데, 이 파일들이 다 Commit대상으로 올라오게 되는데요. 이 파일들의 설정은 개인들마다 달라지는 부분으로, Commit하면 않되는 파일들이지요. 이럴 경우를 대비해서, Commit하면 않되는 파일들은 .gitIgnore파일에서 설정할 수 있도록 되어있는데요. 오늘은 SourceTree에서 이 gitIgnore파일을 수정하는, 두가지 방법에 대해서 정리해 보겠습니다. 1. GitIgnore파일 수정 먼저 정리해 볼 방법은, gitignore파일을 직접 수정하는 것인데요... 2017. 4. 3.
SparseArray 가 무엇인가요? HashMap의 키값으로 Integer를 사용하면, Android스튜디오가 퍼포먼스 향상을 위해서 SparseArray를 사용하라고 하는 것을 본적이 있으신가요?저도 종종 보게되는데요. 오늘은 이 SparseArray에 대해서 간단히 정리해보도록 하겠습니다. 1. SparseArray SparseArray는 integer값을 Objects에 매핑을 해주는 것인데요.특이한 점은, 각 인덱스 사이에 공간을 만들수 있다는 것입니다.(예를 들면, 1~10번에 아이템들이 있고, 그다음에 11~20번은 비우고, 30~40번에 아이템들을 넣을 수 있다는 것이죠.) 성능향상을 위해서 SparseArray는 데이터가 지워지면, deleted로 표시하고 그 공간을 비워놓습니다.(물론, 지워진 데이터의 키값을 주고 데이터를.. 2017. 3. 29.
Android 에서 wake lock 으로 휴대폰을 깨우자. 알람앱 같이 안드로이드 폰이 잠들어 잠들어 있다가, 일정시간이 되면 앱의 화면이 켜져야 한다면 어떻게 해야할까요?이 때 사용할 수 있는, 안드로이드 시스템에서 제공해주는 기능으로 wake lock 이라는 것이 있는데요.오늘은 이것에 관해서 정리해보겠습니다. 1. Permission 선언 제일 먼저 해야할 것은 permission을 선언하는 것입니다.너무도 다행스러운 것은 동적 permission의 대상은 아니라는 것이네요.아래와 같이 manifest에 선언해주면 됩니다. 2. Cpu 깨어있도록 하기 사용자의 휴대폰이 Sleep모드로 들어가도, 폰의 CPU가 깨어있다면 일정한 시간에 계산을 해서,화면을 켜고 소리를 플레이 하는 등의 과업을 수행할 수 있습니다. 이것은 어떻게 하는 것일까요?Cpu가 깨어있도.. 2017. 3. 23.
Matcher 클래스와 Pattern Class로 정규 표현식을 활용해보자 지난 글에서 정규 표현식(Regular Expression)에 대해서 정리해 보았었는데요.오늘은 Matcher클래스와 Pattern 클래스를 이용해서,정규 표현식을 활용해보는 것에 대해서 정리해 보도록 하겠습니다. 참고로, 정규표현식에 관해서는 아래글을 참조해주세요.>>> 정규 표현식 (Regular Expression) 과 응용 사례를 정리해 보자 2017. 3. 22.
안드로이드 Notification 구현하기 feat. Big View 모바일 앱에서 매우 중요한 스펙중하나가, 유저에게 정보를 알려줄 수 있는 Notification인데요.오늘은 이 기능에대해서 정리해보려고 합니다. 유저에게 정보를 알려줄 때에 사용하는 클래스는 NotificationBuilder 클래스인데요.하위호환성을 위해서, 구글에서 제공해주는 Support라이브러리의 NotificationCompat.Builder클래스를 사용해야합니다. 1. Noti버튼 XML 생성 먼저 아래와 같이, Notification을 생성하는 버튼을 XML파일에서 만들겠습니다. 2. Notification Builder 필수 메소드 구현 제일 먼저 구현해야하는 것은 NotificationCompat.Builder클래스입니다.필수로 구현해야하는 메소드는, 아래에서 구현한 것과 같은데요.아이.. 2017. 3. 21.
RxJava 의 FlatMap, From 그리고 filter 로 For문 에서 벗어나보자 RxJava의 장점중의 하나는 다양한 Operator의 제공인데요.오늘은 FlatMap과 From을 사용하여서,Observable이 흘려보내준 List아이템들을,for문을 돌리지 않고 filter를 하여,원하는 결과만을 얻을 수 있도록 하는 방법에 대해서 정리해보겠습니다. 혹시 RxAndroid 가 무엇인지에 대해서, 보고싶으시다면,아래의 글을 참조해 주세요~.>>> RxAndroid 이해하기 Part1 RxJava (RxAndroid)의 Map 과 FlatMap 메소드를 알아보자 RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자.) 하나의 Collections를 받아서, 각각의 아이템으로 흘려보내준다는 것을 알 수 있습니다. filter는 Operator의 단어만 봐도 아실것 같은데요... 2017. 3. 20.
Java 배열 및 ArrayList 를 Comparable과 Comparator 를 이용해 정렬하기 안드로이드 앱을 만들 때, 자료형으로 배열이나 arrayList를 사용하게 되는 경우가 많은데요. 작업을 하다보면, 자료를 넣은대로 꺼내서 사용하지 않는 경우도 생기고,유저에게 보여줄 때, 순서를 필터링해서 보여줘야 하는 경우도 생깁니다. 오늘은, 배열이나, ArrayList를 이용해서, 자료를 원하는 Data기준으로, 정렬하는 방법에 대해서 정리해 보도록 하겠습니다. 1. 간단한 배열의 오름차순 정렬 먼저 아래와 같은 간단한 형태의 배열을 생성합니다. 순서가 뒤죽박죽인데요.오름차순으로 숫자가 적은 순서대로 정렬해 보도록 하겠습니다. Array.sort() 메소드에 인자로 위에서 생성한 Array를 넣어주기만 하면 되는데요.이것을 정렬해서 리스트로 표현해보겠습니다. 참고로 RecyclerView로 리스트.. 2017. 3. 19.
Hot Observable 과 Cold Observable은 무엇인가요? 오늘은 RxAndroid의 Hot Observable과 Cold Observable에 대해서 정리해 보겠습니다.Hot하고 Cold하다는 것이, 어떤 면에서 차이가 있는지 알아보고,Cold Observable을 사용하는 Operator도 정리해보겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 3. 19.
Callable 과 Runnable 뭐가 다른가요? 이전 글에서 Thread에 대해 정리하면서,Runnable에 대해서도 정리하였었는데요. 오늘은 Callable과 Runnable을 비교해 보도록 하겠습니다. 참고로 이전에 Runnable을 정리한 글은, 아래링크를 참조해 주세요.>>> 안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 2017. 3. 18.
Bit 논리 연산과 시프트 연산 의 정리 오늘은 Bit의 논리 연산과 시프트 연산에 대해 정리해 보겠습니다.Bit논리연산을 알아보기전에,Bit가 무엇인지부터 알아보겠습니다. 1. Bit = Binary DigitBit는 Binary Digit의 약자입니다.컴퓨터에서 사용하는 가장 작은 단위 데이터 단위입니다. Binary가 2개를 의미히고,digit은 자리를 의미하지요.이 둘을 합치면 2개의 자리수라는 뜻이 됩니다. 실제로 여기서 말하는 것은,2개의 진수인 0과 1입니다. 2진수를 구하는 방법은 다른 글에서 정리를 하구요.(특히 음수를 표현하는 방법은 따로 정리할 필요가 있을 것 같네요.)오늘은 자바의 toBinaryString()메소드를 이용해, 10진수인 88의 Binary값(즉, 2진수)를 뽑아보겠습니다.(Kotlin에서도 동일한 함수명.. 2017. 3. 16.
Parcelable 을 사용해 데이터를 전달해 보자 안드로이드에서 Intent를 통해서 Activity로 data를 전달할 때, String이나 int같은 기본형이 아니고, 객체로 전달해야 할 때가 있습니다. 이때 Java에서 제공하는 Serializable을 implement하면 ,객체를 직렬화해주고, 다시 복원할 수 있게 해주구요. putExtra()에 인자로 넣어서 넘겨주기만 하면되니,구현해야할 메소드도 없어, 사용하기도 편리합니다. 참고로 아래링크에서 Serializable에 대해서 볼 수 있습니다.(Activity로 Object넘겨줄 때엔 Serializable) 그런데, 한가지 방법이 더 있습니다.바로 Parcelable이라는 interface를 사용하는 것입니다.구현하기는 좀더 복잡하기는 하지만,Java에서 재공해주는 Serializable보.. 2017. 3. 13.