안드로이드 48

[Android] 안드로이드 스플레시 구현

구현 방법: - 인트로 엑티비티에 스프레시 테마를 구현하여, 화면이 onCreate 되기 전까지는 스플레시 테마를 보여주고, onCreate 할때 setTheme(R.style.app_theme) 앱 테마를 적용한다음. - 안드로이드 이미지 URL로 이미지를 읽고 2초 대기후에 메인 엑티비티를 실행 한다. 참고자료: [1] https://holika.tistory.com/entry/내-맘대로-정리한-안드로이드-스플래시Splash-화면은-어떻게-만들어야-효율적으로-활용할-수-있을까? [2] 안드로이드 이미지 URL로 표시하기, https://jizard.tistory.com/179

안드로이드 2021.09.23

[Android] SharedPreferences- 공유 환경설정- 데이터 저장 1편

1. 목적: 간단하게 어플리케이션 내에서 데이터를 저장하여 활용할 필요가 있다. 저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreferences API를 사용해야 합니다 참고: SharedPreferences API는 키-값 쌍을 읽고 쓰는데 사용되며 앱 설정을 위한 사용자 인터페이스 빌드를 지원하는 Preference API와 혼동해서는 안 됩니다(Preference API도 사용자의 설정을 저장하는 데 SharedPreferences를 사용하긴 함). Preference API에 관한 자세한 내용은 설정 개발자 가이드를 참조하세요. 공유 환경설정의 핸들 가져오기 다음 메서드 중 하나를 호출하여 새로운 공유 환경설정 파일을 생성하거나 기존 파일에 액세스할 수 있습니다. getSharedPr..

안드로이드 2021.09.16

[cordova] Toast plugin 만들기

1. 배경: 안드로이드 하이브리드 앱을 구현하게 될때, 코도바를 이용하여 웹코드(html,javaScript)언어를 통해서 앱을 구현하게 해줌과 동시에 네이티브와 웹간의 데이터 통신을 할 수 있게 해주는 기능을 한다. (@JavascriptInterface를 통해서도 통신이 가능한데...) 2. 구현 - Echo.java package com.android.test.plugins; import android.util.Log; import android.widget.Toast; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JS..

안드로이드 2021.09.15

[Android] 액티비티를 다이얼로그 효과 주기

목적: 다이얼로그 처럼 보이고, 배경클릭 할 경우, 엑티비티가 종료되도록 구현(종료하면 안될 경우도 있을듯). 구현 방법: - 엑티비티의 테마를 다이얼로그 테마를 주는 것으로 해결 하였다. - 1번이 다이얼로그 테마로 해결 하였다. //Dialog.Alert 주면 이상함 - 2번의 방법도 테마를 사용하지만, 주변 배경 클릭시 닫히는 효과를 줄때 코드를 너무 많이 작성해야 해서 좋은 방법은 아닌걸로 보인다. 구현코드: 참고자료: [1]https://tristan91.tistory.com/121 [2]https://gg-i-dont-know.tistory.com/6

안드로이드 2021.08.30

[Android] 애니메이션 효과?(회전) 주기

목적: 안드로이드 애니메이션 효과 주기. AnimationUtils을 이용한다. res.anim.rotate_test.xml MainActivity.xml setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.tvHello); Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate_test); textView.startAnimation(animation); 프로젝트 첨부: 참고 자료: [1] https://developer.android.com/guide/topics/graphics/view-animation?hl=..

안드로이드 2021.07.20

[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