CHAP 7. 메뉴와 대화상자.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

Application Create Android Side. Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 )
For Android 이재원.  페이스북 SDK 설치  2 가지 예제 & 소스  API 사용 예제 프로젝트 만들기  Graph API  참고사항 & 사이트.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
6 메 뉴.
어서와 Java는 처음이지! 제3장선택과 반복.
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
액션바와 네비게이션
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
CHAP 19. 구글맵.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
04. 기본 위젯 익히기 제목.
Java Seminar 6.
캡스톤 디자인2 최종발표 유경현 김기윤 Team : 너 지금 어디야.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
모바일 서버 만들기 13장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
[INA470] Java Programming Youn-Hee Han
어댑터뷰 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등을 묶어 어댑터 뷰라 부름
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
명품 Java Programming.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
CHAP 8. 그래픽.
주소록 프로그램.
CHAP 6. 이벤트 처리.
안드로이드 테트리스에 필요한 최소 기능.
7장 배열 ①.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
CHAP 12. 리소스와 보안.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
' Strategic Alliance Partner with '
CHAP 3. 첫번째 애플리케이션.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
CHAP 13. 서비스와 방송 수신자.
Chap. 14 성능향상시키기 PS Lab. 이지연.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
JAVA WINDOW PROGRAMMING
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
CHAP 5. 레이아웃.
6장 클래스(상속).
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
CHAP 11. 리소스와 보안.
CHAP 5. 메뉴와 대화상자.
Choi Younghwan CSE HUFS
Presentation transcript:

CHAP 7. 메뉴와 대화상자

메뉴의 종류 옵션 메뉴: 사용자가 MENU 키를 누를 때 나타난다. 컨텍스트 메뉴: 컨텍스트 메뉴는 사용자가 화면을 일정 시간 이상으로 길게 누르면 나타나는 메뉴이다.

옵션 메뉴 현재 액티비티와 관련된 동작

컨텍스트 메뉴 UI의 어떤 항목과 관련된 동작

팝업 메뉴 뷰에 부착된 모달 메뉴(modal menu) API 레벨 11부터 제공 팝업 메뉴의 용도 오버플로우 스타일 메뉴 제공 서브 메뉴의 역할 드롭다운 메뉴

메뉴도 XML로 정의 res/menu.xml 리소스 식별자 아이콘 이미지 메뉴 타이틀 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/icon" android:title="새로운 게임" /> <item android:id="@+id/quit" android:title="취소" /> </menu> 리소스 식별자 아이콘 이미지 메뉴 타이틀

메뉴 팽창 메뉴 리소스를 팽창(inflate)하면 실제 메뉴가 생성

메뉴 리소스 팽창 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }

옵션 메뉴 옵션 메뉴는 액티비티의 옵션을 설정하는 메뉴 버전 3.0이상에서는 MENU 버튼과 액션 바의 2가지 방법으로 옵션 메뉴를 사용할 수 있다.

옵션 메뉴 생성 사용자가 옵션 키를 누르면 다음의 메소드가 호출된 다. @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }

옵션 메뉴 이벤트 처리 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.new_game: Toast.makeText(this, "새로운 게임 선택", Toast.LENGTH_SHORT).show(); return true; case R.id.quit: Toast.makeText(this, "취소 선택", default: return super.onOptionsItemSelected(item); }

컨텍스트 메뉴 사용자가 항목 위에서 “오래 누르기”(long-press)를 하면 컨텍스트 메뉴가 표시 PC에서 마우스 오른쪽 버튼을 눌렀을 때 나오는 메 뉴와 개념적으로 유사

컨텍스트 메뉴 예제 사용자 인터페이스 작성 <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Only I can change my life. No one can do it for me." android:textSize="50px" android:typeface="serif" /> </LinearLayout>

컨텍스트 메뉴 예제 ... public class ContextMenuActivity extends Activity {         TextView text;         @Override         public void onCreate(BundlesavedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.main);              text = (TextView) findViewById(R.id.TextView01);               registerForContextMenu(text);         }

컨텍스트 메뉴 컨텍스트 메뉴는 다음과 같은 메소드가 호출되면서 생성된다. @Override 컨텍스트 메뉴는 다음과 같은 메소드가 호출되면서 생성된다. @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("컨텍스트 메뉴"); menu.add(0, 1, 0, "배경색: RED"); menu.add(0, 2, 0, "배경색: GREEN"); menu.add(0, 3, 0, "배경색: BLUE"); }

