개발/Android

개발/Android

디버깅용 SHA-1, SHA-256 발급

MacOS, Linux ~/.android 로 이동하여 아래 명령 입력 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android Window C:\Users\your_user_name\.android 로 이동하여 아래 명령 입력 keytool -list -v -keystore debug.keystore

개발/Android

Android Emulator에 local domain 적용

Mac 기준으로 작성 이 글은 android emulator에서 로컬 도메인을 이용해 local 서버에 접근하려는 사람에게 필요한 글이다. 로컬 도메인이 아닌 localhost로 접근하는 것은 10.0.2.2 주소로 접근하면 된다. emulator를 쓰기 가능한 상태로 실행하고 emulator 내부의 hosts 파일을 수정해야 한다. 그러기 위해선 device가 Google Play가 아닌 Google APIs 이미지인 것으로 실행해야 한다. Google Play는 디버그 버전이 아닌 프로덕션 버전이므로 root접근 권한이 없어 내부의 파일 수정이 불가능하다. 물론 Google Play를 쓰지 않으므로 다른 앱을 설치할 수 없어 사용이 불가능하다. (한글 입력을 위해서 Gboard란 앱이 필요한데 설치할..

개발/Android

[Warning] Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them in switch case statements

문제점 switch문에서 case에 뷰 아이디 값인 R.id.뷰아이디를 쓰면 나타난다. 원인은 Gradle 8.0부터 뷰 아이디의 값들에 붙던 final이 붙지않아 상수가 아니여서 case에 사용할 수 없게되므로 경고가 나타난다. 해결법 뷰 아이디 값을 조건문에 비교값으로 쓸 때 switch문 대신 if/else문을 사용한다.

개발/Android

[Warning] It will always be more efficient to use more specific change events if you can. Rely on notifyDataSetChanged as a last resort

문제점 리사이클러 뷰의 데이터가 변경됐을 때 notifyDataSetChanged()로 UI를 갱신할 경우 발생한다. 해결법 notifyDataSetChanged()를 사용하기 보단 각 상황에 맞는 함수를 사용한다. notifyItemChanged(int) notifyItemInserted(int) notifyItemRemoved(int) notifyItemRangeChanged(int, int) notifyItemRangeInserted(int, int) notifyItemRangeRemoved(int, int) notifyDataSetChanged는 최후의 수단으로 사용할 것을 권한다. 해결법을 보고 든 개인적인 생각으론 notifyDataSetChanged는 리사이클러 뷰에 자식으로 들어갈 전체 데..

개발/Android

Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml

문제점 다른 오픈소스 라이브러리를 가져다 쓸 때 빌드 실패하면서 발생했다. 오픈소스의 manifest와 내 앱의 manifest와 병합하는 과정에서 application 태그 내의 android:icon 속성의 값이 서로 달라 오류가 발생한 것으로 보인다. 오픈소스의 값은 @drawable/ic_launcher 내 앱의 값은 @mipmap/ic_launcher였다. 해결법 manifest 태그에 xmlns:tools="http://schemas.android.com/tools" 를 추가하고 applicatoin 태그에 tools:replace="android:icon" 를 추가한다.

개발/Android

버튼 텍스트 소문자로 보이게하기

위 이미지처럼 textAllCaps라는 속성의 값이 default 값인 true로 되어있는데 이것을 false로 바꾸면 된다.

개발/Android

가로 세로 화면 크기 가져오기 (getRealSize() deprecated)

API 30이상부터는 해당 버전부터 생긴 WindowMetrics이용 30미만은 이전 방식 그대로 사용 API 31부터 WindowMetrics사용을 권장하며 아래 메서드들이 deprecated 상태다. (링크) Display.getSize();// API 30부터 deprecated Display.getRealSize();

개발/Android

dp px 변환

px = dp * density(기기dpi / 160dpi) dp = px / density(기기dpi / 160dpi) public int dpToPx(int dp) { return Math.round(dp * (getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT)); } public float dpToPx(float dp) { return dp * getResources().getDisplayMetrics().density; } public int pxToDp(int px) { return Math.round(px / (getResources().getDisplayMetrics().xdpi / DisplayMetrics.D..

개발/Android

URL로 링크 열기

Uri uri = Uri.parse("http://www.naver.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);

개발/Android

dp

안드로이드 개발에서 사용하는 UI의 크기 단위이다. 이것에 대해 알기전에 픽셀부터 알아야 한다. 픽셀(pixel, px) 화소라고도 한다. 화면을 구성하는 기본 단위이다. 해상도랑 관련이 있는 것으로 같은 그림이나 영상을 나타낸다 하더라도 픽셀의 수가 많은 것이 해상도가 높은 것이다. 이를 위해 추가적으로 설명해야 하는 것이 dpi(dot per inch)란 것이다. dpi란 1인치 공간에 포함된 점 또는 픽셀의 수를 말한다. 같은 크기의 공간이라도 픽셀의 수가 더 많을수록 세세하게 표현되므로 해상도가 높은 것이다. 이제 크기가 다른 A, B라는 두 핸드폰 기기에서 한 이미지를 px단위로 그린다고 보자. A는 100x100크기이고 B는 50x50크기라고 치자. 이미지를 25x25크기로 그리면 A에선 4분..

leebera_
'개발/Android' 카테고리의 글 목록