Transcript AlertDialog

여러 가지 위젯
1.
2.
3.
4.
5.
ProgressBar, SeekBar
RatingBar
ScrollView
WebView
AlertDialog
ProgressBar
• 작업의 진행 정도를 표시하거나 작업이 진
행 중이라는 것을 사용자에게 보여주는 위
젯
– 원모양
– 막대모양
• 속성
– max, progress(초기값)..
SeekBar
• 프로그래스 위젯을 확장한 서브 클래스
• 사용자가 직접 값을 조정이 가능
실습
1. 시크바와 텍스트뷰 삽입
2. 코드에서
1. 텍스트뷰와 시크바 아이디 참조
2. 시크바에 이벤트처리
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
……………………
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
텍스트뷰.setText("값은 :"+progress);
}
래이팅 바 (RatingBar)
 별점을 표시하거나 입력 받는 위젯으로, 만점을 기준
으로 얼마만큼 점수를 받았는가를 표시한다.
 값을 조정할 수 있으며 읽기 전용 속성을 지원한다.
 영화나 서적 등에 별의 개수로 선호도를 매기는데 이
런 점수 표시 및 입력용으로 흔히 사용된다.
실습
1. 레이팅바와 텍스트뷰 삽입
2. 코드에서
1. 텍스트뷰와 레이팅팅바 아이디 참조
2. 레이팅바에 이벤트처리
레이팅바.setOnRatingBarChangeListener(new
RatingBar.OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
텍스트뷰.setText(“Now Rate : “ + rating);
}
});
래이팅 바 (RatingBar)
 numStar : 만점이 되는 별의 개수
- 임의의 개수 지정 가능. (디폴트 5)
- 별의 개수에 따라 위젯의 폭 결정.
- 레이아웃의 위젯 폭은 반드시 wrap_content로 지정해야 함.
 stepSize : 별점의 조정 단위
- 1 : 별 1개 단위로 점수를 매김
- 0.5 : 별 반개 단위로 점수를 매김
- 0.1 : 정밀히 점수 매김 가능
 rating : 초기 별점 (디폴트 0)
 사용자가 별점을 드래그해 조정하면 OnRatingBarchangeListener 인터
