Tech & Programming 46

안드로이드 가로/세로모드 고정하는 방법

최근 회사에서 Tablet 해상도에 가로모드를 지원을 위해서 개발을 진행했었습니다. 가로/세로 모드를 적용하다보면 여러가지 기초 지식들이 햇갈릴 때가 많은데요. 그래서, 저도 다시 공부하고 여러분께도 도움이 되고자 화면전환과 구성변경 관련되서 연재 포스팅 합니다. 아마 이번 포스팅 포함해서 2~3번 정도면 모두 정리 될 것 같네요. 먼저, 오늘은 가로 또는 세로 방향으로만 고정하는 방법에 대해 말씀드릴께요. 1. 가로 또는 세로 방향으로 고정하는 방법 먼저, 안드로이드에서 방향을 고정하기 위한 방법은 두가지가 있습니다. 첫번째는 AndroidManifast.xml 의 을 이용해 가로 또는 세로로 고정시키는 방법입니다. 그리고, screenOrientation 에서 사용할 수 있는 value는 아래 안드로..

구성변경(Configuration)에 따른 엑티비티 재시작

이전 글 : 2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법 2. 구성변경(Configuration)에 따른 엑티비티 재시작 이 전 포스팅(2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법) 에서 언급한 것처럼 화면방향, 휴대폰 Locale 등이 변경되어 Activity 를 재시작하면 하나의 인스턴스를 가지고 재사용 하는 것이 아니라, 기존 인스턴스는 onDestroy()까지 실행하고 새 인스턴스가 onCreate() 부터 새로 시작됩니다. 1) 구성 한정자란? 구성(Configuration) 은 Actvity를 비롯한 컴포넌트에서 어떤 리소스를 사용할 ..

[안드로이드] Migrating to the New Places SDK Client (구 버전은 2019.7.29 종료)

회사에서 서비스하는 어플에 Place Autocomplete, Current Place 등을 사용하고 있습니다. 이런 기능들을 제공하던 place-services-places Places SDK 가 2019년 7월 29일 서비스가 종료되었습니다. 그래서, 최근 회사에 새롭게 바뀐 Places SDK 로 교체했습니다. 혹시 아직 교체 안하신 분이 있을까 해서 포스팅합니다. 1. 요약 Google Play Services 버전의 Places SDK(com.google.android.gms:play-services-places)가 2019년 1월 29일부터 deprecated 되고, 2019년 7월 29일부터 서비스가 종료됩니다. 따라서, 새로운 버전의 Places SDK 버전으로 교체해야합니다. 2. 사전 ..

[자료구조] Hash(해시), Hash Table(해시 테이블)

