Android Android-UI (DMI) Kang GiHoon. DMI--Kang Gihoon Android UI.

Slides:



Advertisements
Similar presentations
Android Tutorial 안드로이드 SDK 설치 및 기초 프로그래밍 강좌입니다 서울대학교 네트워크 융합 및 보안 연구실 권 윤
Advertisements

일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
제 2 강 프로젝트 구성과 View 안드로이드 앱 개발 강좌. 목 차목 차목 차목 차 목 차목 차목 차목 차 안드로이드 프로젝트 구성 2 에뮬레이터 사용법 3 버전과 screen size 4 5 Hello World 앱 작성하기 1 View 와 ViewGroup.
삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
11 주차 진행상황 컴퓨터학 종합설계 – 1 조 팀장 박세범 팀원 조대영 팀원 진주영 팀원 김민화 T.O.D.A.Y app.
Android Activity & View & Layout
6 메 뉴.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
New MapTool manual Kim Dong-Sung.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
.Net Web Application 2010 컴퓨터공학실험(Ⅰ)
최윤정 Java 프로그래밍 클래스 상속 최윤정
CHAP 6. 이벤트 처리.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
어댑터뷰 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등을 묶어 어댑터 뷰라 부름
CHAP 7. 메뉴와 대화상자.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
KHS JDBC Programming 4 KHS
UNIT 05 신문 만들기 로봇 SW 콘텐츠 연구원 조용수.
IE사용시 KOTRA 홈페이지 회원가입 및 사업신청에 어려움이 있으신 고객님을 위한 해결방법 안내
CHAP 12. 리소스와 보안.
Slice&link.
인터넷응용프로그래밍 JavaScript(Intro).
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
홍익대학교 메일 시스템 구축 그룹웨어 메일 이전 하기.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
CHAP 5. 레이아웃.
Smart Workplace 개발자 가이드
2 보안 1 도구 윈도우 XP > 온밀크 프로그램 설치 장애 (보안 설정) / 품목추가 깨질 때 장애증상
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Achro-5250, IMX6 안드로이드 어플리케이션.
윈도우 컨트롤.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
Open4U 공급업체 접속 방법 Open4U 시스템 신규 접속 방법 메인 화면 및 로그인 하기 초기 비밀번호 변경하기
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
데이터 동적 할당 Collection class.
05. 레이아웃 익히기 제목.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
메뉴(Menu) 컴퓨터응용 및 실습 I.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
12 그리드 시스템.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
웹과 모바일 홈페이지의 이해와 제작 폰트_레이아웃
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어드민 로그인 ID : admin 비밀번호 : 서보테크 1. 제품소개 등록 - MISUBISHI
05. 레이아웃 익히기 제목. 05. 레이아웃 익히기 제목 레이아웃의 개념을 익힌다. 화면을 다양한 레이아웃으로 구성한다. Java 코드만으로 화면을 작성해본다.
CHAP 5. 메뉴와 대화상자.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

android Android-UI (DMI) Kang GiHoon

DMI--Kang Gihoon Android UI

DMI--Kang Gihoon Android UI 구성요소  View 를 기준으로 파생되어 각 Widget 과 ViewGroup 을 구성한다.  Widget 은 button 등과 같이 단독 view 이다.  ViewGroup 의 ListView 등은 하나이상의 view 로 구성된 view 들의 집합이다.  ViewGroup 의 Layout 은 포함하고 있는 View 에 대한 배치에 대한 정책들을 가지고 있다. TextView, EditText, Button, CheckBox, RadioButton 다른 View 들을 포함하는 상위 클래스 ListView, GridView, Gallery,Sppener,ScrollView 등 LinearLayout,FrameLayout, RelativeLayout,TableLayout AlertDialoge, ProgressDialogue OptionMenu ContextMenu

DMI--Kang Gihoon Android UI – View 생성  android 에서 UI 디자인은 주로 xml 형태로 구성된다.  xml 로 구성된 각 내용은 차후 객체화 되어 android 내부의 구별된 id 정보를 바탕으로 application 내에서 참조된다.  R.layout.main : res 의 layout 디렉토리의 xml 파일의 파일 참조  R.id.button1 : res 의 layout 디렉토리의 xml 파일내의 widget id 참조  Button button = (Button)findViewById(R.id.Button01);  물론 Application 내에서 동적으로 각 view 의 객체를 생성 할 수도 있다.  Inflator 를 통해 xml 로 구성된 view 파일을 동적으로 생성 할 수 있다.  Button button = new Button(context);

