반응형

Mobile/Android(Java) 17

[Android/java] Preference UI 빌드, 어플리케이션 설정 구현

안녕하세요 골드입니다. 오늘은 어플리케이션에서 설정 창을 구현하는 방법에 대해서 글을 쓰도록 하겠습니다. 안드로이드는 어플리케이션에 사용자 설정 화면을 만들 수 있도록 XML기반 라이브러리를 제공하고 있습니다. 이 라이브러리를 사용하면 일관성 있는 사용자 UI를 생성할 수 있습니다. 여기에는 분명한 장점이 있습니다. 사용자는 익숙한 설정 화면의 레이아웃과 사용법에 익숙해지게 됩니다. 그리고 다른 어플리케이션의 설정을 우리 어플리케이션에 통합할 수 있게 됩니다. Preference 라이브러리는 두 가지 요소로 구성됩니다. - 프레퍼런스 화면 레이아웃 : 화면에 보여줄 공유 프레퍼런스 키를 지정하는 XML 파일. - 프레퍼런스 프래그먼트 : XML파일을 인플레이트하는 PreferenceFragment나 Pr..

[Android/java] SwipeRefreshLayout을 이용하여 당겨서 리스트 새로고침구현하기

안녕하세요 골드입니다. 오늘은 스와이프해서 리스트를 새로 고침하는 방법에 대해서 알아보겠습니다. Swipe는 화면을 아래로 당기듯이 드래그하는 것을 말합니다. 핸드폰 화면은 한정되어 있기 때문에 따로 새로고침 버튼을 두는 것도 좋지만 Swipe 새로고침을 많이 사용하고 있습니다. 이번 포스팅에서 저는 RecyclerView를 사용한 앱을 미리 만들어놨습니다. 여기에 swipe refresh기능을 추가하도록 할 것입니다. 아마 이 글을 보는 분들도 이런 상황일 것이라고 생각합니다. 헷갈리지 않도록 잘 써보도록 하겠습니다. 1. RecyclerView 부모 레이아웃으로 SwipeRefreshLayout 추가 최상위 레이아웃으로 SwipeRefreshLayout을 설정했습니다. SwipeRefreshLayou..

[Android/java] Fragment 동적 생성, 제거, 교체 애니메이션

안녕하세요 골드입니다. 오늘은 Android에서 코드로 Fragment를 동적으로 생성, 제거, 교체하는 방법에 대해서 글을 쓰도록 하겠습니다. Fragment는 Activity가 존재해야 존재할 수 있습니다. Activity에 추가된 Fragment를 생성하거나 제거, 교체하기 위해서 사용되는 메서드들은 Fragment Manager에서 제공합니다. Fragment Manager를 먼저 선언하고 Fragment Transaction를 사용하여 Fragment를 생성하거나 할 수 있습니다. Fragment Manager는 Activity가 Fragment를 관리하기 위해서 선언하게 됩니다. Fragment Manager의 참조는 getSupportFragmentManager 메서드를 사용합니다. 1. a..

[Android/java] Camera 사용하기 (동적으로 ImageView 만들어서 Layout에 삽입하기)

안녕하세요 골드입니다. 오늘은 Camera에 대해 글을 쓰도록 하겠습니다. 최근에 나온 Android 단말기는 99% 카메라를 장착하고 있습니다. Camera를 직접 만들어 쓸 수도 있겠지만 그것보다 Intent를 활용하여 Camera 앱에 접근하는 방식을 사용하여 조금 더 효율적이고 쉬운 방법으로 Camera를 사용할 수 있습니다. 먼저 Manifast 파일에 카메라 하드웨어 접근 권한을 추가합니다. 1. Camera Intent를 호출 MainActivity.class 파일에 Camera Intent를 호출해서 Camera 앱에 접근할 수 있도록 합니다. startActivityForResult() 메서드로 카메라 Intent를 보냅니다. 두 번째 매개변수 값이 0보다 큰 값이라면 새로운 액티비티가 ..

[Android/java] AlertDialog.Builder를 통한 Custom Dialog 만들기

안녕하세요 골드입니다. 오늘은 Custom Dialog 만드는 법에 대해서 글을 쓰겠습니다. Dialog는 대화상자로 여러분이 잘 아는 바로 그 대화상자입니다. 어플리케이션을 만든다면 정말 안 쓸 수가 없습니다. 그만큼 많이 사용하고 효율적인 부분이 있습니다. 그럼 만들어보겠습니다. 1. Dialog를 정의하는 java class 만들기 먼저 Dialog를 정의하는 class 파일을 만들겠습니다. DialogFragment를 상속합니다. DialogFragment 클래스는 Dialog 객체의 메서드를 호출하는 대신 대화상자를 만들고 외형을 관리하는 데 필요한 모든 컨트롤을 제공합니다. 올바른 이벤트 처리가 가능하며, UI 재사용이 가능합니다. 간단하게 MyDialog.class를 작성하였습니다. 따로 테..

