본문 바로가기

Android

(48)
[Android] ViewPager + TitleStrip(타이틀스트립) 뷰페이저를 슬라이드하면 알아서 위에있는 타이틀이 바뀐다.저것이 바로 타이틀스트립!이번 부스트코스 강의를 보고 처음 들어본것이다. - 타이틀스트립 기능 : 현재 보여지고 있는 화면이 전체 프래그먼트 중 어느 것인지 알 수 있음. 타이틀스트립은, 뷰페이저 안에 child view로 선언 가능하다. 그리고 어떤 텍스트를 보여줄지는 뷰페이저 어댑터 클래스에서 getPageTitle 메소드만 오버라이드 해주면 된다. @Nullable @Override public CharSequence getPageTitle(int position) { return (position + 1) + "번째탭"; } 그럼 끝! 다음으로 탭스트립이다. 타이틀스트립과 디자인이 약간 다르다.그리고 차이점은 클릭하면 탭처럼 전환된다는 것. ..
[Android] ViewPager + Tab 사진 크기 지못미.. 이번에 들은 강의는 탭 만들기. 예전에 막 하다가 해본 것 같은데, 이번 강의를 들으면서 다시 정리해보려고한다. 위 캡쳐에 보이는 것 처럼, 액션바 밑에 탭이 있는데 탭을 누르면 화면이 전환되는 기능을 구현할 것이다. 자세히 공부한적은 없지만, 탭 부분도 하나의 레이아웃인줄 알고있었다.하지만 그게 아니라, 액션바 밑에 붙이는 것이었다. (어째 프리뷰에서 안보이더라) 지난번 포스팅에서와 같이 액션바를 직접 커스텀하는걸 했었는데, 마찬가지로 탭도 그냥 액션바에 붙여주기만 하면 되는것이다.이를 구성하기 위해서는 외부라이브러리를 추가해주어야한다.build.gradle에서implementation 'com.android.support:design:27.1.1'을 추가해주면 되지만, 딸깍딸깍으..
[Android] Time to String 및 시간순으로 정렬하기 거창하게 Time to String 이라고 했지만... 그냥 방금, 몇분전, 몇시간전 나타내주는 거 구현하는 방법이다. # 시간(long)을 String으로 만들어 줄 클래스 만들기. package com.onedelay.mymovie.utils; public class TimeString { public static final int SEC = 60; public static final int MIN = 60; public static final int HOUR = 24; public static final int DAY = 30; public static final int MONTH = 12; public static String formatTimeString(long regTime) { long c..
[Android] Action Bar 1. 액션바 옵션메뉴 추가하기 (1) res 디렉토리에 'menu' 디렉토리 생성. * 이름은 꼭 menu로 해야 메뉴 레이아웃 생성 가능. (2) menu 디렉토리에 menu_main.xml 파일 생성. (3) 메인 액티비티에 onCreateOptionsMenu() 메소드 오버라이드.@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } (4) 옵션 메뉴 클릭 이벤트 처리@Override public boolean onOptionsItemSelected(MenuItem item) { // 메뉴아이템 클릭시 호출, 파라미터는 선택된 메뉴아이..
[Android] startActivityForResult() 활용 예제 * 예제에 포함된 리스트는 리사이클러뷰로 구현하였으며, 이에 대한 개념은 나중에 포스팅할것이다. 다른 화면으로 데이터를 전달할 때에는 intent의 Bundle 객체에 putExtra 메소드로 데이터를 넣어 전달한다. 대부분의 예제들은 첫번째 화면의 데이터를 두번째 화면에 전송해서 뿌리는 기능을 하는 것들이었다. (내가 해본 바로는..)그래서 화면 전환은 무조건 startActivity() 로 했던 나였다. intent 객체에 그냥 데이터를 실어서 start 해버리면 되니까... 이번엔 간단한 다른 예제를 생각해보자. (부스트코스 과제하다가 알게돼서 포스팅하는 것이다.) '한줄평 작성 화면에서, 이전 화면으로 데이터 넘기기!' 먼저 스크린샷은 다음과 같다. 전체보기 액티비티 작성 액티비티 추가된 화면 사..
[Android] Permission 1. 개요 마시멜로 버전(API 23)부터 권한을 일반 권한과 위험 권한으로 나뉘었다. 이전에는 앱을 설치하는 시점에서만 권한을 부여할 것인지 물어보았는데, 사용자가 아무런 생각 없이 앱을 설치하는 경우가 많아 앱에서 아무리 많은 권한을 요구해도 그냥 승인되는 경우가 많았기 때문이다. (나도 대충 확인하고 그냥 설치했던 기억이 난다) 위험 권한은 앱이 실행된 후에 사용자에게 권한 허용을 요청해야 한다. (그래서 언제부턴가 앱 설치 후에 해당 기능을 이용하려면 특정 권한을 허용해주세요 라는 알림이 뜨는 이유인가보다.) Developer 사이트를 참고해보니, 특별 권한이라는 것도 있다. SYSTEM_ALERT_WINDOW, WRITE_SETTINGS는 특히 민감하므로, 대부분 앱은 이 권한을 사용하지 않아야..
[Android] Broadcast receiver 예제 ! 참고로 해당 포스트에서는 브로드캐스트를 발신하는 예제는 없습니다. 1. 브로드캐스트 수신자 브로드캐스팅이란, 메시지를 여러 대상에게 전달하는 것을 말한다. 예를 들어, 채팅 앱에서 이대일 채팅을 할 때 메시지는 두 사람끼리 주고받지만 여러 사람에게 한꺼번에 전달하고 싶을때는 그룹 채팅방을 만들어 한번 쓴 글을 여러 사람에게 전달하는 것을 상상하면 쉽다. 안드로이드는 여러 애플리케이션 구성 요소에게 메시지를 전달하고 싶을 때, 브로드캐스팅을 사용한다. 가장 전형적인 예로 SMS가 있다. 이 때, 인텐트를 사용한다. 앱에서 스마트폰 전역에 발생되는 글로벌 이벤트(global event)를 받아 처리하려면 브로드캐스트 수신자를 등록해야한다. 글로벌 이벤트란 "전화가 왔습니다.", "문자 메시지가 도착했습니..
[Android] Activity 생명주기 1. 개요 다른 액티비티로 전환시 기존의 액티비티는 액티비티 스택에 깔리고 새로운 화면이 추가된다. 백버튼을 눌렀을 경우 액티비티 스택에 있던 액티비티들은 다시 보여진다. 액티비티가 화면에 보이거나(focus) 보이지 않고 가려졌을 때 처리를 해야할 필요가 있다. 예를 들면, 작성하던 문서 내용을 저장하거나 게임 내역을 기억하고있는 등의 경우이다. 이렇게, 액티비티의 상태가 변할 때마다 안드로이드 시스템은 각 상황에 맞는 메소드를 자동으로 호출해주는 '액티비티의 생명주기'가 있다. 그래서 자동으로 호출되는 이 메소드들을 Override해서 각 상태에 따라 제어할 수 있다. 2. 생명주기 액티비티는 안드로이드 시스템에 관리되기 때문에 언제라도 중지되거나 메모리에서 삭제될 수 있다. 예를 들면, 전화가 오는..