DMI--Kang Gihoon Android UI - Widget  View class 에서 상속된 Class 중에 ViewGroup 을 상속하지 않는 클래스를 지칭 ViewGroup 제외한 각 class 의 subclass  TextView  Button  EditText  CheckBox  RadioButton ....

DMI--Kang Gihoon Android UI - TextView  Text 를 표현해주는 View  텍스트를 편집 할 수 없음. 속성 내용 text 보여줄 텍스트 lines 높이가 두줄 textSize12px width, height TextView 넓이 / 높이 autoLink 텍스트뷰에 포함된 URL, 전화번호, 지리적주소등 표현 web/ /phone/map/all (all 일 경우 모두 자동링크 ) background 등..

DMI--Kang Gihoon Android UI - Button  기본적인 Text Button  View 에서 상속받은 onClick 이벤트 발생을 통해 어떤 일을 수행. 속성 /Event 내용 text 버튼의 텍스트 gravity 버튼내의 텍스트의 정렬 (top,bottom,left,right) onClick 버튼이 Click 했을때 이벤트 callback 처 리

DMI--Kang Gihoon Android UI – Button 의 종류  기본 Button 외 ImageButton / CheckBox/ RadioButton 등 Button 의 종류 내용 Button 텍스트버튼 oncClick 이벤트 Checkbox onClick 이벤트 isChecked() RadioButton onCheckedChanged 이벤트 isChecked() * 보통 RadionGroup 안에서 표현되어 사용 되어짐 *radioGroup.group.getCheckedRadioButtonId() => 그룹중에 checked 된 아이디. ImageButton 이니지를 표시할 수 있는 버튼 onClick 이벤트 setImageResource() 및 setImageBitmap() 등을 통해 버튼이미지 변경가능. ToggleButton On/Off 상태 표시 버튼 onClick 이벤트 isChecked()

DMI--Kang Gihoon Android UI – Layout  View 의 배치에 대한 정책들을 담고 있다.  ViewGroup 으로 부터 파생된 5 가지 Layout 을 사용  Layout 하위에 Layout 을 만들수 있는 계층구조 가능  보통 XML 형식으로 layout 을 디자인 하여 layout 다자이너와 개발자를 분리 한다. Layout 의 종류 내용 LinearLayout 수평 또는 수직적으로 view 들을 일렬로 배열 View 들간 상호 겹침 불가능 RelativeLayout 상위 view 들을 참조하여 상대적으로 배치 View 들간 상호 겹침가능 AbsoluteLayout 좌표를 이용한 배치거의 사용안함. FrameLayout 안드로이드의 기본 layout 으로 view 들을 frame 으로 관리 View 상호 겹침 가능 TableLayout Row/Column 형태의 Table 형태로 View 들을 배치 View 상호 겹침 불가능

DMI--Kang Gihoon Android UI – LinearLayout  담고 있는 view 들을 수평 또는 수직으로 일괄 배열  orientation = “vertical” : 수직으로 배열  orientation = “horizontal” : 수평으로 배열 <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="URL" android:paddingTop="15px" android:paddingRight="10px" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OK" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Cancel" /> vertical horizontal

DMI--Kang Gihoon Android UI – Relative Layout  각 view 에 대한 상대 위치 정보로 view 들을 배치  xml 의 상위 View 들은 하위 View 들의 객체를 참조 할수 없음.  View 들간의 overlay 가능. [false/true 값을 가지는 값 : 부모 컨테이너 내부에서 위치 결정 ][ 기준 컨테이너를 참조하여 배열 ]

DMI--Kang Gihoon Android UI – Relative Layout <RelativeLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5px" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="URL" android:paddingTop="15px" android:paddingRight="10px" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OK" /> <Button android:layout_width="80px" android:layout_height="wrap_content" android:text="Cancel" />