1. 해시 함수(Hash Funtion) 데이터의 효율적인 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 이 때 매핑전 원래 데이터의 값을 키(Key), 매핑 후 데이터의 값을 해시값(Hash value) 또는 해시코드, 매핑하는 과정 자체를 해싱(hashing) 이라고 합니다. 해시 함수의 가장 기본적인 성질은 두 해시 값이 다르면 원래의 데이터의 값도 다르다는 것입니다. 하지만, 같은 해시값을 가지고 있더라도 원래의 데이터가 꼭 같은 것은 아닙니다. 해시함수의 종류 : MD1, MD4, MD5, SHS, SHA-1, HAS-160 등 2. 해시테이블 (Hash Table) 해시테이블(Hash) 테이블은 효율적인 탐색을 위한 자료구조로 키(Key) 를 값(Value..

View의 내용을 어떻게 이미지 파일로 만들었나요?

2018/12/30 - [Toy Project] - 2019년 신년 메시지는 '기분 좋은 인사' 로 보내세요. 2019년 신년 메시지는 '기분 좋은 인사' 로 보내세요. '기분 좋은 인사 : 2019년, 새해 인사말 및 안부, 감사, 경조사 등 인사말' 확인 - https://play.google.com/store/apps/details?id=com.toyproject.greeting 2019년 새해, 지인들에게 '기분 좋은 인사'로 새해인.. developside.tistory.com 지난 번 면접시에 사이드프로젝트로 진행한 '기분 좋은 인사' 의 기능을 설명하면서, 이미지와 사용자가 입력한 메시지 텍스트를 어떻게 이미지 파일로 만들어 보내냐는 질문을 받았었습니다. 코드를 작성한 지 오래되서 알음알음 ..

ViewHolder 가 무엇인가요?

최근에 제가 안드로이드 면접을 봤었습니다. RecyclerView 이야기가 나와서 설명하다가 ViewHolder에 대해서 설명해 보라는 면접 질문을 받았었는데, 막상 아는 내용이지만 설명하려고 하니 어렵더군요. 그래서 ViewHolder와 이를 사용하는 ListView와 RecyclerView에 대해서 간략하게 정리를 해 보았습니다. 1. ViewHolder란? 한마디로 설명하면 각 뷰를 보관하는 Holder 객체로 이야기 할 수 있습니다. "ListView / RecyclerView 는 inflate를 최소화 하기 위해서 뷰를 재활용 하는데, 이 때 각 뷰의 내용을 업데이트 하기 위해 findViewById 를 매번 호출 해야합니다. 이로 인해 성능저하가 일어남에 따라 ItemView의 각 요소를 바로..

IntelliJ(인텔리J) 단축키

안드로이드 스튜디오 및 자바를 쓰다보면 IntelliJ 를 쓸 때가 많습니다. 이 때 단축키를 몰라서 마우스 사용이 잦은 편입니다.이러다 보니 효율이 많이 떨어지는 것 같아서 단축키를 공부하고 있습니다.자주 사용 할 만한 것들을 추려보았는데, 여러분에게도 도움이 되셨으면 좋겠습니다.혹, 여러분이 자주 사용하는 단축키가 빠져있다면 댓글로도 달아주세요. 이동Ctrl + N : 클래스 이름으로 클래스 이동하기Ctrl + Shift + N : 파일 이름으로 파일 이동하기Alt + 좌우 방향키 : 열려있는 탭이동F12 : 이전의 도구 창으로 이동하기Esc : 에디터 창으로 이동하기Shift + Esc : 이전의 도구창 숨기기 Ctrl + G : Goto 라인Alt + 위 아래 방향키 : 메소드 단위로 이동하기F2..

안드로이드 http 프로토콜 접속 시 예외발생 조치 (ERR CLEARTEXT NOT PERMITTED)

어제 앱을 개발 중 glide v4를 사용하여 웹에 있는 그림을 load 하였는데, 아래와 같은 예외를 주며 동작을 하지 않았습니다. com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTEThere was 1 cause:java.io.IOException(Cleartext HTTP traffic to ~~~~ not permitted) call GlideException#logRootCauses(String) for more detail 처음에는 glide 4로 버전업을 하면서 뭔가 바뀐 것이 있나 싶어서 glide 문서를 뒤지고, 관련 코드들을 보았는데 특별한 것이 없었습니다..

[Algorithm] 빅오분석법

빅 오분석(표현)법은 알고리즘의 성능이나 복잡도를 설명하는데 일반적으로 사용하는 표현 방법입니다. 빅 오 분석법에서는 입력 겂의 크개(개수)를 n개라고 가정하고, 이 n개의 입력된 값을 몇번이나 확인해봐야하는 지를 n의 식으로 표현한 것입니다. 즉, 동작하기 위해 필요한 연산횟수를 나타낸다고 생각하면 됩니다.그리고, n이 무한대로 올라가면 n이나 n+2 나 크게 차이가 나지 않기 때문에 2와 같은 상수항은 그냥 무시해도 무방합니다. 빅 오 분석법을 적용하는 방법1, 입력값이 무엇인지 확인 하고 어떤 것을 n으로 놓아야 할지 결정한다.2. 알고리즘에서 수행해야할 연산 횟수를 n의 식으로 표현한다.3. 차수가 제일 높은 항만 남긴다.4. 모든 상수 인수를 없앤다. 어떤 알고리즘이 가장 빠른가?가장 빠른 것은..

템플릿 메소드 패턴(template method pattern) 이란?

이번에는 템플릿 메소드 패턴(template method pattern)에 대해서 알아보도록 하겠습니다.이전글들과 마찬가지로 Head First Design Pattern 책을 참고했습니다. 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다.알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정단계를 재정의 할 수 있습니다. 즉, 템플릿 메소트 패턴은 알고리즘 틀을 만들기 위한 것입니다.아래 예제 소스코드는 커피, 차를 만드는 과정을 프로그램 한 것입니다. 커피, 차를 만드는 일련의 과정을 메소드로 정의합니다.그리고, 이 메소드 중 하나 이상이 추상메소드로 정의되며, 그 추상 메소드는 서브클래스에서..