전체 글 58

[Android] 탭 메뉴의 구현 2편 (TabLayout과 ViewPager2)-dot Indicator의 구현

업무의 목적: * TabLayout을 이용 할 경우 ViewPager2를 이용해야한다. 경우에 따라서 dot(점) 인디케이터를 구현해야 할 필요가 있는데 오픈 소스 라이브러리를 이용하여 구현 하였다. 구현 방법: 오픈소스 라이브러리는 동일 한 라이브러임에도 불구 하고 2종류의 패키지?로 배포 중에 있다 implementation 'com.tbuonomo:dotsindicator:4.2', implementation 'com.tbuonomo.andrui:viewpagerdotsindicator:4.1.2' 둘다 구현 부는 동일한데 둘중 한가지를 선택해서 사용하면 된다. 그레이들 dependencies { ... implementation "androidx.viewpager2:viewpager2:1.0.0"..

안드로이드 2021.07.15

[Android] 탭 메뉴의 구현 (TabLayout과 ViewPager2)

*업무의 목적: 플레이스토어 처럼 상위에 탭 메뉴를 구현한다. 이 기능을 구현하기 위해서는 ViewPager2와 TabLayout을 이용해서 구현할수 있다. 관련코드: 1. activity_main.xml 2. ContentsPagerAdapter.java package com.example.storetabbar1; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.viewpager2.adapter.FragmentStateAdapter; import org.jetbrains.annotations.NotNul..

안드로이드 2021.07.14

[kotlin] 람다 apply, also, with, let, run 알아 보기

코틀린(kotlin)의 표준 라이브러리는 다양한 기능 과 편리한 기능으로 함수형 프로그래밍을 쉽게 적용할 수 있도록 도와줍니다. 람다 식(lambda expression) 또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 코틀린의 표준 범위 지정 함수에대해 알아 보자(apply, also, with, let, run) * apply: 전달 받은 수신 객체를 변경하여 반환할 때 사용/ 전달받은 수신 객체 반환. * also: 전달 받은 수신 객체를 변경하지 않고 사용할 때 사용(데이터의 유효성 검사할때 유용함)/ 전달 받은 수신 객체 반환. * let: Nullable 수신 받은 객체가 널이 아닌경우 수행, * with: non-nullable(null이 될수 없는) 객체이고 결..

안드로이드 2021.06.08

[Android] 노티피케이션(알림)과 펜딩인텐트

Intent intent = new Intent(this, SubActivity.class); //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); //1회만 사용되는 펜딩인텐트 NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID") .setSmallIcon(R.drawable.ic_launcher_background) .set..

안드로이드 2021.05.26

[Android] 그레이들을 이용하여 apk 생성일 버전명 수정 방법

업무의배경: 안드로이드에서 apk 생성시에 기본 네이밍을 이용할 경우 빌드 환경 변수(Build Variant)에 따라서 혹은 빌드 버전에 따른 혼선이 발생할 수 있다. 따라서, 안드로이드 Gradle의 빌드 옵션에 따라서 자동적으로 "프로젝트명-빌드변수-빌드날짜-버전네임-버전코드.apk"로 생성해 준다면 apk의 혼선을 방지할 수 있다. 해결 방법: build.gradle의 아래 내용을 변형한다. buildTypes { def appName ="MyWebViewJava" //프로젝트 명 release { minifyEnabled true //난독화 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //bu..

안드로이드 2021.05.12

[Android] ADB 제어 명령어 코드 정리.

업무의 배경: 단말기의 정보를 정확히 확인할 필요가 있다. 이런경우 ADB(Android debug bridge)의 제어 코드를 이용하여, 정확히 모델 정보를 쉽게 확인해 볼 수 있다. ADB 제어 코드 정리: * 모델명: adb shell getprop ro.product.model * 시리얼 번호: adb get-serialno * OS Version: adb shell getprop ro.build.version.release * Build.sdk_int: adb shell getprop ro.build.version.sdk * 해상도 resolution : adb shell wm size * 픽셀 밀도 density (DPI): adb shell wm density * 해상도 변경: adb she..

안드로이드 2021.05.04

[안드로이드] 네비게이션 바 숨김 효과 만들기

1. 업무의 배경 및 목적: 네비게이션 바가 하드키가 아닌 소프트 키로 만들어진 단말기가 존재한다, 이럴경우 UI 화면 사이즈가 달라지기 때문에 네비게이션 바를 숨기고 필요할때 드레그하여(밀어올리기) 네비게이션바를 활성화시켜 사용해야 할때가 있다. 2. 구현 방법: 안드로이드 소스코드 fun setHideNavigation(window: Window){ //시스템 유아이 히든 기능 구현. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { window.getDecorView() .setSystemUiVisibility( //View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_HIDE_NAVIGAT..

안드로이드 2021.04.07

[안드로이드] 종료 작업관리자 에서도 안보이게

종료 (작업관리자 에서도 삭제) 안드로이드 4. 대 버전부터 작업관리자? 현재 작업중인 엡리스트들이 보이게 만들어 줬음. 안드로이드의 철학에서 어플리케이션이 실행 되었다면, 완전한 종료는 OS에서 메모리 관리를 통해서, 완전 종료?! 라는 철학을 갖고 있음... 아마도 이시기엔 해킹앱? 등 사용자 몰레 구동되는 앱들을 모니터링 할 필요가 있다고 판단 했기 때문에 넣지 않았을까?? 개인 적인 추측.... 하여간 어떤 논리와 필요성으로 '작업관리자', task manager 가 생겨 나게 되었습니다. 5.0에서 이 작업관리자에서도 보이지 않도록 수정하는 코드가 나왔습니다. 샘플은 하기와 같음. 1. 작업관리자에서도 제거 하고, 앱 종료. if(Build.VERSION.SDK_INT >= Build.VERSI..

안드로이드 2017.06.05

[안드로이드] 카메라 이벤트 받기 동적, 정적 BroadCastReceiver 받기

카메라 이벤트 받기 동적, 정적 BroadCastReceiver 받기 1. 브로드캐스트를 정적, 동적으로 구성할때의 차이를 확인한다.2. com.android.camera.NEW_PICTURE 및 android.hardware.action.NEW_PICTURE 을 Nuga(7.0)에서는 동적 브로드 캐스트로 만 수신 할수 있다. 그외의 Action은 동적 정적 모두 가능.3. 안드로이드 6.0 이하 에서만 NEW_PICTURE을 정적(Manifest)으로 수신 할수 있다.앱은 ACTION_NEW_PICTURE 또는 ACTION_NEW_VIDEO 브로드캐스트를 송수신할 수 없습니다. 이 최적화는 Android 7.0을 대상으로 하는 앱뿐 아니라 모든 앱에 영향을 미칩니다.Android 7.0부터 사용 불가..

안드로이드 2017.04.24

[안드로이드] Doze(잠자기) 모드 분석

Doze(잠자기) 모드 분석 Doze의 뜻은? "1.깜빡 잠이 들다, 졸다 2.(보통 낮에) 잠깐 잠, 낮잠" 을 갖고 있다. Android 에서 Doze(잠자기) 모드는 오랫동안 단말기가 사용중이 아닐경우 단말기의 배터리를 절약 하기 위한 모드, Doze 모드로 전환 되게 된다. Doze 모드 란 Doze 모드로 전환되게 되면 '네트워크'와 '백그라운드' 작업을 지연? 시킴으로써 단말기의 배터리를 절약 할수 있게 되는 것이다.Android 6.0 M 마시멜로우에서 적용되었다. Doze 모드는 아래의 조건이 모두 충족할때 발생한다. 1. 배터리가 충전 중이 아닐때, 2. 휴대폰이 물리적으로 이동 중이 아닐때(자이로센서) 3. 스크린 오프 상태로 오랫동안 방치 되었을 경우 (7.0 에서 스크린 온오프 이벤..

안드로이드 2017.04.21

[안드로이드] Broadcast 를 이용한 앱간 통신

Broadcast 를 이용한 앱간 통신 1. 통신 규칙. BroadcastReceiver을 이용하여 통신 하며, MsgValueObject(Data bank)를 교환하여 통신한다. 요점.1.BroadcastReciver를 이용하여 App간의 Msg를 교환 할 수 있다. (sendBroadcast(new intent()) 송신, BroadcastReciver 수신 에 사용 된다.)2.BroadcastReciver의 Action Name(Key)을 공용으로 사용하여, 통신 채널의 port(Action Name)를 확보 한다. ( 다수의 App이 멀티 통신 할수 있게 된다.) (Action Name: com.jky.myapp.action.MY_APP_SIGNAL)3.Msg Value Objet를 Intent에..

안드로이드 2017.04.19

안드로이드 다른 어플리케이션 종료 시키기

옛날 방법 Froyo 로부터 deprecated 되었지만, 혹여나 Froyo 이전도 지원할 경우에 필요할 것 같아 정리했다. 메니페스트에 다음 퍼미션을 주고.. App 에서 다음 코드를 수행한다. ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.restartPackage( getPackageName() ); 새로운 방법 메니페스트에 다음 퍼미션을 주고.. 다음 코드로 process 를 죽여준다. ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.killBackgroundProcesses (getPackageName()); 단, 이전의..

안드로이드 2014.10.08