DMI--Kang Gihoon Android UI – Table Layout  TableRow 가 행분리 기준  TableRow 안의 View 의 항목의 수가 cloumn 의 수  각 row 는 가장 많은 column 을 기준으로 정렬된다.  첫번째 row, 첫번째 column 은 index 는 0 부터 시작한다. 속성 내용 [TableLayout] stretchColumns 컬럼의 크기를 늘리고자 할 때 사용 ex) stretchColumns = “*” => 모든 컬 럼에 적용. [TableLayout] shrinkColumns 테이블 크기가 컨테이너의 크기를 넘어갈때 특정 컬럼 또는 여러개, 전체 컬럼의 사이즈 를 줄일때 사용 (,) 로 구분하여 복수개 컬럼 지정가능 전체 컬럼대상일 경우 * 사용 [Column Widget] layout_span 해당 column 을 몇개까지 확장 할 것인가를 나타냄 (css 의 colspan 가 비슷한 개념.) [Column Widget] layout_column 배치하려는 column 번호를 나타냄 ex) 2 이면 해당 위젯을 3 번째 컬럼부터 배 치 stretchColumns = * layout_span = 2 layout_column = 2

DMI--Kang Gihoon Android UI – Frame Layout  왼쪽상단을 기준의 모든 view 들이 overlay  일반적으로 View 들을 동적으로 보였다 안보였다 할 경우 사용.  ex) Progress 진행 상태 View 보여주고 없어짐. <FrameLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:text = " 뭐시여 " android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="ex) name" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="~~~~~~~~~ 또겹친다요." /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 나도 겹치자." />

DMI--Kang Gihoon Android UI – Menu  Activity 상에서 Menu 버튼을 클릭했을때 나타내는 메뉴  메뉴는 크게 Option 메뉴 와 Context 메뉴로 구성됨.  xml 로 메뉴파일 정의 가능 : res > menu 폴더 생성 후 menu 관련 xml 파일 생성 메뉴 옵션 내용 OptionMenu *Menu 버튼 Click 시 하단에 나타남 *onOptionsItemSelected () 에서 메뉴 생성 *onOptionsItemSelected() : event 처리 ContextMenu *registerForContextMenu(view) 를 등록하고 해 당 view 를 길게 터치했을 경우 발생 *menuitem 의 checkable 속성으로 checkbox 출력 여부 표시 *onCreateOptionsMenu() 에서 메뉴생성 *onContextItemSelected() : event 처리 [OptionMenu] [ContextMenu] <menu xmlns:android=" <item android:title=" 안녕하세요.?" android:checkable="true" android:checked="false"/> <item android:title=" 아따 안녕하신가 ?" android:checkable="true" android:checked="false"/> Menu xml 정의

DMI--Kang Gihoon Android UI – Dialog AlertDialog ProgressDialog[Time/Data]Dialog

DMI--Kang Gihoon Android UI – Dialoge  Dialoge 의 종류 Dialoge 내용 AlertDialog 대부분 Dialgoue UI 제공 Title / Text Message One, Two, or Three Buttons List of Selectable Items(Optional Checkboxes, or Radio Buttons) [ 버튼생성 순서 ] setPositiveButton() setNeutralButton() setNegativeButton() [back 버튼 눌러도 안 닫히게 할려면 ] AlertDialg.Builder serCancelable (boolean cancelable) => false ProgressDialogProgress Wheel or Progress Bar DatePickerDialog 날짜 설정 TimePickerDialog 시간설정 [Dialoge 보이기 ] showDialog(int id) [Dialoge 보이기 ] showDialog(int id) [Dialoge 생성 ] onCreateDialog (int id) onPrepareDialog() [Dialoge 생성 ] onCreateDialog (int id) onPrepareDialog() * showDialoge 의 id 에 따라 onCreateDialoge 에서 생성 * 실제 dialoge 생성시 onPrepareDialog() 를 호출 여기서 다이얼로그 상태 변경시 처리 가능 [Dialoge 안보이기 / 삭제 ] dismissDialog(int id) removeDialog(int id) [Dialoge 안보이기 / 삭제 ] dismissDialog(int id) removeDialog(int id) [Activity]

