프로그래밍 312

안드로이드 앱 성능을 최적화 하는 방법 - (1) Render

다음은 Udacity의 Android Performance 강의를 듣고 정리한 내용이다.안드로이드 앱 성능은 가장 중요하다! 유저들은 앱이 느리거나 1초라도 버벅되면 당장 앱을 삭제할 수도 있다.그건 그 사람들의 인내심이 없기 때문이아니라 앱을 애초에 잘못만든 탓이다.나는 내 앱의 성능을 최적화하고 유저들에게 원활한 사용 경험을 제공하기 위해 강의를 수강했다. 첫번째 섹션은 Render 부분이다.안드로이드 기기의 CPU는 그려야 할 것들을 GPU로 보내GPU에게 이러 이러한 것들을 그리라고 명령한다.GPU는 drawable에 있는 파일들을 래스터화 시켜 그림을 그린다. Overdraw이럴때 발생할 수 있는 성능 낭비는 Overdraw가 있다.글자 그대로, 과잉으로 그림을 그린 것이다.태극기의 태극 문양을..

안드로이드 Fragment에 정보 전달하기

개발 중 나는 Fragment에 간단한 정보를 전달할 일이 있어 Fragment를 생성할 때 constructor를 추가하여 넣었던 적이있다. 그런데 빌드시 오류가 났다. non-default 생성자는 Fragment에서 허용되지 않는 듯 보였다. 예를 들어 사용자의 정보인 아이디를 보여주는 Fragment가 있다고 하자. 그렇다면 userId라는 String 타입 값을 Fragment에 넘겨줄 방법이 필요하다. 이때 Bundle을 이용하면 마치 Activity간 Intent처럼 넘겨줄 수 있다. Fragment fragment = new UserFragment(); // Fragment 생성Bundle bundle = new Bundle(1); // 파라미터는 전달할 데이터 개수bundle.putStr..

프로그래밍/Android 2016.07.28 (1)

HTTP 개관

HTTP (hypertext transfer protocol)는 전 세계의 웹 브라우저 및 서버, 웹 애플리케이션들이상호작용 할 수 있도록 해주는 통로다. 주소창에 http://라고 쓰는 것은 http 프로토콜을 사용하겠다는 말이다. 웹 클라이언트와 서버웹 클라이언트는 서버에 HTTP 요청을 보내고서버는 요청된 데이터를 HTTP 응답으로 돌려준다.이 요청과 응답을 'Transaction' 이라 한다. 리소스와 MIME웹 서버는 웹 리소스 들도 있다.HTML파일, txt, jpeg, avi등 모든 종류의 파일들이다.이들을 클라이언트가 요청하면, 서버는 리소스에 따라객체 각각에 MIME(multipurpose internet mail extensions) 타입이라는 데이터 포맷 라벨을 붙인다. 예를 들어 j..

안드로이드 PHP GET 방식 통신에서 한글 깨짐(?) 해결

안드로이드와 PHP 연동시GET방식으로 한글을 넘겨 줄 때 일부 스마트폰에서 ??? 이렇게 물음표로 뜨는 경우가 있다.이때는 안드로이드에서 String을 보낼 때 해당 한글 부분을 utf-8 방식으로 인코딩 해주면된다. String url = "http://***.com/login/db_get_messages.php?receiver=" + URLEncoder.encode(userData.getUserData("uname"),"utf-8");

안드로이드 EditText를 이용해 리스트뷰 검색 기능 만들기

오늘은 EditText를 이용해 검색되는 리스트뷰를 만들어 보겠다.다음 GIF처럼 작동되는 것이고, 리스트뷰 아이템의 이름에 따라 검색이된다.나는 이번에 게임에나오는 포션들을 검색할 수 있는 것으로 예제를 만들어 보겠다. 준비물은 만들어진 ListView, ListView Item Layout, ListViewAdapter그리고 검색할 Activity다. ListView와 ListView Item Layout, 그리고 ListViewAdpater를 만드는 방법과동작하는 방식은 다른 강의에서 보시고! ㅎㅎ이 강의에서는 검색기능 구현에만 초점을 맞출 예정이다. 먼저 내 PotionListViewAdapter부터 보겠다.PotionListViewAdapter.java package com.lx5475.****..

