모바일에서 많이 사용하는 탭 스타일을 구성할 때, 안드로이드 5.0이후 Material Tab Design을 추천하고 있다. 안드로이드에서 Material Design은 직관적이면서 일관된 UI/UX를 제공하는 것을 말한다. 다시 말해 UI/UX의 일관성을 위해 구글이 제시한 가이드가 바로 Material Design이다. 탭 UI/UX와 관련된 샘플을 살펴보니 프래그먼트를 활용하여 탭 사이를 빠르게 이동하고, 좌우로 스와이프(Swipe)하는 기능을 제공하고 있다. 안드로이도 예제인 SlidingTabsBasic과 SlidingTabsColors를 다운 받아서 살펴보면 이해할 수 있을 것이다. 안드로이드 탭 스타일 SlidingTabsBasic을 기반으로 안드로이드 탭 구성을 살펴보도록 하자. 기본적으로..
안드로이드에서 웹뷰를 적용하는 강좌는 지난번에 올렸었다. 뒤로가기 버튼까지 처리를 했지만, 사용하다 보면 한가지 문제가 발생한다. 웹 페이지에서 다른 페이지로 이동한 후, 내부적으로 여러번 리다이렉트가 발생할 경우이다. 이때, 기존의 방식대로 뒤로가기 버튼을 처리하면 원하는대로 동작하지 않는다. 바로 이전 페이지로 이동하기 때문에 다시 현재 보고 있는 페이지로 돌아오게 되는 것이다. 이런 문제를 해결하기 위해서 다음과 같은 방식을 사용해봤다. 현재 URL을 변수에 저장하고 새로운 URL이 로딩되었는데 아직도 현재 URL이면 뒤로 이동하도록 처리하는 것이다. WebViewClient를 상속한 클래스의 shouldOverrideUrlLoading 함수에서 처리하면 된다. private class WebVie..
안드로이드에서 웹서버로 통신할 때 주로 사용하는 포맷이 JSON이다. 웹에 접속해서 데이터를 가져오는 방식은 안드로이드 네트워크 연결하기 (Network On Main Thread Exception 처리) 을 참고하기 바란다. 이렇게 가져온 데이터가 JSON 타입일 경우, 안드로이드에서 이를 처리해서 배열에 저장해 보자. 웹에서 가져온 데이터를 JSONArray로 변환하고, For문을 중첩해서 돌리면서 각 항목의 값을 가져오는 것이다. 그리고 String[][] 2차원 배열에 가져온 값을 저장하는 형태로 매우 간단하다. 소스를 한번 살펴보자. try { JSONArray jArray = new JSONArray(result); String[] jsonName = {"name","age","exam"}; ..
안드로이드에서 네트워크 연결하기 위해 자바에서처럼 코딩하면 십중팔구는 다음과 같은 오류 메시지를 만난다. android.os.NetworkOnMainThreadException 메시지를 살펴보면 Main Thread에서 네트워크를 호출하면서 발생한 오류라고 나온다. 즉, 안드로이드에서 Main Thread에서는 네트워크 연결을 하지 못하도록 한 것이다. 아마도 안드로이드 앱에서 네트워크 호출하면서 에러가 발생한 것을 사용자들이 안드로이드의 오류로 인식하기 때문에 그런 듯 하다. AsyncTask 쓰레드 클래스 이해 그럼 안드로이드에서는 어떻게 네트워크에 연결할 수 있을까? AsyncTask라는 쓰레드 클래스를 상속받아 네트워크 연결하는 부분을 만들면 된다. AsyncTask는 상속시 3개의 Generic..
최근 모바일 웹을 앱으로 씌워서 서비스하는 경우가 많아짐에 따라 웹뷰의 활용성도 올라가는 것 같다. 안드로이드에서 웹뷰(WebView)를 사용하는 기본 방식을 정리해 보도록 한다. 액티비티 생성 먼저 "File > New > Activity > Blank Activity"를 통해 MiniWebActivity라는 이름의 빈 액티비티를 하나 생성한다. 생성후 살펴보면 Java에는 MiniWebActivity 파일이 Layout에는 activity_mini_web.xml 파일이 추가된다. Menu에도 menu_mini_web.xml이 생성되지만 여기에서는 사용하지 않는다. 레이아웃 설정 activity_mini_web.xml의 레이아웃 설정은 다음과 같다. LinearLayout으로 설정했고 방향(orient..