DMI--Kang Gihoon Android UI – ListView (AdapterView)  ViewGroup 의 하위 클래스의 비어 있는 컨테이너  ListAdapter 를 통해 데이터와 데이터를 표현한 View 를 셋팅한다.  ListAdapter 의 하위 클래스등를 사용하여 Adapter 세팅.  ArrayAdapter : 단순한 텍스트 view 리스트 표현  SimpleAdapter : xml 형태로 정의된 view 들을 ArrayList 의 내부 map 형태를 가진 data 와 매핑.  SimpleCursorAdapter : xml 형태로 정의된 view 들을 데이터베이스 cursor 형태의 data 와 매핑. Dialoge 내용 ListView 생성 ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_single_choice, datas); listView.setAdapter(adapter) ; ListView 이벤트 OnItemClickListener() Callback 구현 => onItemClick() : 리스트중 선택된 row 가 클릭되었을 경우 발생. Adapter 데이터 표현기본 내장된 android view 사용하여 데이터 표현 가능.

DMI--Kang Gihoon Android UI – Custom ListView  기존 Adapter 를 상속하여 CustomAdapter 구현  기존 ArrayAdapter 등을 상속하여 실제 row 를 보여줄때 호출하는 getView() 함수 재정의.  추상 class 인 BaseAdapter 를 상속하여 CustomAdapter 구현  getCount() / getItem() / getItemId() / getView() 함수 재정의  CustomAdapter 는 사용자 정의의 view 를 담당할 xml 파일과 view 에 해당하는 Data 를 매핑 <LinearLayout xmlns:android =" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"> getView() String[] datas = {"SM3","SM5","SM7","SONATA","AVANTE","listView"}; Integer[] images = {R.drawable.car1,R.drawable.car2,R.drawable.car3,R.drawable.car4,R.drawable.car5,R.drawable.car6}; [View] [Datas] Adapter

DMI--Kang Gihoon Android UI – Gallery (AdapterView)  ImageView 의 List 를 표현하는 컨테이너  BaseAdapter 를 상속을 통해 ImageAdapter 표현  Gallery 내의 액자 표현을 위해 각 imageView 마다 android:galleryItemBackground 배경 설정.

DMI--Kang Gihoon Android UI – WebView  WebPage 를 표현하는 View  local 페이지 및 원격 URL 페이지 호출.  페이지내의 javascript 및 link 제어 가능  *AndroidManifest.xml 파일에 인터넷 연결 permission 설정  메뉴 옵션 내용 loadUrl(String url) * 외부 페이지 호출 loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl) *local html 페이지 내용 WebView 에 적용 setWebViewClient(WebViewClient webviewClient) WebViewClient 상속을 통해 특정 html 파일 컨트롤 -ex) href=“tel:010~” 링크를 전화걸기로 연결 가능. => shouldOverrideUrlLoading() setWebChromeClient(WebChromeCl ient webChromeClient) WebChromeClient 상속을 통해 크롬 브라우저 의 이벤트 처리 ex) javascript 으 alert ㄱ 방생 했을 경 우등. 클릭시 전화걸기 화면으로 이동

DMI--Kang Gihoon Android UI – Thread  android 에서 main thread 가 5 초정도 응답없을 경우 ANR (Application Not Response) 오류메시지 발생  네트웍 자원등 오래 걸리는 작업을 위해 Thread 사용 필수  안드로이드 UI 컨트롤은 안드로이드 내부 UI 쓰레드 메커니즘에 의해 관리 ( 큐잉방식 )  사용자 정의 Thread 에서 안드로이드 view 직접 컨트롤시 에러발생  사용자 정의 Thread 는 Handler 또는 View 의 post() 를 통해 view 컨트롤 해야함. View 사용자 정의 Thread 사용자 정의 Thread UI Thread [Message Queue ] Handler

DMI--Kang Gihoon Android UI – Thread 사용자 정의 Thread 사용자 정의 Thread Handler Thread worker = new Thread(new Runnable() { public void run() { Message msg = null; for(nProgress = 0; nProgress<=100; nProgress+=10) { msg = handler.obtainMessage(); //Handler 에게 메시지 전달 handler.sendMessage(msg); } }); handle = new Handler() // 사용자 정의 Thread 에서 받은 데이처 처리 public void handleMessage(Message msg) { textView.setText(“OK”); } };  Handler 객체의 생성은 사용자 thread 외부 에서 생성 해야함.  사용자 Thread 는 handler.sendMessage(msg) 를 통해 Handler 에게 Message 전송  Handler 는 handleMessage(Message msg) 를 통해 Message 전달 받음.  handler.obtainMessage() 는 Handler 에서 세팅된 메시지 값을 전달 받은 Message