페이스의 onRatingChanged 리스너가 호출되어 변경된 별점을 읽고
처리한다.
ScrollView
• 모바일 장비는 화면이 작아서 많은 내용을 한번에 표
시하기 어렵다. 이럴 때 스크롤이라는 기법을 사용한
다. ScrollView는 수직스크롤 기능을 제공하는 뷰로 프
레임레이아웃의 자식 클래스다. 하지만 리니어레이아
웃이나 테이블레이아웃을 배치하여 많은 위젯을 사용
할 수 있다.
<ScrollView>
<LinearLayout>
위젯
.........
위젯
</LinearLayout>
</ScrollView>
[실습] 스크롤뷰를 실습해 보자.
• 7개의 행을 지정하고 각 행에 텍스트뷰와 Vie
w 위젯을 지정하고 텍스트뷰에는 색의 코드
를, 뷰 바탕에는 색을 지정한다.
<ScrollView>
<TableLayout>
<TableRow>
<TextView android:text="#000000" />
<View android:background="#000000"/>
.....
칼라 색상은 리소
스로 취급한다.
"#000000",
"#440000",
"#884400",
"#008844",
"#ffaa88",
"#ffffaa",
"#ffffff"
WebView 웹뷰
• 웹뷰는 웹페이지를 보여주는 위젯이다. 웹 브라우
저가 제공하는 모든 기능을 자체적으로 제공한다.
• HTML은 간단한 서식을 표현할 수 있으며 이미지
나 도표도 포함할 수 있으므로 다양한 서식이 있는
복잡한 문서 즉, 제품설명서나 도움말 등을 HTML
형태로 저장해 두었다가 웹뷰로 보여주면 가독성
높은 문서를 제공할 수 있다.
•
• 웹뷰를 사용하면 웹페이지를 보이기 위한 새로운
창을 생성하거나 심지어 완전한 브라우저를 개발
할 수 있다.
WebView
WebView 클래스 주요한 메서드
1) loadData(data, mimeType, encoding)
data를 웹뷰에 로딩한다. mimeType은 데이터의 MIME 형식을
나타내며, 디폴트로 "text/html"이다. encoding은 데이터의 인
코딩 형식으로 UTF-8이나 us-ascii 등을 지정한다.
2) loadUrl(url);
url이 명시하는 URL 리소스를 로딩한다.
3) getSetting()
웹뷰와 연관된 설정을 제어하기 위한 WebSettings 객체를 반
환
4) setJavaScriptEnabled(boolena flag) : 자바스크립트의 허용
여부
[실습 1] 웹뷰에 HTML 코드를 표
시하자.
1) 웹뷰를 삽입한다.
2) 자바 소스에 다음의 코드를 삽입한 후 실
행시켜 본다.
WebView web=리소스에서 웹뷰 참조;
web.loadData("<html><body><b>Hong G
ile-Dong </b> Welcome!!!</body></ht
ml>", "text/html", "UTF-8");
[실습 2] 로컬의 웹문서를 로딩한다
[실습 2] 로컬의 웹문서를 로딩한다
1) HTML 파일을 작성하고 작성한 파일은 as
set 폴더에 저장한다. 따라서 웹문서를 만
들어 “asset" 폴더에 저장한다. 한글로 사
용하려면 <meta> 태그를 지정하여 인코
딩을 지정한다.
2) 웹뷰에 loadUrl 메서드를 이용하여 문서
를 불러온다.
** loadUrl("fil:///android_asset/파일이름“)
: 로컬에 있는 웹문서를 불러온다.
[실습3] 웹뷰에 특정 웹사이트 로딩
1) 인터넷을 접근할 수 있도록 매니페스트에
퍼미션을 지정한다.
2) 웹뷰에 loadUrl(url) 메서드를 지정하고, u
rl에 로딩하고자 웹사이트 주소를 지정한
다.
web.loadUrl("http://www.naver.com");
웹 사이트의 페이지를 읽으려면
• 인터넷 액세스를 해야 하므로 특별한 권한
이 필요하다.
• 모바일 장비에서의 인터넷 액세스는 요금
문제와 연관이 있으므로 반드시 사용자의
동의가 필요하다. 따라서 웹을 사용하는
프로그램은 매니페스트에 INTERNET 퍼미
션을 반드시 지정해야 한다.
매니페스트에 INTERNET 퍼미션을
반드시 지정
1) “AndroidManifest.xml”을 연다.
2) [Permissions] 탭을 선택하고 [Add] 버튼
을 클릭한다.
3) 나타난 대화상자에서 [Uses Permission]
을 선택하고 [OK]버튼을 클릭한다.
4. Name 항목에 “android.permission.INTERNE
T” 값을 지정하고 파일을 저장한다.
5. “AndroidManifest.xml” 파일에 <manifest>
태그 안에 인터넷 퍼미션 지정 코드가 삽입
된다. 혹은 코드에 인터넷 연결을 한다는 것
을 명시하는 선언문을 직접 입력해도 된다.
[실습 4]
버튼 클릭
•
•
•
•
[Back]  void goBack()
[forward]  void goForward()
[local]
[go] 
EditText et=(EditText)findViewById(R.id.editText1);
String url=et.getText().toString();
web.loadUrl(url);
web.loadUrl(url)에서…
• 웹뷰는 url를 전달받으면 액티비티 매니저
에게 url를 넘기고, 이 경우 시스템에 등록
된 웹브라우저에서 실행됨
• 애플리케이션의 웹뷰가 실행하게 하려면
웹 클라이언트를 별도로 선언하고 관련 이
벤트를 처리해야 한다.
– WebViewClient 클래스를 상속받은 클래스 작
성
WebViewClient 클래스를 상속받은
클래스 MyWebView
class MyWebView extends WebViewClient {
…. shouldOverrideUrlLoading(WebView view, String
url) {
// 메서드 오버라이딩할 것임
view.loadUrl(url);
return true; // 응용 프로그램에서 처리한다는 뜻
} }
==================================
웹뷰: web.setWebViewClient(new MyWebView());
대화상자
•대화상자는 사용자와 통신하는 장치다.
•사용자에게 메시지를 전달하는 방법, 사용자에게 질문을 하고
응답 결과에 따라 프로그램의 동작을 결정하는 방법 등을 익힌
다.
AlertDialog
 대화상자 생성
 대화상자 : 사용자와 대화를 하는 상자.
 일반적인 대화상자는 Dialog 클래스이지만 사용 방법이 복잡하
