도전과제 25 단말의 앨범에 있는 사진들을 가져와 리스트로 보여주는 기능을 만들어 보세요. 앨범에 있는 사진들은 내용 제공자를 이용해 가져올 수 있습니다. 앨범에 저장된 사진을 가져와 사진 리스트를 표시합니다. 앨범에 들어 있는 사진은 내용 제공자(Content Provider)를 사용해 가져옵니다. 리싸이클러뷰의 한 아이템에는 사진 썸네일(Thumbnail) 이미지와 날짜를 표시합니다. 리싸이클러뷰의 위쪽에는 전체 사진의 개수를 표시합니다. 참고할점 단말의 사진 앱으로 사진을 찍으면 앨범에서 볼 수 있습니다. 앨범 앱을 사용하지 않고 여러분이 만든 앱에서도 앨범에 저장된 사진을 보여줄 수 있습니다. 풀이 이전 도전과제 18번 앨범의 사진을 번갈아 보여주기에서 리싸이클러뷰로 보여주기만 하면 되어서 간단하..
도전 24 패널에 빨간색 사각형을 만든 후 손가락으로 터치하여 드래그하면 사각형이 손가락과 함께 움직이도록 만들어 보세요. 화면에는 패널 하나가 보이도록 한 다음 이 패널 안에 빨간색 사각형을 하나 그려 넣습니다. 화면이 처음 띄워졌을 때 빨간색 사각형이 보이는 위치는 화면의 가운데 또는 좌측 상단으로 지정합니다. 손가락을 터치하여 움직이면 빨간색 사각형이 손가락의 움직임에 따라서 이동하도록 만듭니다. 참고할 점 손가락으로 터치하여 선을 그렸던 것과 같은 원리로 소스 코드를 구성하면 됩니다. 풀이 메인 레이아웃은 그냥 빈 레이아웃에 터치하여 움직이라는 글자만 배치하였다. 이제 이 레이아웃에 뷰를 그리는데, 이 뷰 안에서 빨간 버튼을 움직이도록 할 것이다. RedButton이라는 View를 상속하는 객체를..
도전17 : 패널을 번갈아가며 보여주기 고객 정보를 보여주는 두 개의 패널을 만들고 각 패널을 번갈아가면서 보여주도록 애니메이션을 적용해 보세요. 애니메이션은 우측에서 좌측으로 이동하도록 적용할 수 있습니다. 고객 정보를 보여주는 패널 화면을 구성합니다. 패널은 두 개를 만들고 한 번에 하나의 패널이 보이도록 합니다. 패널 위쪽에는 고객 이름, 그 아래에는 연락처와 주소가 간단하게 보이도록 합니다. 패널을 하나씩 보여주되 5초 간격으로 다음 패널이 보이도록 애니메이션을 적용합니다. 애니메이션은 오른쪽에서 왼쪽으로 이동하는 애니메이션을 적용합니다. 참고할점 오른쪽에서 왼쪽으로 움직이는 애니메이션 동작을 우선 res/anim 폴더 안에 xml 파일로 정의한 후 패널에 적용시킵니다. 풀이 우선 anim 폴더에..
도전과제 13 사용자가 고객 정보를 간단하게 입력하고 버튼을 누르면 리싸이클러뷰에 추가되도록 해 보세요. 리싸이클러뷰에 하나의 아이템을 추가하는 기능입니다. 고객 정보를 입력할 수 있고 고객 정보 리스트가 표시되는 화면을 만듭니다. 화면의 위쪽에는 각각 이름, 생년월일, 전화번호를 입력할 수 있도록 입력상자 세 개를 만듭니다. 입력상자 아래에는 [추기] 버튼을 만들어서 버튼을 누르면 리싸이클러뷰에 아이템이 추가되도록 합니다. 화면 아래쪽에는 리싸이클러뷰를 표시합니다. 리싸이클러뷰에 들어가는 각각의 아이템은 고객 정보를 표시하며 아이콘, 이름, 생년월일, 전화번호가 표시되도록 합니다. 참고할 점 리싸이클러뷰에 새로 추가된 아이템을 보여주기 위해서는 리싸이클러뷰의 데이터를 관리하는 어댑터에 아이템을 추가해야..
도전과제 09 고객 정보 입력 화면을 프래그먼트로 만들어 보세요. 이 화면은 고객의 이름, 나이, 생년월일을 입력받기 위한 것입니다. 프래그먼트로 고객 정보 입력 화면을 만들어 액티비티에 넣어줍니다. 프래그먼트의 레이아웃에는 리니어 레이아웃이나 상대 레이아웃을 사용하고 그 안에 이름과 나이를 입력받는 입력상자, 생년월일을 표시하는 버튼 그리고 [저장] 버튼을 배치합니다. 생년월일을 표시하는 버튼에는 오늘 날짜를 자동으로 표시하며, 버튼을 누르면 [날짜 선택] 대화상자를 띄우고 날짜를 입력받아 표시합니다. 이름을 넣을 수 있는 입력상자에는 문자열을, 나이를 입력받기 위한 입력상자에는 숫자를 입력할 수 있도록 설정하여 적당한 키패드를 띄우도록 하고 나이는 세 자리까지만 입력할 수 있게 만듭니다. [저장] 버..
도전과제 06 시크바와 프로그레스바를 표시하고 시크바의 값을 바꾸었을 때 프로그래스바의 값도 바뀌도록 만들어 보세요. 화면에 시크바와 프로그레스바, 그리고 입력상자를 배치합니다. 시크바의 값을 바꾸면 프로그레스바의 값도 바뀌도록 합니다. 시크바의 값을 바꾸었을 때 그 값이 입려상제에 표시되도록 합니다. 프로그래스바는 막대형을 사용합니다. 참고할 점 시크바의 값이 바뀔 때 그 값을 알려주는 콜백 메서드를 사용합니다. 시크바의 값이 바뀔 대 그 값을 프로그래스바와 입력상제에 설정합니다. 풀이 우선 메인 화면을 LinearLayout으로 설정한 후 상단에 시크바, 프로그레스바, 텍스트창을 삽입했다. 메인 액티비티에서 SeekBar Listener내의 onProgressChanged 메소드에서 프로그레스바와 텍..
도전과제 05 두 개의 버튼을 화면에 추가하고 버튼 모양을 각각 다르게 보이도록 만들어 보세요. 화면에 두 개의 버튼을 배치합니다. 첫 번째 버튼의 모양은 가장자리에 경계선만 보이도록 하고 경계선과글자색이 동일하도록 만듭니다. 두 번째 버튼의 모양은 배경색이 있고 모서리는 약간 둥글며 글자가 하얀색이 되도록 만듭니다. 참고할 점 드로어블 객체를 만들어 버튼의 배경으로 설정하면 버튼의 모양을 만들 수 있습니다. 드로어블을 XML로 정의할 때 버튼의 모양이 결정됩니다. 풀이 버튼 모양은 drawable 폴더에 두 개의 xml 파일로 정의하였다. 먼저 첫번째 버튼은 stroke를 사용하여 테두리를 주황색으로 만들었다. 두 번째 버튼은 Radius속성을 조절하여 둥글게 만들었다. 이후 버튼의 background..
도전과제 04 화면 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치해 보세요. MS로 문자를 전송하는 화면은 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치하도록 구성합니다. 텍스트 입력상자 바로 아래에 입력되는 글자의 바이트 수를 '10/80 바이트'와 같은 포맷으로 표시하되 우측 정렬로 하도록 하고 색상을 눈에 잘 띄는 다른 색으로 설정합니다. 텍스트 입력상자에 입력되는 글자의 크기와 줄 간격을 조정하여 한 줄에 한글 8글자가 들어가도록 만들어 봅니다. [전송] 버튼을 누르면 입력된 글자를 화면에 토스트로 표시하여 내용을 확인할 수 있게 합니다. 참고할 점 화면에서 '10/80 바이트'로 된 글자 부분을 가장 위쪽으로 배치합니다. 입력상자에 글자가..
도전과제 03 두 개의 이미지뷰를 한 화면에 보여주고 하나의 이미지를 두 개의 이미지뷰에서 번갈아 보여주도록 만들어보세요 화면을 위와 아래 두 영역으로 나누고 그 영역에 각각 이미지뷰를 배치합니다. 각각의 이미지뷰는 스크롤이 생길 수 있도록 합니다. 상단의 이미지뷰에 하나의 이미지를 보이도록 합니다. 두 개의 이미지 뷰 사이에 버튼을 하나 만들고, 그 버튼을 누르면 상단의 이미지가 하단으로 옮겨져 보이고 다시 누르면 상단으로 다시 옮겨지는 기능을 추가합니다. 참고할 점 이미지를 화면에 보여주기 위해서는 이미지뷰를 사용하며 태그는 를 사용합니다. 스크롤을 만들고 싶다면 뷰를로 감싸줍니다. 풀이 우선 res\layout 디렉토리에 있는 activity_main화면부터 보도록 하겠다.ConstraintLayo..
Comment