[Android/java] RecyclerView를 활용하여 ListView 만들기

안녕하세요 골드입니다. 오늘은 요즘 안드로이드에서 밀고 있는 RecyclerView에 대해서 알아보겠습니다. RecyclerView는 대량의 데이터 세트를 스크롤 목록으로 표시할 때 사용합니다. RecyclerView는 기존의 ListView와 매우 유사하지만, ListView가 더욱 진보하고 유연해진 버전이라고 합니다. 최근 구글에서도 리스트 형식의 UI를 구현할땐, ListView보다 RecyclerView를 사용하라고 권고하고 있는데요. 어떤 부분이 ListView보다 진보되었고 유연했는지 먼저 알아보겠습니다. ListView의 경우 기본적으로 구현했을 때 리스트 항목이 갱신될 때마다, 매번 아이템 뷰를 새로 구성한다는 단점이 있습니다. 대량의 데이터를 표시하는 상황에서 이는 성능을 저하시키는 요인..

[Android/java] Options Menu 만들기

안녕하세요 골드입니다.오늘은 안드로이드에서 많이 사용하는 App Bar 메뉴에 대해서 간단하게 글을 써보도록 하겠습니다. Appbar 메뉴는 오른쪽에 보이는 new버튼과 ... 버튼입니다.다양한 메뉴를 Appbar 위에 놓을 수 있고,메뉴가 너무 많으면 점점점 버튼에 넣어놓고 눌렀을 경우 팝업으로 보여줄 수 있습니다. 시작하기 전에 해야할 일이 있습니다.먼저 AndroidManifest.xml에서 태그 안에theme를 NoActionBar로 설정해주기 바랍니다. 1. activity_main xml 파일액션바를 지웠습니다.그 자리에 새로운 툴바를 만들기 위해 툴바를 생성합니다. 툴바를 사용할땐 빨란 에러가 생길 수 있습니다.수직 방향에 대한 속성을 설정해달라는 말인데요,저는 그래서 LinearLayout..

[Android/java] Retrofit2를 이용한 JSON 데이터 HTTP 통신(GET, POST) 방법 (CLEARTEXT 오류 해결)

안녕하세요 골드입니다. 오늘은 Retrofit2를 사용해서 HTTP통신을 하는 방법에 대해서 글을 쓰겠습니다. 1. HTTP 통신규약 HTTP는 www상에서 정보를 주고받을 수 있는 프로토콜입니다. HTTP는 이름이고 통신규약(프로토콜)은 원거리 통신 장비 사이에서 메세지를 주고 받는 규칙입니다. 웹에서 이루어지는 데이터 교환의 기초이며, 클라이언트와 서버를 이루고 요청/응답을 하는 프로토콜입니다. 작동 방식은 간단하게, 클라이언트에서 요청(Request)를 보내면 서버에서 그 요청을 받고 응답(Response)합니다. 서버의 과부화를 막기 위해 응답을 받으면 요청을 끊어버린다는 것은 많이 들어봤을 것입니다. http에는 서버에게 요청의 종류를 알려주는 몇 가지 메서드가 존재합니다. 그 중 네 가지를 살..

[Android/java] TabLayout과 ViewPager 안에 Fragment 사용하기

안녕하세요 골드입니다. 오늘은 TabLayout을 사용하는 방법에 대해서 포스팅 하겠습니다. TabLayout은 상당히 많이 쓰입니다. 한정된 화면에 방대한 자료를 한 번에 보여주기 어렵기 때문입니다. 이렇게 자료를 나누어 놓으면 직관적이고 보기도 편리합니다. 저는 TabLayout과 ViewPager를 사용할 것인데, ViewPager 안에 Fragment를 사용할 것입니다. Fragment는 Avtivity를 대신할 수 있는 유저 인터페이스입니다. 자세한 사항은 여기를 참고하세요. 다음에 Fragment에 대해서도 글을 쓰겠습니다. https://developer.android.com/reference/android/app/Fragment Fragment를 사용하는 이유는 Fragment는 Fragm..

[Android/java] MotionLayout 예제(touch and drag horizontally) 따라하기

안녕하세요 골드입니다. 오늘은 안드로이드 문서에 있는 MotionLayout 예제를 따라해보겠습니다. MotionLayout은 애니메이션 사용을 좀 더 직관적으로 사용할 수 있도록 도와줍니다. 1. Gradle 파일에 추가 MotionLayout은 ConstraintLayout의 하위 클래스이기 때문에 constraintlayout을 gradle(Modle: app)에 추가합니다. constraint 2.0부터 추가되었습니다. 2. activity_main.xml 선언 activity_main.xml입니다. 최상위 Layout을 MotionLayout으로 선언하고 밑에 객체를 하나 선언하였습니다. 중요한 속성은 MotionLayout 안에 있는 행위에 대한 xml파일을 참조하는 속성입니다. 만들고자 하는..