Presentation is loading. Please wait.

Presentation is loading. Please wait.

제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌.

Similar presentations


Presentation on theme: "제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌."— Presentation transcript:

1 제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌

2 목 차 Notification(노티피케이션) 1 메뉴 2 고급위젯 3

3 1. 노티피케이션(Notification)

4 1.1 노티피케이션의 종류 앱 제작시 프로그램이 사용자에게 어떤 이벤트를 알려줘야 할 상황 발생
사용자로부터 피드백을 받을 수도 안 받을 수도 있음 [노티피케이션이 주로 사용되는 상황] 파일이 저장되고 있고 저장이 완료되면 사용자에게 파일이 모두 잘 저장됐다고 알려줘야 할 경우 프로그램이 백그라운드 프로세스로 돌고 있는 상황에서 사용자에게 진행 상황에 대해 정기적으로 알려줘야 할 경우 파일을 다운받을 시 사용자가 얼마나 기다려야 하는지 등의 메시지를 전달해줘야 할 경우 노티피케이션 종류 특징 토스트 노티피케이션 윈도우 표면에 보이는 팝업메세지 크기는 글자의 크기/개수에 때라 달라짐 시간이 지나면 저절로 사라지거나 나타남 사용자로부터 이벤트를 받을 수 없음 상태바 노티피케이션 시스템의 상태바에 아이콘을 추가하고 노티피케이션 윈도우에 메시지를 추가 사용자가 노티피케이션 메시지를 클릭시 안드로이드 프레임워크에서는 사용자가 미리 정의해 놓은 인텐트 실행 애플리케이션이 백그라운드로 실행되고 실행중에 사용자에게 어떤 이벤트를 공지할 때 아주 유용 대화상자 노티피케이션 현재 액티비티의 전면에 나타나는 조그만 윈도우 대화상자와 동일 대화상자가 실행되면 액티비티는 포커스를 잃어버리고 사용자의 입력을 받을 수 있는 상태가 됨 애플리케이션이 포어그라운드로 실행되고 실행중에 사용자에게 어떤 이벤트를 공지할 때 아주 유용

5 1.2 상태바 노티피케이션 (1) 노티피케이션 가이드 라인 (2) 상태바 노티피케이션 만들기
백그라운드 서비스로 애플리케이션이 동작할 때 사용자로부터 어떤 응답을 받아야 할 경우에 사용 (1) 노티피케이션 가이드 라인 시간과 그다지 상관이 없는 이벤트는 노티피케이션을 사용하지 말아야 한다. 현재의 화면에서 알려도 될 만한 내용은 굳이 노티피케이션을 사용하지 말아야 한다. 사용자가 굳이 알 필요가 없는 시스템적인 상세한 메시지는 노티피케이션을 사용하지 말아야 한다. 사용자가 노티피케이션의 사용여부를 직접 제어할 수 있게끔 해야 한다. 마지막으로 노티피케이션을 이용해서 광고하지 말아야 한다. (2) 상태바 노티피케이션 만들기 액티비티나 서비스에 모두 만들 수 있지만 , 서비스에 주로 생성함 상태바 노티피케이션 Notification클래스와 NotificationManager로 만들 수 있음 Notification 클래스의 객체 : 아이콘이나 메시지, 그외의 부가 속성 정보를 갖고 있는 노티피케이션의 속성 정보 2) NotificationManager : 상태바를 관리하고 실행하는 안드로이드 프레임워크의 서비스

6 1.2 상태바 노티피케이션 (3) 노티피케이션 생성 기본 절차 NotificationManager 개체를 얻음
String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager)getSystemService(ns); 2) Notification객체를 생성하고 유지 시간을 설정 int icon = R.drawable.notification_icon; CharSequence tickerText = "상태바 노티피케이션"; long when = System.currentTimeMillis(); Notification.Builder builder = new Notification.Builder(StatusNotificationActivity.this); builder.setSmallIcon(icon).setTicker(tickerText).setWhen(when); Notification notification = builder.getNotification(); 3) 노티피케이션 메시지와 메시지 클릭 시 띄울 PendingIndent를 정의 Context context = getApplicationContext(); CharSequence contentTitle = "내 노티피케이션!!!"; CharSequence contentText = "Hello World Call"; Intent notificationIntent = new Intent(con, HelloWorldActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(con, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 4) NotificationManager에게 Notification을 전달 mNotificationManager.notify(HELLO_ID, notification);

7 1.3 리치 노티피케이션 BigPicture BigText InboxStyle
젤리빈(4.1)이후 상태바 노티피케이션의 변화 발생 좀더 화려한 그래픽과 내용을 제공할 수 있는 형태의 노티피케이션 추가 BigPicture,BigText, InboxStyle노티피케이션 3가지 종류 BigPicture BigText InboxStyle

8 2. 메뉴(Menu)

9 2.1 메뉴 메뉴 XML 요소 화면에서 사용자가 어떤 액션을 취하는 데 있어서 사용자에게 친숙한 인터페이스
옵션 메뉴, 컨텐스트 메뉴, 서브메뉴 3가지 기본적인 메뉴 형태 제공 [메뉴 사용방법] 메뉴와 메뉴 아이템을 XML에 정의 소스코드에서 객체로 가져오기 위해 메뉴 인플레이터를 사용 메뉴 XML 요소 요소들 설 명 <menu> Menu 클래스를 정의하는 요소 메뉴 아이템 <item>요소를 포함 XML 최상위 노드 한 개 이상의 <group><item>을 가짐 <item> MenuItem클래스를 정의하는 요소 메뉴를 정의하는 단일항목을 정의 서브메뉴를 만들 수 있음 <group> Optional한 속성 메뉴 아이템을 담고 있는 눈에 안 보이는 컨테이너 역할 활성화 상태나 가시성 속성을 공통으로 적용해 메뉴 아이템을 분류할 수 있게 함

10 android:alphabeticShortcut
2.1 메뉴 메뉴 XML 요소의 대표적 속성 속성 설 명 android:id 메뉴 아이템의 유일한 식별자 소스에서 id를 이용해 접근 가능 android:icon 메뉴 아이템의 아이콘 설정 Drawable 객체의 참조 값으로 사용 android:title 메뉴 아이템의 제목 설정 String객체의 참조 값으로 사용 android:onClick 클릭했을 때 호출돼야 하는 메소드 이름 한 개의 MenuItem만 파라미터로 넘겨받을 수 있게 해야 함 onOptionsItemSelected()보다 먼저 수행 android:alphabeticShortcut 단축키를 지정하는 속성 숫자로 설정해야 함 android:checked 기본적으로 메뉴 아이템을 체크해야 한다면 속성은 true 메뉴 리소스 인플레이팅 소스 코드안에서 메뉴 리소스를 사용하려면 MenuInflater.inflate()메소드 사용 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.option_menu, menu); return true; }

