Android Application 애플리케이션 위젯.

Slides:



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

3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Android Tutorial 안드로이드 SDK 설치 및 기초 프로그래밍 강좌입니다 서울대학교 네트워크 융합 및 보안 연구실 권 윤
이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다.
IT CookBook, Android Studio 를 활용한 안드로이드 프로그래밍 Copyright© 2015 Hanbit Academy, Inc. All rights reserved. 14. 서비스와 브로드캐스트 리시버.
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
CHAP 22. 블루투스.
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
액션바와 네비게이션
CHAP 19. 구글맵.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java Seminar 6.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
CHAP 24. nfc와 앱위젯.
Lesson 5. 레퍼런스 데이터형.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
CHAP 11. 액티비티와 인텐트.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
14. 서비스와 브로드캐스트 리시버 제목. 14. 서비스와 브로드캐스트 리시버 제목.
7주차 Android Application.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
CHAP 8. 그래픽.
자바 5.0 프로그래밍.
Lesson 7. 클래스와 메소드 - 1.
CHAP 13. 네트워크.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
CHAP 12. 리소스와 보안.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
자바응용.
CHAP 13. 방명록 만들기 실습.
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
CHAP 13. 서비스와 방송 수신자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
Power Java 제11장 상속.
3강_레이아웃-I 화면구성 요소 뷰에 대한 이해 LinearLayout Lecturer Kim Myoung-Ho
Tween Animation 천승현.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
3. 모듈 (5장. 모듈).
CHAP 11. 리소스와 보안.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
CHAP 5. 메뉴와 대화상자.
7 생성자 함수.
Presentation transcript:

Android Application 애플리케이션 위젯

애플리케이션 위젯 애플리케이션 위젯은 안드로이드 홈 스크린에 보이는 시계, 액자, 음악 컨트롤 등을 지칭하는 이름이다. 보통 그냥 위젯이라고도 한다. 크기는 위젯 개발 시에 지정해줄 수 있다. 위젯을 개발함에 있어 주의해야 할 것 중 가장 중요한 것은 위젯을 위해 사용할 수 있는 뷰 클래스가 졍해져 있다는 것이다. 위젯에 사용할 수 있는 레이아웃 클래스 FrameLayout, LinearLayout, RelativeLayout 위젯에 사용할 수 있는 뷰 클래스 AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar, TextView, ViewFlipper, ListView, GridView, StackView, AdapterViewFlipper

애플리케이션 위젯 위젯의 구성요소 애플리케이션 위젯의 구성 및 크기 그리고 작성 방법 애플리케이션 위젯을 생성하기 위해서는 기본적으로 세 개의 요소가 필요하며, 이 위젯을 등록하거나 설정을 변경해야 한다면 추가적인 액티비티도 필요. 위젯의 구성요소 AppWidgetProviderInfo 클래스 애플리케이션 위젯의 모양 및 크기 그리고 갱신 주기 등을 다루는 클래스. /res/xml에 XML로 작성. AppWidgetProvider 클래스 애플리케이션의 동작을 정의하는 클래스다. 이 클래스를 상속하는 자바 클래스를 생성해서 위젯의 상태(업데이트, 활성화, 비활성화, 삭제)에 따른 동작을 정의하면 된다. 뷰 레이아웃 위젯의 모양을 XML로 정의하면 된다. 이 XML은 /res/layout에 저장하면 되고 레이아웃을 작성할 때는 px 단위를 쓰지 말아야 하며, 최대한 dp로 작성하고 비율을 분할해야 하는 경우에는 layout_weight 속성을 사용해야 한다. 위젯의 모양 위젯은 위젯을 감싸고 있는 프레임과 이 프레임을 감싸고 있는 바운딩 박스로 구성되어 있다. 또한 프레임 내에 있는 위젯의 내부를 위젯 컨트롤이라고 한다.

애플리케이션 위젯 /res/layout/activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:orientation="vertical" > <TextView android:id="@+id/text" android:gravity="center" android:text="시간" android:textColor="#000000" /> </LinearLayout>

애플리케이션 위젯 /res/xml/time_appwidget_provider.xml <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/activity_main" android:minHeight="60dp" android:minWidth="60dp" android:updatePeriodMillis="0" > </appwidget-provider> 매초마다 위젯의 시간을 갱신해야하기에 updatePeriodMillis 속성에 1000을 지정해서 1초마다 AppWidgetProvider가 호출되게 한다. 하지만 updatePeriodMillis는 지정한 시간을 항상 보장하지 않으므로 우리가 원하는 결과를 얻기 힘들다 1초마다 시간을 갱신하기 위해서는 자바의 Timer와 TimerTask 클래스를 사용해야 한다.

애플리케이션 위젯 /src/com/example/appwidgetclock/MainActivity.java package com.example.appwidgetclock; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.widget.RemoteViews; public class MainActivity extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Timer timer = new Timer(); timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000); } MainActivity 클래스에는 위젯의 내용을 갱신하기 위해 호출되는 onUpdate() 메소드와 매초마다 실행되는 TimeTask를 상속하는 MyTime 클래스가 있다. onUpdate() 메소드에서는 Timer 클래스의 scheduleAtFixedRate() 메소드를 사용해서 매초마다 TimerTask를 상속하는 MyTime 클래스가 실행되도록 스케줄해야 한다.

애플리케이션 위젯 /res/xml/time_appwidget_provider.xml private class MyTime extends TimerTask { RemoteViews remoteViews; AppWidgetManager appWidgetManager; ComponentName thisWidget; public MyTime(Context context, AppWidgetManager appWidgetManager) { this.appWidgetManager = appWidgetManager; remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main); thisWidget = new ComponentName(context, MainActivity.class); } @Override public void run() { remoteViews.setTextViewText(R.id.text, getTime()); appWidgetManager.updateAppWidget(thisWidget, remoteViews); // 현재 시간/분/초를 반환하는 메소드 private String getTime() { Calendar now = Calendar.getInstance(); int h = now.get(Calendar.HOUR_OF_DAY); int m = now.get(Calendar.MINUTE); int s = now.get(Calendar.SECOND); return h + ":" + m + ":" + s; MyTime 클래스의 생성자에서 위젯을 표시하기 위한 RemoteViews 객체와 현재 클래스를 나타내는 ComponentName 객체를 생성한다. 위젯을 표시하는 RemoteViews 객체에서는 setTextViewText() 메소드를 호출해서 현재 시간을 설정하고 있다. 현재 시간은 getTime() 메소드가 반환한다. 이렇게 새로운 시간이 설정된 RemoteViews 객체를 AppWidgetManager 클래스의 updateAppWidget() 메소드를 사용해서 위젯을 갱신하면 변경된 시간이 보여진다.

애플리케이션 위젯 AndroidManifest.xml MainActivity 클래스를 리시버로 선언한다. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.appwidgetclock" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/time_appwidget_provider"/> </receiver> </application> </manifest> MainActivity 클래스를 리시버로 선언한다. APPWIDGET_UPDATE 액션을 <intent-filter>에 선언한다. time_appwidget_provider.xml을 <meta-data>에 지정한다.

애플리케이션 위젯

< 참조 > 200개의 단개별 예제로 배우는 안드로이드 4.0 - 제이펍