안드로이드 앱개발 32

안드로이드 - 크로노미터를 이용한 스톱와치 만들기

Chronometer는 경과 시간을 측정하는 위젯이다. 즉 스톱워치를 만들수 있다는 뜻인데 0.x초는 안되고 1초단위로만 되기 때문에 약간 불편한 감이 있다. void setBase(long base) 이 메소드의 인수는 부팅 후의 경과 시간을 전달하는데 보통 elapsedRealtime 메소드로 경과 시간을 전달한다. start 메소드는 시간 갱신을 시작하고 stop 메소드는 시간 갱신을 중지한다. 그리고 앱이 종료되기전에 반드시 stop을 해줘야 메모리leak이 발생하지 않는다. xml파일은 맨 위에 chronometer를 배치하고 버튼 3개를 배치하였다. 여기서 format="경과시간=%s" 라 되어 있는 부분에서 %s가 실제로 스톱워치가 표시되는 부분이다.(H:MM:SS 형태) acitivity_..

안드로이드 - 날짜 대화상자 시간 대화상자 만들기

XML에서 정의하는 DatePicker와 TimePicker와 동일한 모양으로 원할 때 언제든지 호출하고 싶다면 DatePickerDialog와 TimePickerDialog를 사용하면 된다. 다음 예제를 보면 버튼을 2개 만들어두고 날짜 대화 상자버튼을 누르면 다음과 같이 날짜 대화상자가 나온다. 시간 대화상자를 누르면 시간 대화상자가 나온다. XML 를 보면 단순히 버튼과 텍스트뷰만 배치되어있다. activity_picker_dialog_test.xml파일 눌린 버튼에 따라 다이얼로그를 다르게 만들고 값을 받아서 텍스트뷰에 반영하기 위한 리스너 등록만 간단히 되있는 예제이다. PickerDialogTest.java 파일 package com.example.ch13_pickerdialog; import..

안드로이드 - DatePicker 위젯을 이용한 날짜 입력 받기

사용자로부터 날짜를 쉽게 입력 받으려면 DatePicker 위젯을 사용한다. 년, 월, 일을 각각의 버튼으로 보여주고 아래위의 증감 버튼을 눌러 값을 조정한다. 그리고 크기를 변경해봐야 무의미해서 wrap_content로 지정한다. 속성 설명 startYear, endYear 선택 가능한 년도의 범위를 지정한다. minDate, maxDate 선택 가능한 날짜의 범위를 지정한다. calendarViewShown 달력을 보여줄 것인지를 지정한다. 디폴트는 true이다. spinnersShown 날짜를 선택하는 스피너를 보여줄 것인가를 지정한다. 날짜를 설정하거나 조사할 때는 다음 메소드를 호출한다. void updateDate(int year, int monthOfYear, int dayOfMonth) i..

안드로이드 - 시간을 더욱 세련되게 표현하는 시계 위젯 만들기

안드로이드에서 제공하는 AnalogClock은 시간을 좀더 멋있게 표현할 수 있는 위젯이다. 레이아웃에 배치하면 알아서 잘 동작하기 때문에 예제는 간단하다. 다음은 XML파일이다. AnalogClock과 DigitalClock 위젯만 배치했다. activity_test_clock.xml ClockTest.java package com.example.ch13_clocktest; import android.app.Activity; import android.os.Bundle; public class ClockTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan..

안드로이드 - 날짜 시간 나타내기

현재 날짜와 시간을 구하는 가장 쉬운 방법은 System의 다음 정적 메소드를 사용하는 것이다. static long currentTimeMillis() 이 메소드는 현재 시간값을 정수 하나로 리턴하는데 이 값은 1970년 1월 1일 자정을 기준으로 한 1/1000초 단위 경과시간이다. 에폭 타임 이라고도 한다. 그리고 자바에서 날짜를 구하는 방법은 Date 클래스를 이용하는 방법인데 날짜끼리의 계산하는 기능이 없어서 사용이 권장되지 않는다. Date(int year, int month, int day [, int hour, int minute, int second]) Date(long milliseconds) 실제 프로젝트는 Caldendar 클래스의 서브클래스인 GregorianCalendar를 사용..

