본문 바로가기

Android Studio

파이어베이스 SHA 인증서 지문 등록 하기 (FireBase) 제작 단계의 앱에서 파이어베이스를 이용하려면 테스트용 SHA 인증서 지문을 사용하면 됩니다. 해당 프로젝트를 열어 Gradle 텝에서 signingReport를 클릭하시면 위 이미지의 시작 트리명은 앱 이름이니 각 프로젝트의 해당 네임을 클릭하셔서 들어가시면 됩니다. 이미지와 같이 SHA의 값을 파이어 베이스에 등록하시면 됩니다. ..... 앱을 테스트하고 제작하는 기간엔 문제없이 사용 가능하지만 앱을 출시 후 구글 Play Console에 올리신 경우는 별도의 SHA를 등록해 줘야 합니다. Google Play Console에 등록된 해당 앱을 클릭하신 후 설정 > 앱 무결성으로 들어가시면 앱 서명 키 인증서 가 나옵니다. 여기 등록된 SHA 인증서 지문을 등록해 주셔야 제대로 작동합니다. 복사된 지문.. 더보기
안드로이드 Entry name 'classes.dex' collided 에러 대처 안드로이드 스튜디오에서 bundle 파일 생성 시 확장자가. aab 생성 시엔 문제가 없는데. apk 파일 생성 시 Entry name 'classes.dex' collided라는 에러를 만난다면 해결 방법입니다. 하지만 100% 문제 해결이 된다 말씀드리기 힘들며 제가 해결한 방법의 한 종류 일 뿐입니다. 이 방법으로 해결이 힘들 경 우 구글링으로 검색하시기 바라며 다른 방법의 답변은 드리지 못합니다. 우선 해당 프로젝트의 폴더를 여신 후 build 폴더를 삭제합니다. 다음 해당 프로젝트의 app폴더로 이동하신 후 역시 build 폴더를 삭제합니다. 그리고 마지막으로 app폴더의 release폴더 안의 파일 역시 모두 삭제 해 주신 후 apk파일을 생성해 주시면 됩니다. 삭제된 build 폴더들은. a.. 더보기
JAVA - String 값 한글자씩 표시해보기(타이핑 효과) String str = "abcdef"; str의 값을 한 글자씩 조금의 딜레이를 주어 화면에 나오게 하려면 public class Test { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { String str = "abcdef"; try { for (int i = 0; i < str.length() + 1; i++) { System.out.println(str.substring(0, i)); Thread.sleep(100); } } catch (InterruptedException e) { e.printStackTrace(); } } }; r.run(); } } str... 더보기
리사이클러뷰 애니메이션 - RecyclerView Animation 리스트 뷰를 아래 위로 움직여 쌓이는 효과를 구현해 보려 합니다. 예로 배달의 민족 어플에 보면 가계 목록들 움직여 보면 아래위로 조금씩 떨어져 있다 차곡차곡 쌓이는 효과와 같은 것입니다. 이 예제는 RecyclerView Adapter를 구현하실 수 있으며 이해하고 있다는 전제하에서 진행하겠습니다. 우선 안드로이드 스튜디오의 res 폴더에 anim 폴더를 만들어 줍니다. * res 폴더에 마우스 오른쪽 클릭 후 New > Android Resource Directory 선택 > Resourcetype에서 anim 선택 후 OK anim 폴더에서 마우스 오른쪽 클릭 후 New > Animation Resource File 선택 > File name을 down으로 지정 후 Ok down.xml 위와 같은 .. 더보기
안드로이드 카드 뒤집기 - Android Flip Animation 위 이미지처럼 클릭했을 때 뒤면이 앞면으로 회전하는 걸 구현해 보려 합니다. 사용버전 - Android Studio 3.5.3 카드 이미지는 구글에서 받으시기 바랍니다. 앞면으로 사용될 이미지 4장과 뒷면 이미지 한 장이 필요하며 이미지 파일의 이름은 소스 파일의 파일명과 같이 맞혀 주시면 됩니다. activity_main.xml card_view.xml values/colors.xml #008577 #00574B #D81B60 #000000 #00000000 #D1E9E2 카드 이미지를 ImageView대신 TextView를 사용 했는데 카드에 숫자를 표시하기 위해 TextView로 사용했습니다. 카드의 아이디는 image_1 ~ 4번까지 사용했는데 setOnClickListener를 한 번에 처리하기.. 더보기
숫자 (배열) 랜덤 섞기 - JAVA 1 부터 10까지 의 숫자를 무작위로 섞기 첫번째 public class randomMix { public static void main(String[] args) { StringBuilder builder = new StringBuilder(); int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] b = shuffle(a); for (int c : b) { builder.append(c).append(" "); } System.out.println(builder); } private static int[] shuffle(int[] numberList) { for (int i = 0; i < numberList.length; i++) { int a = (int) (Ma.. 더보기
Realm 다중 모델 사용하기 - Android 안드로이드 Realm DataBase 보통은 Realm의 data model class는 하나만 사용하지만 혹시라도 두 개 이상을 사용해야 한다면 어떻게 초기화 하는지 알아보겠습니다. 혼자 배우면서 어플을 만들다 보니 틀린 부분도 있을 수 있으니 참고하시기 바랍니다. Realm 초기화 설정에 대한 설명은 따로 하지 않겠습니다. 사용된 Realm의 버전은 classpath "io.realm:realm-gradle-plugin:5.15.1" Realm의 데이터 모델이 하나라면 RealmActivity.java를 만들어 @SuppressLint("Registered") public class RealmActivity extends Application { @Override public void onCreate.. 더보기
안드로이드 비슷한 기능의 여러 버튼 한번에 처리 - Resource 가령 숫자버튼 1 ~ 20번까지 있으며 클릭 될때 클릭된 번호의 숫자만 받아 오는 프로그램이 있다고 치면 1~20번의 버튼을 어떻게 해야 할까요? 정말 단순하게 작업 한다면 findViewById 20번에 setOnClickListener도 20번이면 되겠네요... 뭐 애드온 ButterKnife를 사용하면 findViewById는생략해도되니 setOnClickListener 만 20번 돌리면... 혼자 배우다 보니 정말 전 이렇게 작업을 했네요. 위와 같은 역활의 버튼 처리를 좀 더 단순하게 만들어 본다면... Button 1 ~ 20번 까지의 id = button_no_1 ~ button_no_20 번 까지 있다고 하겠습니다. Button[] buttonNo = new Button[20]; for (.. 더보기
JAVA - 랜덤함수 (중복제거) 1에서 10 사이에 숫자를 랜덤으로 중복 없이 5개의 숫자를 뽑아내려면 여러 방법이 있지만 아마도 많이 쓰는 방법은... public static void main(String[] args) { int a[] = new int[5]; List list = new ArrayList(); Random r = new Random(); for(int i=0;i 더보기
파이어베이스 - 쿼리 커서로 데이터 페이지화 Cloud Firestore 데이터 베이스의 쿼리 커서로 데이터 페이지화 처리 내용 입니다. 데이터 페이지화의 필요성 파이어베이스의 DataBase 안의 사용량을 보시면 무료 버전에서 하루에 읽기 가능한 수가 50,000번 입니다. 하루에 5만번 많아 보이지만 데이터의 양이 많아지면 금방 없어 지겠죠? 그래서 데이터의 페이지화를 해두면 데이터가 100개가 있어도 10개씩 읽어 오게 한다면 굳이 100개를 처음부터 다 가져올 필요가 없어 읽기의 낭비를 예방할수 있습니다. 이 코드는 Cloud Firestore 와 Java를 사용합니다. limit = 15 는 한번에 읽어올 데이터의 양 private int limit = 15; private boolean isScrolling = false; private.. 더보기