프로그래밍/Android 2016.07.07 (9)

안드로이드 Custom Object Intent로 넘기기, Parcelable 구현

내가 만든 클래스 넘기기 (마인크래프트 앱 개발기 3편) 7월 업데이트를 위해 리팩토링을 하면서,데이터 타입에 대한 정리는 끝났으니 이제 전송에 관련된 일을 처리해야했다. 나는 ItemDB라고 하는 클래스를 만들어 아이템 정보를 관리하고 있다.그러나 특성상 ItemDB 자체를 인텐트로 넘겨야 더 좋은 성능을 낼 수 있는 상황이 왔다.intent.putExtra(key, value)로 보내어 value 값이 맞는 아이템을 500개 리스트에서 일일이 찾기 보다는그냥 ItemDB 하나만 심플하게 보내는 방법이 좋아보였다.그러나 putExtra()는 한정된 자료형만 전송할 수 있는 단점이 있기에, 어떻게 해결하면 좋을지 찾아보다가Parcelable 또는 Serializable 을 이용해 커스텀 오브젝트를 전송할..

안드로이드 아름다운 카드뷰(Card View) 리스트 만들기 - (3)

이번 강의에서는 Card View에 이미지를 적용 시키는 방법과, 개별 클릭 이벤트를 처리하는 방법에 대해 알아 볼 것이다.나는 이미지 URL을 이용해 이미지를 불러올 것이기 때문에 마음 편하게 라이브러리를 사용했다.이미지 관련 라이브러리 중 유명한 것은 Picasso와 Glide가 있는데, 둘 다 사용법은 비슷하고 성능도 좋다. 이미지 라이브러리인 Picasso를 사용하기 위해Gradle에 다음 코드를 한 줄 추가한다. build.gradle (Module : app)dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompa..

프로그래밍/Android 2016.06.17 (11)

객체 지향 프로그래밍, 자바

한 학기 동안 학교에서 Java강의를 들으면서 정리한 내용이다.간단히 자바에대해 파악하기 좋다. 00 Introduction 없음 01 Basic Concepts and a Sample 1. 언어의 분류- 기계어 (machine language)- 어셈블리어 (assembly language)- 절차적 언어 / 비절차적 언어 (procedural / nonprocedural language) 2. 자바의 특징- 1991년 SUN 마이크로 시스템즈의 James Gosling에 의해 탄생- 플랫폼 독립적, 적은 메모리 사용- Write Once, Run Everywhere- 소형 기기, 인터넷의 발달과 함께 성장- JVM 상에서 동작- 객체 지향, 객체를 기본 단위로 디자인 3. 클래스- Java에서 객체를..

Merge Sort Algorithm (병합 정렬 알고리즘)

앞서 살펴본 Selection Sort(선택 정렬)와 Insertion Sort(삽입 정렬)은입력 리스트의 크기가 크면 클수록 더욱 비 효율적인 단점을 갖고 있다. 그래서 조금 더 나은 정렬법인 Merge Sort를 배워보도록 하겠다.Divide and Conquer Merge Sort에는 Divide and Conquer(나눠서 정복하기)라는 재귀에 기반한 알고리즘 양식이 적용된다.이것은 문제를 원래의 문제와 비슷한 형식으로 자그마하게 쪼개서작은 문제들을 재귀적으로 풀어내는 것이다. Divide(나누기) : 큰 문제를 같은 방식으로 풀 수 있는 작은 문제로 쪼갠다.Conquer(정복) : 작은 문제들을 재귀적으로 풀어낸다.Combine(합치기) : 작은 문제들에서 얻어낸 해결책을 원래의 큰 문제에 적용..