안드로이드 - 프로그래스바의 확장형 시크바 (SeekBar) 만들기

프로그래스바는 현재 위치를 보여주기만 하지만 시크바는 사용자가 직접 값을 조정할 수 있다. 사용자가 시크바를 조정하면 이때마다 OnSeekBarChangedListener 인터페이스의 다음 메서드가 호출된다. void onStartTrackingTouch(SeekBar seekBar) void onStopTrackingTouch(SeekBar seekBar) void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 윗 메소드중에 가장 실용적인 것은 onProgressChaged인데 여기서 변경된 위치에 맞게 대상 값을 조정한다. progress 인수는 현재 위치값이며 fromUser인수는 사용자가 직접 드래그해서 변한 것인지 아니면 ..

안드로이다 - 실행 중에 메뉴를 교체하기

메뉴가 완전히 다르다면 실행 중에 아예 메뉴 전체를 통째로 교체할 수 있다. 다음 메소드를 사용하면 다음번 메뉴를 열 때 onCreateOptionsMenu를 다시 호출한다. void invalidateOptionsMenu() 다음은 초보와 전문가 모드일 때 다른 메뉴를 보여주는 예제이다. 다음은 초보자용 메뉴를 만들기 위한 xml파일이다. menu/chobo.xml 다음은 전문가용 메뉴를 만들기위한 xml파일이다. menu/pro.xml 화면에 버튼 2개를 두고 클릭시 메소드를 등록하기 위한 xml파일입니다. layout/activity_change_menu.xml 자바 파일입니다. ChangeMenu.java package com.example.ch9_change_menu; import android..

안드로이드 - 실행 중에 메뉴 편집

메뉴가 열릴때마다 onPrepareOptionsMenu 메소드가 호출되는데 여기서 메뉴를 원하는대로 편집한다. 메뉴를 추가할 때는 add 메소드를 사용하며 삭제, 편집할 때는 다음 메소드를 호출한다. void removeItem(int id) void clear() MenuItem findItem(int id) MenuItem getItem(int index) 바로 실습에 들어가보자. menu_modify.xml 여기서 checkableBehavior 속성 중 all은 모든 항목을 개별적으로 선택할 수 있고 single은 한개만 선택할 수 있다는것을 의미한다. 다음은 화면의 버튼 한 개를 정의하기 위한 activity_menu_modify.xml 파일입니다. 다음은 MenuModify.java 파일입니다..

안드로이드 - 버튼에 팝업메뉴 만들기

팝업메뉴는 컨텍스트 메뉴와 용도가 동일하지만 약간 더 업그레이드된 버전이라고 생각하시면 되겠습니다. 먼저 생성자는 다음과 같다. PopupMenu(Context context, View anchor) 두번째 인수는 팝업 메뉴를 표시할 앵커 뷰를 지정함. 앵커 뷰 아래에 팝업 메뉴가 나타난다. 메뉴와 메뉴 전개자는 다음 메소드를 사용한다 Menu getMenu() MenuInflater getMenuInflater() Menu의 add 메소드로 빈 메뉴에 항목을 추가 할 수도 있고 이전에 해본 방법인 XML로 메뉴를 정의하고 전개자의 inflater 메소드로 메뉴를 만들 수 있다. void show() void dismiss() 위 두 메소드는 메뉴를 보이거나 숨긴다. void setOnMenuItemCl..

안드로이드 - 뷰객체를 롱터치하면 나타나는 컨텍스트 메뉴

컨텍스트 메뉴는 어떤 컴포턴트를 롱 터치를 하게되면 나오는 메뉴를 말한다. 컨텍스트 메뉴를 달고 싶은 뷰는 다음 메소드를 이용해서 등록한다. void Activity.registerForContextMenu(View view) 보통 액티비티의 onCreate 메소드에서 등록하며 여러 개의 뷰를 동시에 등록할 수도 있다. 등록해 놓으면 View.OnCreateContextMenuListener가 액티비티 자신으로 등록되고 뷰 위에서 롱 클릭이 검출되면 다음 메서드를 호출한다. void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) v가 롱클릭이 발생한 뷰를 뜻한다. 컨텍스트 메뉴의 항목을 선택하면 다음 ..

반응형