본문 바로가기

Android/Basic

(28)
[Android] Socket 통신 예제(New) 하나의 디바이스에서 간단한 서버 앱, 클라이언트 앱을 구성하여 소켓 통신을 수행할 수 있는 예제이다. 자세한 개념설명은 생략하였으며, 개념이해 전 간단한 예제 먼저 작성해보고싶을 경우 해당 포스팅을 읽는 것을 추천한다. 같이 알아두면 좋은 내용 Socket 의 개념 Android Permission Service 생명주기, ForegroundService Android 에서 Thread 를 다루는 방법 Notification 구현 순서 요약 서버 앱 구성 서버를 실행할 Service 클래스 작성 서버 역할을 하는 ServerThread 클래스 작성 메인 액티비티에서 구현한 Service 실행(Foreground) 클라이언트 앱 구성 화면 구성 서버에 연결할 ClientThread 클래스 작성 서버 앱 구..
[Android] CoordinatorLayout 활용 내용 업데이트: 20.09.15 CoordinatorLayout 을 활용한 스크롤 이벤트 구현하기실행환경 : Android Studio 3.2API : API 24 Nougat test device : Galaxy Note 9 (API 28 Oreo) 출처 : material.google.com 스크롤 이벤트에 따라 부드러운 애니메이션과 함께 툴바가 사라지고 보여진다.이를 구현할 수 있는 기본 레이아웃은 바로 CoordinatorLayout 이다. 아래와 같이 app.gradle 에 디펜던시를 추가해주어야한다.원래는 support 라이브러리에 따로 존재했지만, androidx 로 업데이트 된 이후로 함께 포함되어있다. 두번째 줄에 있는 머티리얼 디펜던시를 추가해주지않으면, 코디네이터 레이아웃에서 세팅할 ..
[Android] 스플래시 화면 스플래시 화면스플래시 화면은 메인 화면이 보이기 전에 보이는 화면이다. (앱 최초 실행시 보이는 로딩화면) 이것도 화면 단위이므로 액티비티로 만들 수 있다.본 포스팅은 간단한 스플래시 화면을 구현하는 예제이다. 0. 스플래시 화면으로 사용할 액티비티 생성하기스플래시 화면을 위한 액티비티는 소스 코드를 만든 후 이 액티비티의 스타일을 지정해주면 된다.액티비티는 소스 코드(자바 클래스 파일)와 XML 레이아웃으로 구성할 수도 있지만 좀 더 가볍게 구성하기 위해 XML 레이아웃을 만들어 인플레이션하는 방식이 아닌 매니페스트에서 theme 속성으로 스타일을 지정하는 방식을 사용한다.스플래시 화면을 구현하는 방법은 여러가지가 있으나, cold start (기기 부팅 후 앱이 처음 실행되거나 시스템에서 종료한 후에..
[Android] 페이지 슬라이딩 페이지 슬라이딩페이지 슬라이딩은 버튼 등을 눌렀을 때 보이지 않던 뷰가 슬라이딩 방식으로 보이는 것으로, 여러 뷰를 하나씩 전환하면서 보여주는 방식에 애니메이션을 결합한 것이다.삼성페이처럼 밑에 숨어있던 카드를 스윽 위로 빼거나, 옆에서 숨겨져있던 화면을 나타나도록 해주는 애니메이션도 위와 같은 방식과 비슷한것 같다. 이와 같은 애니메이션은 라이브러리로도 많이 구현되어있지만, 직접 액션을 구성해 애니메이션을 보여줄 수 있다.그래서 이번에는 옆에서 새로운 화면이 스윽 나오는 간단한 애니메이션을 보여주는 예제를 구현해볼 것이다. 화면 레이아웃 만들기먼저 여러개의 뷰를 중첩해서 보여줄 수 있는 프레임 레이아웃 위에 기본적으로 깔려있는 배경 화면, 옆에서 슬라이드 해서 빼낼 화면을 구성한다.버튼을 누르면 숨겨져..
[Android] 트윈 애니메이션 트윈 애니메이션은 보여줄 대상(예를들면 View, Drawable 객체 등등)을 적절하게 연산한 후 그 결과를 연속적으로 디스플레이하는 방식을 제공한다.보여줄 이미지를 일일이 지정하는 것이 아니고, 애니메이션을 보여줄 대상과 변환 방식만 지정하면 간편하게 애니메이션 효과를 보여주는 것이다.애니메이션 대상만 지정하면 시스템이 내부적으로 적절하게 연산하는 과정을 거친다. 트윈 애니메이션트윈 애니메이션의 대상과 애니메이션 효과는 다음과 같이 구분할 수 있다. 구분 이름 설명 대상 뷰 View 는 위젯, 레이아웃을 모두 포함 그리드 객체 다양한 Drawable 에 애니메이션 적용 가능. ShapeDrawable 은 캔버스에 그릴 도형을 지정할 수 있고, BitmapDrawable 은 비트맵 이미지를 지정할 수 ..
[Android] 스레드 애니메이션 스레드를 이용하여 이미지를 교체시켜주는 (슬라이드처럼) 단순한 예제이다.버튼을 누르면 이미지뷰에 동적으로 이미지가 변경되기 시작한다. (이미지 슬라이드 시작) 수업에서는 Thread 클래스를 상속받아 애니메이션을 위한 스레드 클래스를 생성해서 start 메서드를 이용해 이미지 애니메이션을 구현해보았다. 먼저 버튼과 이미지뷰만 있는 화면을 구성한다. 각 뷰의 ID 를 findViewById 메서드로 등록해주고, 액티비티의 멤버변수로 Drawable 객체를 담을 ArrayList 와 UI 를 접근할 핸들러 객체를 선언해준다. (예전에 포스팅했듯이, UI 접근은 핸들러를 통해서만 해야한다. ImageView 에 set 하는 것과 같이 Thread 에서 직접 UI 를 접근할 경우 오류가 발생한다. 참고 : ht..
[Android] 음성 녹음하기 이번엔 음성을 녹음하는 간단한 앱 예제 (급해서 대충 빨리 씀) * 오디오 녹음을 위한 과정1. 미디어 리코더 객체 생성 - 오디오 녹음을 위해 미디어리코더 객체를 new 연산자를 이용하여 만듬2. 오디오 입력 및 출력 형식 설정 - 오디오 정보를 입력받을 데이터 소스와 함께 출력 형식을 설정함3. 오디오 인코더와 파일 지정 - 오디오 파일을 만들 때 필요한 인코더(Encoder)와 함께 파일 이름을 지정함4. 녹음 시작 - 녹음을 시작하면 오디오 파일이 만들어지고 인코딩된 바이트 스트림이 저장됨5. 매니페스트에 권한 설정 - 애플리케이션에서 녹음을 하려면 RECORD_AUDIO 권한이 있어야 하므로 추가 0. Manifest 에 권한 추가 (위험권한이므로 별도의 check 필요. http://one-d..
[Android] 동영상 재생하기 음악 플레이어의 경우 화면이 없기 때문에 레이아웃을 딱히 추가할 필요가 없지만, 동영상 플레이어는 화면을 띄워주어야 하기 때문에 별도의 레이아웃을 구성해야한다. 이 레이아웃을 구성하기 쉽도록 제공하는 것으로 VideoView 가 있다. 이 뷰에서 제공하는 메서드를 사용하기만 하면 된다. 0. manifest 에 권한 추가 1. xml 레이아웃 구성 2. 메인 액티비티 여기서 VideoView 객체를 찾아 미디어 컨트롤러를 설정하거나, 동영상 파일의 위치를 설정할 수 있다. 미디어 컨트롤러는 동영상 재생이나 중지를 위한 버튼과 같은 화면을 보여주는 역할을 한다.public class MainActivity extends AppCompatActivity { public static String url = "..