도전과제 16 주소를 입력하여 웹을 검색하는 웹브라우저 화면을 만들어 보세요. 화면의 위쪽에는 주소를 입력하는 패널이 있고, 이 패널에 주소를 입력한 후 [이동] 버튼을 누르면 사라지게 하여 결과 웹페이지만 보이도록 합니다. 웹페이지를 보여줄 수 있도록 웹브라우저를 포함하는 레이아웃을 구성합니다. 레이아웃을 구성할 때 화면의 위쪽에는 주소를 입력할 수 있는 입력상자와 [이동] 버튼이 들어가도록 패널을 배치합니다. 주소를 입력한 후 [이동] 버튼을 누르면 해당 페이지로 이동하여 웹페이지 화면을 보여주고 상단의 패널은 슬라이딩으로 사라지게 만듭니다. 상단의 패널을 다시 사용하고 싶을 때 패널을 볼 수 있도록 [패널 열기[ 버튼을 배치합니다. [패널 열기[ 버튼을 누르면 상단의 패널이 슬라이딩으로 보이도록 합..
도전과제 15 고객 정보 입력 화면을 만들고 이 화면이 보이거나 사라질 때 애니메이션이 동작하도록 해보세요. 새로운 액티비티를 추가하고 고객 정보 입력이 가능하도록 만듭니다. 고객 정보 입력 화면에서는 이름과 나이, 전화번호를 입력받도록 만듭니다. MainActivity에서 [입력 화면으로] 버튼을 누르면 고객 정보 입력 화면이 보이도록 합니다. 이 과정에서 오른쪽에서 왼쪽으로 나타나는 애니메이션을 적용합니다. 고객 정보 입력 화면에서 [저장] 버튼을 누르면 MainActivity로 돌아오도록 합니다. 이 과정에서도 애니메이션을 적용합니다. 참고할 점 화면 전체에 애니메이션을 적용할 수 있습니다. 풀이 레이아웃은 간단하게 main화면과, 버튼을 누르면 나올 고객정보 입력 창을 만들었다. 애니메이션을 만들..
도전과제 14 격자 형태로 쇼핑 상품을 보여주는 화면을 구성해 보세요. 격자 형태의 뷰에 보이는 각각의 아이템에는 상품의 이미지와 정보가 표시됩니다. 쇼핑 상품을 보여주는 화면을 리싸이클러뷰로 만듭니다.. 리싸이클러뷰의 칼럼은 두 개로 하고 아이템은 가상의 데이터를 사용해 여러 개 입력해둡니다. 각각의 아이템에는 상품 이미지, 상품 이름, 가격, 간단한 설명이 보일 수 있도록 합니다. 리싸이클러뷰의 한 아이템을 터치했을 때 선택된 상품의 이름과 가격을 토스트로 간단하게 보여줍니다. 참고할 점 상단 버튼은 위쪽과 좌, 우의 연결점을 부모 레이아웃과 연결합니다. 하단 버튼은 아래쪽과 좌, 우의 연결점을 부모 레이아웃과 연결합니다. 가운데 버튼의 위쪽 연결점은 상단 버튼의 아래쪽 연결점과 연결합니다. 가운데 ..
도전과제 13 사용자가 고객 정보를 간단하게 입력하고 버튼을 누르면 리싸이클러뷰에 추가되도록 해 보세요. 리싸이클러뷰에 하나의 아이템을 추가하는 기능입니다. 고객 정보를 입력할 수 있고 고객 정보 리스트가 표시되는 화면을 만듭니다. 화면의 위쪽에는 각각 이름, 생년월일, 전화번호를 입력할 수 있도록 입력상자 세 개를 만듭니다. 입력상자 아래에는 [추기] 버튼을 만들어서 버튼을 누르면 리싸이클러뷰에 아이템이 추가되도록 합니다. 화면 아래쪽에는 리싸이클러뷰를 표시합니다. 리싸이클러뷰에 들어가는 각각의 아이템은 고객 정보를 표시하며 아이콘, 이름, 생년월일, 전화번호가 표시되도록 합니다. 참고할 점 리싸이클러뷰에 새로 추가된 아이템을 보여주기 위해서는 리싸이클러뷰의 데이터를 관리하는 어댑터에 아이템을 추가해야..
도전과제 11,12 서비스에서 보낸 메시지를 액티비티 안에서 등록한 브로드캐스트 수신자를 이용해 받도록 만들어 보세요 화면에 버튼 하나와 입력상자 그리고 텍스트뷰를 배치합니다. 버튼을 누르면 입력상자의 글자를 가져와 서비스를 실행하면서 보내줍니다. 서비스에는 다시 브로드캐스팅을 이용해 글자를 보내줍니다. MainActivity 화면에서는 브로드캐스트 수신자를 통해 글자를 전달받습니다. 수신자를 통해 전달받은 글자를 화면에 있는 텍스트뷰에 표시합니다. 참고할점 액티비티 안에서 브로드캐스트 수신자를 등록할 수 있습니다. 액티비티 안의 수신자에서 메시지를 수신하면 그 메시지를 액티비티 안의 텍스트뷰에 표시할 수 있습니다. 풀이 레이아웃은 단순하게 EditText로 메세지를 보내면, 밑에 TextView에 각각..
도전과제 10 바로가기 메뉴와 하단 탭 그리고 뷰페이저가 들어간 기본 앱 화면을 만들어 보세요. 앱의 화면에 바로가기 메뉴와 하단 탭 그리고 뷰페이저가 들어가도록 만들어 보세요. 하단 탭에는 세 개의 탭 메뉴가 보이도록 합니다. 하단 탭에서 첫 번째 탭을 눌렀을 때 보이는 첫 번째 프래그먼트 화면 안에 뷰페이저가 표시되도록 합니다. 그리고 뷰페이저 안에는 이미지나 기타 화면이 2~3개 들어가 있도록 만듭니다. 바로가기 메뉴를 넣어줍니다. 참고할 점 바로가기 메뉴, 하단 탭, 뷰페이저 등이 포함된 구조를 가지는 앱이 많으니 이 위젯들을 모두 포함하는 기본 앱 구조를 만들어 보는 것이 좋습니다. 풀이 res/layout 폴더에 activity_main과 함께 세 개의 프래그먼트와, 프래그먼트 메인, 그리고 ..
도전과제 09 고객 정보 입력 화면을 프래그먼트로 만들어 보세요. 이 화면은 고객의 이름, 나이, 생년월일을 입력받기 위한 것입니다. 프래그먼트로 고객 정보 입력 화면을 만들어 액티비티에 넣어줍니다. 프래그먼트의 레이아웃에는 리니어 레이아웃이나 상대 레이아웃을 사용하고 그 안에 이름과 나이를 입력받는 입력상자, 생년월일을 표시하는 버튼 그리고 [저장] 버튼을 배치합니다. 생년월일을 표시하는 버튼에는 오늘 날짜를 자동으로 표시하며, 버튼을 누르면 [날짜 선택] 대화상자를 띄우고 날짜를 입력받아 표시합니다. 이름을 넣을 수 있는 입력상자에는 문자열을, 나이를 입력받기 위한 입력상자에는 숫자를 입력할 수 있도록 설정하여 적당한 키패드를 띄우도록 하고 나이는 세 자리까지만 입력할 수 있게 만듭니다. [저장] 버..
도전과제 07,08 앱에서 사용될 수 있는 여러 화면을 구성하고 각 화면을 전환하면서 토스트로 메시지를 띄워주도록 만들어 보세요. 로그인 화면과 메뉴화면 그리고 세 개의 서브 화면(고객 관리 화면, 매출 관리 화면, 상품 관리 화면)을 각각 액티비티로 만듭니다. 로그인 화면에는 두 개의 입력상자와 하나의 버튼이 들어가도록 합니다. 메뉴 화면에는 세 개의 버튼이 들어가도록 하고 각각 '고객 관리', '매출 관리', '상품 관리' 라는 이름으로 표시 합니다. 로그인 화면의 [로그인] 버튼을 누르면 메뉴 화면으로 이동합니다. 만약 사용자 이름이나 비밀번호가 입력되어 있지 않은 상태에서 [로그인] 버튼을 누르면 토스트로 입력하라는 메시지를 보여주고 대기합니다. 메뉴 화면의 버튼 중에서 하나를 누르면 해당 서브 ..
도전과제 06 시크바와 프로그레스바를 표시하고 시크바의 값을 바꾸었을 때 프로그래스바의 값도 바뀌도록 만들어 보세요. 화면에 시크바와 프로그레스바, 그리고 입력상자를 배치합니다. 시크바의 값을 바꾸면 프로그레스바의 값도 바뀌도록 합니다. 시크바의 값을 바꾸었을 때 그 값이 입려상제에 표시되도록 합니다. 프로그래스바는 막대형을 사용합니다. 참고할 점 시크바의 값이 바뀔 때 그 값을 알려주는 콜백 메서드를 사용합니다. 시크바의 값이 바뀔 대 그 값을 프로그래스바와 입력상제에 설정합니다. 풀이 우선 메인 화면을 LinearLayout으로 설정한 후 상단에 시크바, 프로그레스바, 텍스트창을 삽입했다. 메인 액티비티에서 SeekBar Listener내의 onProgressChanged 메소드에서 프로그레스바와 텍..
도전과제 05 두 개의 버튼을 화면에 추가하고 버튼 모양을 각각 다르게 보이도록 만들어 보세요. 화면에 두 개의 버튼을 배치합니다. 첫 번째 버튼의 모양은 가장자리에 경계선만 보이도록 하고 경계선과글자색이 동일하도록 만듭니다. 두 번째 버튼의 모양은 배경색이 있고 모서리는 약간 둥글며 글자가 하얀색이 되도록 만듭니다. 참고할 점 드로어블 객체를 만들어 버튼의 배경으로 설정하면 버튼의 모양을 만들 수 있습니다. 드로어블을 XML로 정의할 때 버튼의 모양이 결정됩니다. 풀이 버튼 모양은 drawable 폴더에 두 개의 xml 파일로 정의하였다. 먼저 첫번째 버튼은 stroke를 사용하여 테두리를 주황색으로 만들었다. 두 번째 버튼은 Radius속성을 조절하여 둥글게 만들었다. 이후 버튼의 background..
Comment