목록분류 전체보기 (105)
우찬쓰 개발블로그
fab을 다루다보면 당황하게 되는 경우가 생기게 된다. 그 예중 대표적인것은 디자인은 fab 내부 이미지가 fab크기에 비해 크게 나왔지만 기본적으로 fab에서 크기변경을 지원하지 않는 경우다. 이게 기본 가이드 인데, 정말 그렇다면 fab의 내부 이미지 크기를 마음대로 조절할 수 없을까? 답은 있다. res 폴더 안에 values 폴더 안에 dimens(혹은 dimensions).xml안에 다음과 같이 정의한다. 58dp 40dp그리고 나서 fab의 xml 옵션에 다음을 추가한다. app:fabSize="normal" 이렇게 해결된다. 의외로 간단하지만, 방법을 찾기는 쉽지 않았다.
Coordinatorlayout에서 NestedScrollView 내에 listview를 넣어야 되는 요구사항이 가끔 있다. 이 경우에 listview가 빠르게 스크롤하면 끝까지 스크롤 되지 않고 중간에 걸리는 경우가 있는데, 이럴때엔 코드 한줄을 추가해 주자. vertical_recycler_view.isNestedScrollingEnabled = false 이걸로 해결되었다.
일반 자바와 상식적으로 다르게, foreach 문에서는 break를 다르게 구현해야 한다. 아마 대부분 이 글을 찾아왔다면, 아래와 같은 문제를 겪었을 것이다. 예시를 들어보자. '1', '2'와 '끝'을 찍고 싶어서 다음 메소드를 만들었다고 치자. fun testForeach() { val testList = arrayListOf(1,2,3,4,5) testList.forEach { if(it == 3) return println(it) } println("끝") } 슬프게도 이 메소드는 '1', '2'만 찍히고 '끝'은 찍히지 않는다. 왜냐하면 여기서 return 은 메소드를 리턴시키기 때문이다. 그렇다면 당신은 이것도 시험해 봤을 것이다. fun testForeach() { val testList ..
필자와 같은 경우는 거의 없겠지만, 스마트폰용 안드로이드앱을 키오스크에 설치해서 전시하고 싶다는 요청이 들어왔다. 아마 타블렛 앱을 개발해 본 사람은 알겠지만 타블렛 용 안드로이드앱으로 모두 레이아웃 작업을 해주어야한다 그 이유를 간단하게 예를들어 설명해 보겠다. 필자가 작업한 키오스크 터치스크린은 1080x1920 이다. 사용한 보드는 ODROID c2이다. 그리고 타블렛을 작업해본 안드로이드 개발자라면 알겠지만, 무조건 density가 mdpi로 os세팅이 잡힌다. 그리고 설정에서 변경이 불가하다. 이게 우리가 가장 골머리를 앓는 부분이다. 그래서 타블렛 용 앱으로 레이아웃 작업할때 dp값도 전부 다르게 늘려줘야한다. 하지만 언제까지나 만드는 앱마다 전시를 위한 타블렛용 레이아웃을 노가다해서 작업하는..
SNS와 관련된 기능을 구현할때 필요하게되는 key hash. 디버그용일 경우 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 릴리즈용일 경우 keytool -exportcert -alias androiddebugkey -keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
안드로이드 스튜디오의 단축키는 많지만, 필자도 실제로 사용하고 있는 단축키는 많지 않다. 필자가 실제로 사용하고 있는 단축키 위주로 정리해 보고자 한다. 1. option + command + 방향키 좌우 방향키 좌키일 경우 이전 작업하던곳(같은 파일내 이든, 다른 파일 이든)으로 돌아간다. 방향키 우키일 경우 돌아가기 전으로 다시 간다. 2. Fn + Shift + F6 이름(변수명, 클래스명 등)을 바꾼다. 참조하고 있는 모든 이름을 한번에 바꿔준다. 3. Fn + 방향키 위아래 현재 화면의 맨 아래 혹은 맨위로 커서의 위치를 변경한다. 4. command + d 현재 코드줄을 바로 아래줄에 복사하여 끼워넣는다. 6. command + BackKey 현재 줄을 전부 삭제한다. 8. command + ..
보통 프로젝트에서는 해당 프로젝트 내에 .git 폴더만 지우면 끝이지만(실제로 대부분의 검색에서 그렇게 나온다.) 안드로이드 스튜디오로 만든 프로젝트는 이렇게 하면 git과 관련된 내용이 완전히 지워지지 않아 Version Control에 오류가 생긴다. 그렇다면 간단히 안드로이드 프로젝트의 git을 지우는 방법을 알아보자. 1. 안드로이드 스튜디오 메뉴의 Preferences.. 로 들어가자. 2. 목록에 Version Control을 클릭한다. 3. VCS가 Git인 것을 클릭하고 Remove 한뒤 Apply 한다. 이렇게 하면 Git이 깨끗하게 프로젝트에서 사라진 것을 확인할 수 있다.
안드로이드에 블루투스 기능을 붙여야하는 개발자들의 고통을 줄여주기위한 라이브러리를 소개하고자 한다. (RxJava를 모르면 더 고통스러워 질수 있으니 RxJava에 대한 지식이 있는 사람만 보기를 권장한다.) 구글에서 자체적으로 안드로이드에 지원하는 BLE라이브러리가 있지만, BLE 기능을 개발해본 개발자들은 알다시피 BluetoothGattCallback에서 전부 분기처리를 해주어야하니,, 여간 고통스러운일이 아닐 수 없다. 잠시 이 글과는 관계없는 다른 이야기를 하자면 자바에도 함수형 프로그래밍 바람이 불면서 OnClickListener등도 Activity class에 상속하거나 따로 변수로 생성하여 분기처리 하는 것이 아닌 람다로 간단히 해당 뷰에 set하는 형식으로 트랜드가 바뀌어 가고있다. 필자..
현업에서 안드로이드 개발을 하면서 log를 불편하게 사용하는 사람들을 많이 보았다. 그나마 짬밥(?)이 오래된 사람들은 로그 유틸 클래스를 만들어서 사용하거나, 자기만의 규칙을 만들어서 쓰곤한다. 물론 그들이 틀린것은 아니지만 알다시피 다른사람들이 본인만의 방식으로 만든 코드를 유지보수 하기란 여간 힘든 일이 아니다. 하지만 이런 문제를 가볍게 해결해 주면서 Stack Trace 출력, Release로 배포시 로그를 출력 안하게 해주는 기능까지 있는 라이브러리가 있으니, 바로 로거(Logger)이다. https://github.com/orhanobut/logger 위 링크에서 볼 수 있는 예제 스크린샷을 보자. 깔끔하게 구분되어 나오는 것을 볼 수 있다. 로거의 라이센스는 Apache-2.0이므로 안심하..
안드로이드 aar을 쉽게 추가하는법. 1. 안드로이드 스튜디오 좌측 project를 android에서 project로 바꿔준다. 에서 로 바꿔주면 된다. 2. libs 폴더에 aar파일을 넣어준다. 3. app 수준 gradle에 다음과 같이 추가한다. android { compileSdkVersion 27 defaultConfig { applicationId "com.woochan.example" minSdkVersion 19 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { mini..