실행 결과

컨텍스트 메뉴 이벤트 처리 public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: text.setBackgroundColor(Color.RED); return true; case 2: text.setBackgroundColor(Color.GREEN); case 3: text.setBackgroundColor(Color.BLUE); default: return super.onContextItemSelected(item); }

서브 메뉴 메뉴 안의 메뉴 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/file" android:icon="@drawable/file" android:title="file"> <menu> android:id="@+id/create_new" android:title="new"/> android:id="@+id/open" android:title="open"/> </menu> </item>

코드로 서브 메뉴 생성 기존의 메뉴에 동적으로 서브 메뉴 추가 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); SubMenu sub = menu.addSubMenu("file"); sub.add(0, 1, 0, "new"); sub.add(0, 2, 0, "open"); return true; }

대화 상자 AlertDialog ProgressDialog DatePickerDialog TimePickerDialog

대화 상자 생성, 표시, 제거 메카니즘 public class DialogTestActivity extends Activity { ... protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_PAUSED_ID: return new AlertDialog.Builder(AlertDialogTest.this).create(); } return null; showDialog(DIALOG_PAUSED_ID); ... dismissDialog(DIALOG_PAUSED_ID);

AlertDialog 제목 텍스트 메시지 버튼 (또는 체크박스 목록)

AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("종료 확인 대화 상자") .setMessage("애플리케이션을 종료하시겠습니까?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { AlertDialog2Activity.this.finish(); } }) .setNegativeButton("No", dialog.cancel(); }); AlertDialog alert = builder.create(); return alert;

목록을 사용하는 대화상자 public class AlertDialogTest03 extends Activity { protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_YES_NO_MESSAGE: final CharSequence[] items ={ "Red", "Green", "Blue" }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("색상을 선택하시오"); builder.setItems(items, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();}} ); AlertDialog alert = builder.create(); return alert; } return null; ...

체크박스를 사용하는 대화상자 public class AlertDialogTest03 extends Activity { 체크박스를 사용하는 대화상자 public class AlertDialogTest03 extends Activity { protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_YES_NO_MESSAGE: final CharSequence[] items ={ "Red", "Green", "Blue" }; AlertDialog.Builder builder = new AlertDialog.Builder(this) builder.setTitle("색상을 선택하시오") builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create(); return alert; return null; ...

ProgressDialog ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "",                         "Loading. Please wait...", true, true);

ProgressDialog ... public class AlertDialog4Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b = (Button) findViewById(R.id.Button01); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { ProgressDialog dialog = ProgressDialog.show(this, "", "로딩 중입니다. 기다려주세요.", true, true); // 작업을 한다. //dialog.dismiss(); 작업이 끝나면 dismiss()를 호출 } });

프로그레스바

ProgressBar ... public class AlertDialog5Activity extends Activity {    protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.main);       Button b = (Button) findViewById(R.id.Button01);       b.setOnClickListener(new OnClickListener() {                        public void onClick(View v){               ProgressDialog progressDialog;               progressDialog= new ProgressDialog(AlertDialog5Activity.this);               progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);               progressDialog.setMessage("Loading...");               progressDialog.show();               progressDialog.setProgress(30);                       }       });   }

커스텀 대화 상자 사용자가 마음대로 대화 상자의 내용을 디자인할 수 있는 대화 상자

XML로 대화 상자의 내용을 선언 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="10dp" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_marginRight="10dp" /> <TextView android:id="@+id/text" android:textColor="#FFF" /> </LinearLayout>

커스텀 대화상자 예제 ... public class CustomDialogActivity extends Activity static final int DIALOG_CUSTOM_ID = 0; @Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b = (Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() public void onClick(View v) showDialog(DIALOG_CUSTOM_ID); );

@Override protected Dialog onCreateDialog(int id) { Dialog dialog = null; switch (id) { case DIALOG_CUSTOM_ID: dialog = new Dialog(this); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog"); TextView text = (TextView) dialog.findViewById(R.id.text); text.setText("Hello, this is a custom dialog!"); ImageView image = (ImageView) dialog.findViewById(R.id.image); image.setImageResource(R.drawable.android); break; } return dialog;

실행결과