Android (30) 썸네일형 리스트형 [Android] Room 을 사용한 초기 DB구축(외래키(Foreign Key / FK), UNIQUE 포함) 웬만한 앱에는 DB가 필요하다. 지금보다 초보일 때 모든 트랜잭션을 서버로만 연동시켰더니 콜백지옥에 갇혔었기 때문에 더 잘 알고 있다. (ex. 삭제버튼 클릭했을 때 -> 다이얼로그를 띄우고 확인 버튼을 눌렀을 때 -> 서버에 요청하고 응답이 왔을 때 -> 그게 성공했을 때 완료. ㅜㅜㅜ) 최대한 Jet Pack 을 써보자는 입장이라서 SQLiteHelper 대신 Room 을 고수하고 있다. 단, 편리함에 매몰되지 않기 위해 쿼리동작은 항상 신경쓴다. 모델링 우선 서비스를 설명해본다. 복수의 사용자가 클라이언트 앱에 로그인 하여 각기 다른 인맥정보를 본다. 사용자는 파이어베이스의 인증 기능을 활용하여 유니크한 uid 로 식별할 수 있다. 사용자별 인맥과 인맥별 메모를 관리하는 앱이다. 사용자, 인맥, 메.. [Android] CSV 파일 만들기/쓰기 1. Manifest 권한추가 2. 코드 try { File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); File exportFile = new File(path, calHistoryRawData.getHashed().substring(0, 10) + "_" + calHistoryRawData.getOrderNumber() + ".csv"); FileWriter fileWriter = new FileWriter(exportFile); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); for (int j = 0; j < data.le.. [Android] SVG 파일 XML 로 바꿔서 drawable 경로에 넣기 피그마나 공식 문서나 공식 문서들에서 제공하는 템플릿에서 안드로이드에 쓰라고 SVG 벡터 파일로 이미지를 출력해주는 곳들이 있다. 해상도별로 경로에 넣는 방법도 있지만 개인적으로는 벡터파일을 선호하니 포스팅해놓고 다른 글들에서 참조하려고 한다 ㅎㅎ 1. SVG 파일 받아놓기 예시에 쓰이는 파일은 구글로그인 템플릿이다. 보이다시피 확장자가 svg이다. 2. Android Studio 에서 Asset Studio 열기 drawable 경로에서 우클릭한 다음 Vector Asset 선택하면 된다. drawable 우클릭 - New - Vector Asset 바로 Asset Studio 가 열린다. 3. Asset Studio 에서 svg 불러오기 Local file (SVG, PSD) 를 선택하고 Path 에.. [Android] Google 로그인 버튼 만들기(브랜드 가이드 적용) OAuth2.0 인터페이스를 활용한 SNS로그인 방식을 구현할 때는 동작 구현도 중요하지만 각 플랫폼의 가이드를 잘 읽어봐야 한다. 그 중 구글의 버튼 양식을 적용하는 과정을 정리할 겸 담아본다. https://developers.google.com/identity/branding-guidelines?hl=ko 위 링크가 공식문서다. 어디서나 같은 경험을 제공하기 위해 상세한 가이드가 제작돼있다. 1. 공식문서 링크에서 '파일 다운로드'를 눌러 양식들을 다운받는다. 양식을 잘 보면 android 용 해상도별 png 파일 묶음이 있고 web 용 svg 파일들이 있고 ios 용 해상도별 파일 묶음도 있다. 2. 머터리얼에서 Roboto 폰트를 다운받고 추가한다. https://fonts.google.com/.. [Android] 앱 아이콘 제대로 만들기 급한거 먼저 배우고 구현해보느라 앱 아이콘의 자세한 부분을 그동안 지나치고 있었는데, 허술한 부분이 여럿 보여서 제대로 살펴보게 되었다. 일단 공식 설명이 존재한다. https://developer.android.com/codelabs/basic-android-kotlin-training-change-app-icon#0 단계별로 배울 수 있는 튜토리얼이다. 여기서 중요한 것은 sdk 26 버전부터 anydpi 개념이 추가돼서 backgorund, foreground 파일을 각각 추가하여 모든 해상도에 대응이 가능하다 (mipmap-anydpi-v26 경로의 의의) 26 밑으로는 알던대로 mipmap 경로에 해상도별 png 이미지가 필요하다. 아이콘의 핵심 이미지가 보이는 영역은 지름이 66dp 인 중앙의.. [Android] 앱 통일성을 위한 초기 설정 앱에 전체적인 테마 설정과 통일성을 위해서는 준비작업이 조금 필요하다. 지금 하고 있는 간단한 작업을 적어두려 한다. 처음 앱 프로젝트를 만들었을 때, 1. 폰트 추가 res 폴더 하위에 font 폴더를 만들고, 파일명에 한글이나 대문자가 없는 ttf 폰트 파일들을 추가한다. 이 폰트들을 묶는 fonts.xml 파일도 만들고 내부 내용은 이렇다. fonts.xml 2. colors.xml 정리 맨 처음 프로젝트 만들면 purple 시리즈로 colors 파일이 오염돼있다(?) 쓸 색상들만 적용해주자. 어차피 theme 파일에서만 참조하고 있으니 프로젝트 빌드에는 문제 없다. values/colors.xml #606060 #F8F8F8 #BB77FF #E69FFF #FAE4FF 3. colors.xml(ni.. [Android] Dialog match_parent 맨날 잊어버려서 정리해둔다. dialog 를 상속받아 레이아웃을 적용시키면 미리보기에서는 Match_parent 가 적용되지만 실제 다이얼로그는 부모 뷰에 붙지 않기 때문에 쪼그라든다. 스택오버플로를 보면 대표적으로 2가지 방법이 있다. https://stackoverflow.com/questions/28513616/android-get-full-width-for-custom-dialog style 에서 android:Theme.Holo.Dialog 를 상속받아서 minor width 와 major width 를 percentage 로 조절하는 방법과 Dialog.getWindow().setLayout(width, height) 메서드 안에 LayoutParams의 속성을 넣어서 가로와 세로를 조절하는 .. [Android / Java] EditText 비활성화 (enabled 메서드) 아래처럼 메서드를 만들어서 비활성화 된 것 같은 UI 변경 및 EditText.enabled(boolean enable) 로 컨트롤해줬다. 이미 키보드가 올라온 상태에서 비활성화 하는 경우도 있을 수 있으니 InputMethodManager 를 사용해서 키보드를 내리라는 명령도 첨가했다 이전 1 2 3 4 다음