목록방법 (25)
MyCloud
support.v7.widget.CardView 안드로이드 CardView 는 support.v7.widget 에 속한 라이브러리 입니다. 리스트 뷰를 보여줄 때 카드 레이아웃을 사용한 형태를 많이 구현했습니다. 하지만, 직접 그림자도 그려야 하고, 틀을 만들어야 하는 어려움이 존재했습니다. 이를 해결하기 위해 SDK 21버전부터 CardView가 추가되었습니다. CardView는 FrameLayout 클래스를 확장한 형태입니다. 둥근 모서리, 배경과 그림자가 추가된 FrameLayout 이라고 보시면 됩니다. 그리고 CardView를 사용하는 가장 중요한 이유, 깔끔하고 이뻐서 ! 일반적으로 CardView는 리스트 형태로 보여주기 때문에뷰에 대해 재사용이 가능한 RecyclerView와 함께 사용됩니..
ViewHolder 패턴의 등장 뷰 홀더(ViewHolder) 패턴은 리스트 뷰의 유연한 동작을 위해 나타나게 되었습니다. 예를 들어, 리스트가 1000개 있다고 생각해보겠습니다. 왼쪽과 같은 리스트 뷰는 TextView 3개로 구성되어 있습니다. TextView를 생성하기 위해 매번 findViewById()를 호출해야 할 것이고, 3000번 호출된다면, 이는 엄청난 성능 오버헤드를 불러오게 됩니다. 아마 스크롤 내릴 때마다 매우 느린 반응속도를 보일 것입니다. 이를 해결하기 위해 ViewHolder 패턴이 나타났습니다. ViewHolder 패턴의 원리는 각 View 객체를 ViewHolder 에 홀드 시키는 것입니다. 이러한 방법으로 리스트 뷰에서의 성능을 개선할 수 있습니다. ViewHolder 패..
임계구역이란? 임계구역이란, 공유 자원에 접근하는 코드의 일부를 말합니다.일반적으로 둘 이상의 프로세스는 공유 자원에 대해 동시에 접근할 수 없습니다.하나가 먼저 실행하고 난 뒤 끝나면 다음 프로세스가 들어가서 실행해야 합니다. do {entry sectioncritical sectionexit sectionremainder section} while (TRUE); 따라서 각 프로세스는 자신의 임계 구역에 들어가려면 들어가도 되는지 요청해야 합니다.이런 요청이 entry section 에서 이루어지게 됩니다.만약, 이미 들어가 있는 프로세스가 있다면 entry section 에서 기다리다가들어가도 된다는 신호가 오면 critical section 으로 들어갑니다.이렇게 잘 돌아가면 좋을텐데 임계구역에는 ..
얼마 전 안드로이드 스튜디오에 Git을 연동하는데 너무 많은 오류를 겪어 따로 정리해보려고 합니다. 오류 메세지와 해결 방법 첫번째 오류우선 첫번째 오류는 로그인 문제였습니다 !안드로이드 스튜디오 내에서 Settings - Version Control - GitHub 로 들어가면 다음과 같은 화면이 나타나게 됩니다.여기서 Login과 Password 정보를 입력한 뒤, Test 버튼을 통해 확인하실 수 있습니다. 그래도 안되신다면 Settings - Version Control - Git 으로 들어가올바른 경로로 수정하시고, Test 버튼을 통해 확인하시면 됩니다. 두번째 오류두번째 오류는 SSH Key 설정 문제 였습니다.Git을 전에 삭제했다가 다시 깔았던 경우나 Git Desktop을 함께 쓰는 경..
사실 지금까지는 수정된 코드를 GitHub 폴더에 복사한 다음,GitHub Desktop 툴을 이용해서 Commit - Push 하는 과정을 거쳤습니다. 하지만 너무 번거롭고 불편하다고 생각해서,안드로이드 스튜디오 내에 있는 기능을 통해 Git에 연동해보았습니다. 1.먼저 GitHub에서 새로운 Repository를 생성합니다.아래의 Initialize this repository with a README 를 선택하시면gitignore와 license 파일을 함께 생성할 수 있습니다. 2.그리고 만들었던 Repository의 우측 상단에 있는 Clipboard를 눌러 주소를 복사합니다.다음 원하는 폴더에서 Git bash를 열고 git clone address 명령어를 실행합니다. 3.이제 안드로이드 스..
gitignore 파일 GitHub는 코드를 관리해주는 형상관리 툴입니다.최근 자바 프로젝트 코드를 Git을 통해 관리하던 중에 흔한 문제가 발생햇어요. 바로 자바 프로젝트 폴더 내의 .metadata, settings, bin의 로컬 수정내역이 커밋에 반영된 것 입니다.저처럼 스터디 폴더 내에 여러 프로젝트를 넣어 이클립스와 연동하는 경우 자주 발생하게 됩니다.프로젝트 돌릴 때마다 로그가 기록될텐데 매번 커밋할 수는 없었기 때문에 (무려 131개)스택오버플로우에서 친절한 답변을 찾게 되었습니다. 바로 gitignore 파일을 활용하면 됩니다 !https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignoreGit에서 설정한 gitignor..
안드로이드의 SharedPreference 보통 안드로이드에서 데이터를 저장하는 방법으로 데이터베이스를 사용합니다.하지만 데이터베이스를 사용하지 않고도 데이터를 저장할 수 있는 방법이 있습니다.바로 SharedPreference를 사용하는 방법입니다 ! SharedPreference는 Map구조인 key-value 형태로 데이터를 저장합니다.이렇게 저장된 데이터는 어플리케이션이 삭제되기 전까지 내부에 파일형태로 보관됩니다. SharedPreference 사용하는 방법 SharedPreference를 사용하기 위해서는 먼저 클래스를 생성해야 합니다.SharedPreferences pref = getSharedPreferences("Game", Activity.MODE_PRIVATE);위의 생성과정에서 "G..
네트워크 상에서 호스트와 호스트 간에 정보(data)를 주고 받는 전달 방식에는 회선 교환 방식 (Circuit switching)과 패킷 교환 방식 (Packet switching)이 있습니다. Packet - switching 먼저 Packet switching은 데이터를 패킷(packet)이라는 단위로 쪼개서 전송하는 방식입니다.패킷은 다음 링크로 전송하기 전에 저장을 한 뒤 전달하는 store and forward 방식을 따릅니다.패킷의 헤더에는 출발지(source)와 목적지(destination) 정보가 있습니다. 라우팅 알고리즘을 이용하여 경로를 설정하고, 중간의 라우터들을 거쳐 최종 목적지에 도달하게 됩니다.이러한 과정에서 패킷은 다음 라우터로 이동하기 위해 큐에서 대기(queueing)하는..
언어에 따른 리소스 설정방법 글로벌 서비스를 운영하는 경우에 기기마다 언어가 다르기 때문에 이를 처리하는 것이 필요합니다.안드로이드에서는 기기의 언어설정 내용을 불러와 어플에 적용하는 방법을 제공합니다.아래와 같이 res/values 폴더에서 디렉토리명으로 구분하여 올바른 언어에 따른 문자를 자동으로 올려줍니다. 디렉토리명 설명 /res/values-ko/strings.xml 언어를 한글로 설정 /res/values-en/strings.xml 언어를 영어로 설정 /res/values-fr/strings.xml 언어를 불어로 설정 /res/values-ja/strings.xml 언어를 일본어로 설정 이와 같이 values-en 처럼 구분하는 것을 대체 리소스라고 부릅니다.언어에 따른 문자 설정 뿐만 아니라..
해상도에 따른 이미지 저장방법 안드로이드 기기 별로 지원하는 해상도가 다르기 때문에 이를 처리하는 것이 필요합니다.안드로이드에서는 화면의 해상도에 따라 서로 다른 이미지를 로딩할 수 있는 방법을 제공합니다.아래와 같이 res 폴더에서 디렉토리명으로 구분하여 올바른 이미지를 자동으로 올려줍니다. 디렉토리명 설명 /res/drawable-ldpi 저밀도 화면, 약 120 dpi /res/drawable-mdpi 중밀도 화면, 약 160 dpi /res/drawable-hdpi 고밀도 화면, 약 240 dpi /res/drawable-xdpi 초고밀도 화면, 약 320 dpi 이와 같이 drawable-ldpi 처럼 구분하는 것을 대체 리소스라고 부릅니다.해상도에 따른 이미지 저장 뿐만 아니라 언어에 따른 구..