여 고수준으로 랩핑된 AlertDialog를 사용한다.
 AlertDialog 생성자가 protected로 숨겨져 직접적으로 생성할 수
없으며 내부 클래스인 Builder를 통해 생성해야 한다.
 빌더의 생성자는 다음과 같다.
• AlertDialog.Builder(Context context)
 대화상자의 메시지, 타이틀 바의 문자열, 아이콘 등 다음 메서드
로 지정한다.
• AlertDialog.Builder setMessage (CharSequence message)
• AlertDialog.Builder setTitle (CharSequence title)
• AlertDialog.Builder setIcon (int iconId)
 대화상자를 보이고 생성하는 메서드는 다음과 같다.
• AlertDialog show ()
• AlertDialog create ()
AlertDialog
클릭하면 대화상자가
나타나도록 한다.
Button b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder bld = new AlertDialog.Builder(*****.this);
bld.setTitle("알립니다.");
bld.setMessage("대화상자를 열었습니다.");
bld.setIcon(R.drawable.icon);
bld.show();
AlertDialog
 대화상자의 버튼
 대화상자에 버튼을 배치할 때는 다음 메서드를 사용하는데 최대 3개까지의 버
튼을 표시할 수 있으며 긍정(Positive), 부정(Negative), 중립(Neutral)으로 각각
이름 붙여 있으며 모두 배치할 경우 왼쪽에서 순서대로 배치된다.
• setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
• setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener)
• setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener)
 인수로는 버튼에 표시할 텍스트와 클릭 리스너로 전달한다.
 버튼의 텍스트는 문자열 상수를 바로 지정할 수 있고 리소스의 문자열 ID를
지정할 수 있다.
 클릭 리스너는 사용자가 이 버튼을 클릭했을 때의 동작을 처리하며, 처리할 내
용이 없으면 onClick 메서드를 정의만 해놓고 본체는 그냥 비워둔다.
AlertDialog
대화상자의 버튼 (실습 예제)
dialog/DialogButton
Button b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder bld = new AlertDialog.Builder(*****.this);
bld.setTitle("알립니다.");
bld.setMessage("대화상자를 열었습니다.");
bld.setIcon(R.drawable.icon);
bld.setPositiveButton("닫기",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
} } );
bld.show();
}
});
AlertDialog
 대화상자의 버튼
 리스너의 onClick 메서드에는 아무 코드도 작성되어 있지 않은데 핸들
러가 비어 있는 버튼은 기본적으로 대화상자를 닫는 동작을 한다.
 대화상자는 기본적으로 장비의 Back 버튼에 대해 닫히도록 되어 있다.
 대화상자가 자체적으로 닫기 버튼을 제공한다면 사용자는 두 가지 방
법으로 대화상자를 닫을 수 있으며, Back 버튼으로 대화상자를 닫지
못하도록 하고 싶다면 다음 메서드를 호출하여 사용한다.
• AlertDialog.Builder setCancelable (boolean cancelable)
 Back 버튼의 용도는 대화상자를 닫는 것뿐만 아니라 액티비티를 닫거
나 화면 키보드를 닫는 용도로도 사용되어 진다.
 전달해야 할 중요한 메시지를 출력할 때는 setCancelable 메서드로
Back 버튼의 사용을 금지시켜야 한다.