[Android/Jetpack]Databinding 사용하기
·
Android/Jetpack
(1) 기본 세팅 build.gradle (java는 아래 코드만 추가) android { ... dataBinding { enabled = true } ... } build.gradle (kotlin의 경우, 아래 코드도 추가) apply plugin: 'kotlin-kapt' ... dependencies { ... // 버전은 본인 gradle 버전으로 작성 kapt 'com.android.databinding:compiler:3.5.3' ... } (2) xml 수정 activity_main.xml ... 기존 xml 태그 최상위에 이라는 태그로 전체를 감싸줌 태그 안에는 xml에서 사용할 변수들을 태그를 이용해 작성해줌 (3) kotlin 파일 수정 MainActivity.kt private l..
[Android/Library]Eventbus
·
Android/도구 및 라이브러리
EventBus란? 버스 네트워크의 동작 방식과 유사하게 하나의 이벤트를 동일 채널에 연결된 모든 노드(Subscriber)들에게 보내는 방식 각 노드들은 채널에 연결되어 있기만 하다면 이벤트를 채널에 보내는 얕은 결합으로도 간단하게 데이터를 전달받을 수 있음 class MainFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) //코드 } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: ..
[Android/Async]Coroutine
·
Android/도구 및 라이브러리
Coroutine이란? 참고 Co(협력)+Routine(하나의 태스크, 함수) Routine에는 두가지가 존재: Main Routine, Sub Routine Sub Routine은 Main에서 호출하는 시점에서 진입, return을 만나면 탈출 Coroutine은 함수에 진입할 수 있는 진입점도 여러개, 빠져나가는 탈출점도 여러개 return 문이나 마지막 닫는 괄호를 만나지 않더라도 언제든 나가고 들어갈 수 있음 // 스레드의 main 함수가 drawPerson()을 호출하면 하나의 코루틴 블럭(함수)이 생성됨 // drawPerson()은 언제든 진입, 탈출할 수 있는 자격이 주어짐 fun drawPerson() { /* 실제로 startCoroutine은 없음. 직관적 이해를 위해 이 코드에서만 ..
[Android/Async]RxJava
·
Android/도구 및 라이브러리
RxJava란? RxJava는 ReactiveX(Reactive Entensions)를 Java로 구현한 라이브러리이다. RxAndroid는 RxJava에 안드로이드용 스케쥴러 등 몇 가지 클래스를 추가해 안드로이드 개발을 쉽게 해주는 라이브러리이다. RxJava는 반응형 프로그래밍이다. 반응형이란? 데이터가 변하면 알아서 캐치하여 결과로 반영됨. (데이터 관찰, 스트림 처리) RX = Observable + Observers + Schedulers Observable이란? RxJava의 가장 핵심적인 요소 데이터 흐름에 맞게 알림을 보내 Observer가 데이터를 사용할 수 있도록 함 즉, Observable을 이용해 데이터를 회수하고 변환하는 메커니즘을 정의하고, Observer는 이를 구독해 데이터..
[Android/Layout]RecyclerView 내에서 View Binding 사용하기
·
Android/UI-UX 디자인
01. view binding을 사용할 수 있도록 환경 설정 android { // 기존 내용들 생략.. buildFeatures { // 뷰 바인딩 활성화 viewBinding true } } 02. Activity / Fragment에서 RecyclerView 설정 binding.recyclerView.setLayoutManager( new LinearLayoutManager({this 혹은 context}, LinearLayoutManager.VERTICAL, false)); binding.recyclerView.setAdapter(new {Adapter명: MyAdapter}({리사이클러뷰에 넣을 리스트})); binding.recyclerView.setHasFixedSize(true); bind..
[Android/Firebase]FCM(Firebase Cloud Messaging) 푸시 알람 구현
·
Android/데이터 저장 및 관리
Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기 의견 보내기 Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정 Firebase 클라우드 메시징 Android firebase.google.com 1. Firebase Console에 프로젝트 생성 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com 2. google-service.json을 안드로이드 스튜디오에 추가 03. gradle 세팅 dependencies { classpath "com.google.gms:google-servic..
[Android/WebView]기초 #1. 주소를 가져와 화면에 호출
·
Android/UI-UX 디자인
01. 환경설정 Webview에 곧바로 loadUrl로 띄울 경우 ERR_CLEARTEXT_NOT_PERMITTED 에러 발생 설정 1. AndroidMenifest 인터넷 접속 권한 추가 설정 2. AndroidMenifest application에 usesCleartextTraffic="true" 설정 https 경로의 경우 접속이 가능하나 http 경로의 경우 접속이 불가능 02. 레이아웃 세팅 03. 소스코드 public class Web1Activity extends AppCompatActivity { private ActivityWeb1Binding web1Binding; @Override protected void onCreate(Bundle savedInstanceState) { super..
[Android/Basic]Fragment Life Cycle (프래그먼트 생명 주기)
·
Android/Android 기초
[Android 개념]Activity Life Cycle (액티비티 생명 주기) Fragment Life Cycle (프래그먼트 생명 주기) 사용자가 앱을 탐색하고 상호 작용할 때 프래그먼트는 추가, 제거, 화면 시작 또는 종료에 따라 생명 주기의 다양한 상태로 전환함 프래그먼트 생명 주기 상태 및 콜백 프래그먼트의 최대 상태는 FragmentManager에 의해 경정, 조각은 상태 이상으로 진행할 수 없음 FragmentTransaction의 일부를 사용하여 조각에 최대 생명 주기 상태 설정 가능 프래그먼트의 생명 주기 상태는 상위보다 클 수 없음 (ex. 상위 프래그먼트 또는 액티비티는 하위 프래그먼트보다 먼저 시작되어야함) 1. CREATED 1-1. onCreate() 프래그먼트를 생성할 때 호출..
[Android/Basic]Activity Life Cycle (액티비티 생명 주기)
·
Android/Android 기초
[Android 개념]Fragment Life Cycle (프래그먼트 생명 주기) Activity Life Cycle (액티비티 생명 주기) 사용자의 행동에 따라 앱의 Activity 인스턴스는 생명 주기 안에서 서로 다른 상태로 전환 Activity 클래스는 활동 상태 변화를 알아차릴 수 있는 여러 콜백을 제공 액티비티 생명 주기 단계 1. onCreate() 시스템이 먼저 활동을 생성할 때 실행 : 필수적으로 구현 활동의 전체 생명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행 onCreate() 메서드 실행을 완료하면 시작됨 상태가 됨 주요 기능 사용자 인터페이스 선언(XML 레이아웃 파일 정의) 멤버 변수 정의 일부 UI 구성 등.. lateinit var textView:..
[Android/Basic]위치 퍼미션 (권한 설정)
·
Android/Android 기초
위치 퍼미션 (권한 허용) 위치 정보 엑세스 권한 유형 1. 포그라운드 위치 내비게이션 앱에서 사용자가 세부 경로 안내를 받을 수 있는 기능 메시지 앱에서 사용자가 현재 위치를 다른 사용자와 공유할 수 있는 기능 위 예시와 같이 앱에 위치 정보를 한 번만 또는 정의된 시간 동안 공유하거나 수신하는 기능이 포함되어 있으면 포그라운드 위치 정보 엑세스 원한 필요 ACCESS_COARSE_LOCATION : 도시 블록 내에 위치 정확성을 제공 ACCESS_FINE_LOCATION : ACCESS_COARSE_LOCATION을 요청할 때 제공되는 위치보다 더 정확한 위치를 제공 2. 백그라운드 위치 가족 위치 공유 앱에서 사용자가 가족 구성원과 지속적으로 위치를 공유할 수 있는 기능 IoT 앱에서 사용자가 집을..
[Android/Basic]SharedPreference (키-값 데이터 저장)
·
Android/데이터 저장 및 관리
SharedPreference란? 저장하려는 키-값 컬렉션이 비교적 작은 경우 SharedPreference API를 사용 키-값 쌍이 포함된 파일을 가리키며 키-값 쌍을 읽고 쓸 수 있는 간단한 메서드를 제공 해당 파일은 프레임워크에서 관리하며 비공개이거나 공유일 수 있음 1. 공유 환경설정의 핸들 가져오기 * 다음 메서드 중 하나를 호출하여 새로운 공유 환경설정 파일을 생성하거나 기존 파일을 엑세스 할 수 있음 getSharedPreference() : 첫번째 매개변수로 지정하는 이름으로 식별되는 여러 공유 환경설정 파일이 필요한 경우 이 메서드를 사용. 앱의 모든 Context에서 이 메서드를 호출할 수 있음 getPreference() : 활동에 하나의 공유 환경설정 파일만 사용해야 하는 경우 A..
[Android/Error]not permitted by network security policy
·
Android/에러 및 이슈 사항
참고 : https://gun0912.tistory.com/80 기존 Web 링크로 된 서버를 로컬 서버로 연결하려고 바꾸니 'not permitted by network security policy' 에러가 발생. 안드로이드 9.0(Pie) 버전 이상부터는 https를 기본값으로 지정했는데, http를 연결하려니 발생한 오류였음. 이때 http로 구축된 서버를 억지로 https로 바꾸면 time out 오류가 발생함. 아래 방법 중 하나를 선택하면 해결 가능함. (https가 아니어도 연결을 허용한다는 뜻) 1. AndroidManifest.xml 파일의 부분에 android:usesCleartextTraffic="true" 로 설정 2. res>xml 폴더에 network_security_config..
[Android/Basic]strings.xml이란?(문자열 리소스)
·
Android/Android 기초
문자열 리소스란? 문자열 리소스는 옵션 사항인 텍스트 스타일 지정 및 서식 지정 기능과 함께 애플리케이션에 사용할 수 있는 텍스트 문자열을 제공 문자열 : 단일 문자열을 제공하는 XML 리소스 문자열 배열 : 문자열로 구성된 배열을 제공하는 XML 리소스 수량 문자열(복수형) : 복수형 표시를 위해 여러 문자열을 포함하는 XML 리소스 1. 문자열 파일 위치 : res/values/filename.xml ( 요소의 name이 리소스 ID로 사용됨) 리소스 참조 : {Java}R.string.string_name, {XML}@string/string_name 구문 text_string 예 Hello! Kotlin : val string: String = getString(R.string.hello) Jav..
[Android/Error]This file does not belong to the project
·
Android/에러 및 이슈 사항
프로젝트를 복사한 뒤, 프로젝트 명을 바꾸고 xml 파일을 열어 디자인을 보려고 하니 This file does not belong to the project 라는 문구가 떴다. Project로 변경한 뒤 .idea 폴더에 있는 workspace 파일을 삭제한 뒤 Android Studio를 재실행해준다.
[Android/Layout]리사이클러뷰 내 Swipe 기능으로 리스트 새로고침
·
Android/UI-UX 디자인
1. SwipeRefreshLayout을 사용하기 위해 implementation 해준다. implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" 2. 리사이클러뷰가 존재하는 xml에서 리사이클러뷰는 SwipeRefreshLayout으로 감싸준다. 3. 스와이프뷰에 setOnRefreshListener를 통해 리스트를 갱신하는 기능을 넣어준다. view.Swipe_HomeF_SwipeRefresh.setOnRefreshListener { // 리사이클러뷰와 연결한 배열을 초기화하고 수정하는 소스를 추가해준다. // 배열이 변경되었다는 것을 리사이클러뷰에 알려준다 RecyclerView.adapter?.notifyDataSetChange..
뿌꾸 빵
'Android' 카테고리의 글 목록 (3 Page)