Application Programming/Android
![[Android/Java] Fragment Bottom Navigation view](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FerUlIW%2Fbtq8mepzvsh%2FAAAAAAAAAAAAAAAAAAAAAMlXlM9U7fnKxPF2kWXjkBc7Ub_uqVfM60M_wxOnEfF8%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D3V2QjjNKL59OTzpw1X4pEKzxCuQ%253D)
[Android/Java] Fragment Bottom Navigation view
Demo 구성 activity fragment layout menu header (굳이 필요없음) - [ManiActivity.java] package com.sjcoding.krhana; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import android.os.Bundle; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; imp..
![[Android/Java] Fragment간 값 전달](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FGujV2%2Fbtq8mYtbuIK%2FAAAAAAAAAAAAAAAAAAAAAB-UyauDQgfQDPSifrjdzQbiKG3K8sFw8pXABShzmSHD%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Df4Q8wdXPgKGf1ha03ln%252BVBuO7Sc%253D)
[Android/Java] Fragment간 값 전달
Demo MainActivity.java package com.sjcoding.myapplication; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements FragmentA.FragmentAListener, FragmentB.FragmentBListener { private FragmentA fragmentA; private FragmentB fragmentB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI..
![[Android/Java] BlankFragment](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FQPVXx%2Fbtq8jJw22Sr%2FAAAAAAAAAAAAAAAAAAAAAHDUV0vx2-ZMP_cFQiIuFrUP_YBCoyFS2RAXjyTGPRr_%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3D7hML7SIizvE5VYqoRqgFzmhj74o%253D)
[Android/Java] BlankFragment
Demo 구성 activity layout fragment MainActivity.java package com.sjcoding.myapplication; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*ExampleFragment fragment = new ExampleFra..
[Android/Kotlin] Live Data
Live Data는 Data를 저장하고 변화를 관찰할 수 있는 객체이다. Observer를 구독하면 Data가 변경될 때마다 UI를 업데이트할 수 있다. 일반 Observable Class와 달리 Live Data는 수명주기를 인식한다. 수명주기 인식을 통해 Activity 수명주기 상태에 있는 앱 컴포넌트 Observer만 업데이트 한다. 관찰자의 수명주기가 STARTED 또는 RESUMED 상태에서만 옵저버에게 데이터 변경을 알린다. LifecycleOwner 인테페이스를 구현하는 객체와 페어링된 관찰자를 등록할 수 있다. 이 관계를 사용하면 관찰자에 대응되는 LifeCycle 객체의 상태가 DESTROYED로 변경될 때 관찰자를 삭제할 수 있다. 특히 Activity와 Fragment가 LiveDa..
![[Android/Java] naver map api](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FBYlqc%2Fbtq7C4vykNz%2FAAAAAAAAAAAAAAAAAAAAAPfMfcaI_V9g0qUPa2_W5QvPGkWGrgPvpvBYpJp8BvpU%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DE2VywIKRwmKzlAPkF0oApzHipgA%253D)
[Android/Java] naver map api
Demo 1. Api Key 발급 https://www.ncloud.com/ 2. 내위치 가져오기 해당 앱이 권한이 있어야한다. 안드로이드시스템 설정에서 위치서비스가 켜져있어야 한다. dependency 추가 현재 위치를 얻기위해선 LocationProvider라는 표준 라이브러리를 사용해도 되지만 가볍고 더좋은게 google꺼라고 한다 implementation 'com.google.android.gms:play-services-location:16.0.0' Naver sdk allprojects { repositories { google() mavenCentral() jcenter() // Warning: this repository is going to shut down soon maven { ur..
![[Android/Firebase] Firebase 연동](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FckskOI%2Fbtq7quA1LTU%2FAAAAAAAAAAAAAAAAAAAAAD-CQ0Tk5r5SDTDmPKRFXC600vqR--3TAnUA83AehHwm%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DVxQ%252B9WJGrDu5mtcmfbd6e9xlU0A%253D)
[Android/Firebase] Firebase 연동
0. Package Name, SHA-1 준비 프로젝트 생성후 패키지 네임 복사 SHA-1을 발급 (터미널에서 아래명령어로 발급가능) gradlew singingReport 1. Firebase에서 앱등록 https://console.firebase.google.com/ 앱등록후 준비해둔 패키지 네임과 SHA-1 정보를 넣는다. 2. JSON파일을 다운받아 아래에 나온 경로에 넣는다.(/app아래) google-service.json파일은 증명서 같은 개념으로 이게 있어야 firebase에 접근할 수 있다고 한다. 여기에 여러 API 키가 있다. 3. sdk 추가 4. 끝
![[Android/Java] 지나가는 비행기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDgooR%2Fbtq69RKIsWz%2FAAAAAAAAAAAAAAAAAAAAAHLewZ3lWz-9N-jw1FpBcMZepIow8XmoP4hsUbwN0zPt%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3De3Kgzi2BuJo4%252FG3%252FJ0quHXwn1fU%253D)
[Android/Java] 지나가는 비행기
Demo 구성 activity view gif resource - [MainActivity.java] package com.example.recyclerview; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { private PlainAnim pa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); pa = new PlainAnim(this); setContentView(pa); } } - [PlaneAnim.java] package com.examp..
![[Android/Java] 터치하면 위로올라가는 게임](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F1u6Jc%2Fbtq7iv6W4IS%2FAAAAAAAAAAAAAAAAAAAAAObqdJlSjpPxq8aHfsO6VaK4mpNWRAL4mRKWhSbXfNtU%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DOBruL2DkTP%252BSrSZIZwV1EYaVvn8%253D)
[Android/Java] 터치하면 위로올라가는 게임
Demo 구성 activity view gif resource - [MainActivity.java] 시작화면 package com.example.recyclerview; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } publ..
![[Android/Java] video view 가로 모드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FYgCYD%2Fbtq7iQW112b%2FAAAAAAAAAAAAAAAAAAAAAAAaGZAGI_AYyenlfMC8MlI4uySdYnXZe6B1wN5qFUjJ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DGfcdDGx4mib24HmDSpjEX7T6ZBA%253D)
[Android/Java] video view 가로 모드
Demo ManiActivity.java package com.example.recyclerview; import android.os.Bundle; import android.widget.MediaController; import android.widget.VideoView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); V..