11 2.2 메뉴의 종류 #1 옵션 메뉴 사용자가 메뉴 버튼을 터치했을 때 나타나는 기본적인 메뉴
메뉴 아이템이 여러 개가 모여 있는 구조 안드로이드 3.0이상 부터는 액션바(Action Bar)에서 빨리 접근할 수 있는 메뉴 제공 -> 액션아이템(Action Item) 안드로이드 2.3이하에서는 스크린 하단에 위치 , 안드로이드 3.0이상에서는 옵션 메뉴는 액션 바에 위치

12 2.2 메뉴의 종류 #2 컨텍스트 메뉴 컨텍스트 메뉴 사용법
윈도우 운영체제에서 마우스 오른쪽 버튼을 클릭했을 때 나타는 메뉴라고 보면 됨 뷰를 롱 클릭했을 경우 컨텍스트 메뉴가 나타남 주로 리스트 뷰(ListView)에서 사용 컨텍스트 메뉴 사용법 뷰를 ‘등록’하는 절차 수행 - registerForContextMenu(View) 호출 2) 컨텍스트 메뉴의 모양과 동작정의 - OnCreateContextMenu() 와 onContetItemSelected() 메소드 오버라이드

13 2.2 메뉴의 종류 #3 서브 메뉴 메뉴안에서 특정 메뉴 아이템을 선택했을 때 나타나는 메뉴
사용자가 메뉴 아이템을 선택해 하위로 더 열 수 있는 구조의 메뉴 서브 메뉴는 자기 자신에 서브 메뉴를 붙일 수는 없음 메뉴에 너무 많은 기능들이 들어가야 하는 경우에 사용하면 좋음

14 3. 고급 뷰와 위젯

15 3.1 날짜 피커(Date Picker) 날짜를 선택할 수 있는 위젯
년,월,날짜를 스피너 나 캘린더 뷰(Calendar View)를 이용해 출력 DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); this – context : 이 객체를 생성한 글로벌 정보를 담고 있고, 해당 Activity객체를 넣어줌 mDateSetListener – DatePickerDialog.OnDateSetListner : 리스너 객체 mYear, mMonth, mDay : 날짜 변수들

16 3.2 프로그레스 바 작업의 진행상황을 비주얼하게 보여줌
예) 스트리밍이 재생되는 중간 진행상황을 보여주는 경우 , 다운로드시 진행상황 보여주는 경우 new Thread(new Runnable() { public void run() { while (mProgressStatus < 100) { doWork(); mHandler.post(new Runnable() { mProgress.setProgress(mProgressStatus); progress_progress.setText("progressbar progress is " + mProgressStatus); } }); }).start(); 백그라운드 스레드는 내부적인 연산만 해야 하며 다른 스레드 소속의 UI를 건드릴 수 없다. mHandler객체의 post메소드 호출

17 3.2 프로그레스 바

18 3.3 웹뷰(WebView) 웹뷰 : 웹 페이지를 화면에 보여주는 역할을 수행
3-1) AndroidManifest.xml파일에 인터넷에 접속할 수 있는 권한을 줘야함

19 3.3 웹뷰(WebView)

20 3.3 웹뷰(WebView) 3-2) 레이아웃 XML 입력 3-3) 자바파일 소스 수정
<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 3-3) 자바파일 소스 수정 WebView mWebView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webviewmain); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl(" }


Download ppt "제4강 노티피케이션,메뉴,고급위젯 안드로이드 앱 개발 강좌."

Similar presentations


Ads by Google