36. 사용자의 특성에 따라 주요 사용기능을 다르게 반영하거나 상호작용 방식이 차별화될 수 있는 모바일 기기의 특성은 무엇인가? (4점)
① 접근성(reachability)
② 개인화(personalization)
③ 유비쿼터(ubiquity)
④ 보안(security)
정답: 2
해설: 개인화(personalization)는 사용자의 취향과 행동을 분석하여 맞춤형 서비스를 제공하는 것을 의미한다. 예를 들어, 추천 시스템이나 사용자 인터페이스의 커스터마이징 등이 있다. 접근성은 사용자가 서비스에 얼마나 쉽게 접근할 수 있는지를 나타내고, 유비쿼터는 언제 어디서나 네트워크에 접근할 수 있는 능력을 말하며, 보안은 데이터를 안전하게 보호하는 것을 의미한다. 따라서 개인화는 사용자의 특성에 맞춘 주요 사용기능의 차별화와 직접적으로 관련된다.
37. 모바일 어플리케이션 및 서비스의 종류로서 증강현실을 이용한 사례로 볼 수 있는 것은? (4점)
① 실시간 SNS 서비스
② e-북 어플리케이션
③ AR 코드를 통한 부가 정보 제공 서비스
④ 네비게이션 서비스
정답: 3,4
해설: 증강현실(AR)은 현실 세계에 디지털 정보를 겹쳐서 보여주는 기술이다. AR 코드를 통한 부가 정보 제공 서비스는 사용자가 카메라를 통해 특정 코드를 스캔하면 추가 정보를 제공하는 서비스이다. 네비게이션 서비스는 AR을 사용하여 실제 도로 위에 방향 지시 등을 표시할 수 있다. 실시간 SNS 서비스와 e-북 어플리케이션은 증강현실과 직접적인 관련이 없다.
38. 안드로이드 플랫폼의 구성 요소로서 자바의 가상머신(virtual machine)과 동일한 기능을 제공하고 있으며, 자바 플랫폼, 자바 SE 표준 라이브러리가 포함된 것은? (4점)
① 달빅(Dalvik)
② 어플리케이션 프레임워크(application framework)
③ 코어 라이브러리(Core library)
④ 네이티브 라이브러리(Native library)
정답: 1
해설: 달빅(Dalvik)은 안드로이드에서 사용되던 가상 머신으로, 자바의 가상 머신(JVM)과 유사한 기능을 제공한다. Dalvik은 자바 바이트코드를 실행하며, 자바 SE 표준 라이브러리를 포함한다. 어플리케이션 프레임워크는 안드로이드 앱을 개발하기 위한 구조를 제공하고, 코어 라이브러리와 네이티브 라이브러리는 각각 기본적인 자바 클래스와 네이티브 코드 실행을 지원한다.
39. 이클립스에서 안드로이드 어플리케이션을 개발할 수 있도록 제공되는 개발툴이며, 안드로이드 프로젝트를 생성하거나 디버깅할 경우에 사용되는 것은? (4점)
① JDK
② AVD
③ 안드로이드 SDK
④ ADT 플러그인
정답: 4
해설: ADT 플러그인(Android Development Tools)은 이클립스 통합 개발 환경(IDE)에서 안드로이드 애플리케이션을 개발하기 위해 제공되는 플러그인이다. ADT 플러그인은 안드로이드 프로젝트의 생성, 디버깅, 패키징, 디플로이 등의 다양한 개발 활동을 지원한다. JDK는 자바 개발 키트로 자바 애플리케이션을 개발하는 데 필요하며, AVD는 안드로이드 가상 디바이스로 에뮬레이터를 실행하는 데 사용된다. 안드로이드 SDK는 안드로이드 개발 도구와 API 라이브러리를 포함하지만, 이클립스에서 사용하기 위해서는 ADT 플러그인이 필요하다.
40. 안드로이드 플랫폼에서 액티비티의 생명 주기중 포커스는 잃었지만 사용자에게는 보이는 상태로서 살아있는 상태와 같지만 시스템에 의해 강제 종료될 수 있는 상태는 무엇인가? (4점)
① 실행 상태
② 일시 정지 상태
③ 정지 상태
④ 실행 준비 상태
정답: 2
해설: 일시 정지 상태는 액티비티가 사용자에게 보이지만 포커스를 잃은 상태를 말한다. 사용자는 다른 액티비티와 상호작용할 수 있지만, 현재 액티비티는 여전히 화면에 보인다. 이 상태에서는 시스템 리소스가 부족할 경우 강제 종료될 수 있다. 실행 상태는 포커스를 가지고 사용자와 상호작용하는 상태이며, 정지 상태는 사용자에게 보이지 않고 백그라운드에 있지만 데이터는 유지하는 상태이다. 실행 준비 상태는 실행을 준비하는 단계로, 위의 상황에 해당하지 않는다.
41. 백그라운드 알림인 통지(Notification)의 설명으로 틀린 것은? (3점)
① 통지 영역을 확장하여 표시할 수 있으며, 구체적인 내용의 표시까지 가능하다.
② 타이틀 바의 왼쪽 칸을 이용하며, 이 영역을 ‘상태영역’이라고 한다.
③ 잠깐 보이는 토스트(Toast)와는 달리 사용자가 확인하기 전까지 계속 표시된다.
④ 상태 영역을 아래로 드래그하여 확장하여 통지 상세 정보를 확인할 수 있다.
정답: 1,2
해설: 통지(Notification)는 알림 바의 오른쪽에 위치한 아이콘을 통해 확인할 수 있다. 상태 영역은 전체적인 시스템 상태를 나타내는 영역으로, 타이틀 바의 왼쪽 칸이 아닌 오른쪽 칸에 통지가 표시된다. 통지는 확장하여 구체적인 내용을 표시할 수 있으며, 사용자가 확인하기 전까지 계속 표시된다. 또한 상태 영역을 아래로 드래그하여 통지 상세 정보를 확인할 수 있다.
42. 통지의 동작 및 관리 방법을 지정하는 플래그(flag)의 설명으로 틀린 것은? (3점)
① FLAG_AUTO_CANCEL : 사용자가 아이콘을 탭하면 자동으로 통지를 취소한다.
② FLAG_INSISTENT : 취소하거나 상태 영역을 확장하기 전까지 소리를 계속 발생시킨다.
③ FLAG_NO_CLEAR : 사용자가 ‘clear all’을 선택할 때 취소한다.
④ FLAG_SHOW_LIGHTS : 이전에 취소된 통지라도 매번 소리와 진동을 발생시킨다.
정답: 4
해설: FLAG_AUTO_CANCEL은 사용자가 통지를 클릭하면 자동으로 통지가 사라지도록 설정한다. FLAG_INSISTENT는 사용자가 취소하거나 상태 영역을 확장하기 전까지 소리를 계속 발생시킨다. FLAG_NO_CLEAR는 사용자가 'clear all'을 선택해도 통지가 사라지지 않도록 설정한다. FLAG_SHOW_LIGHTS는 통지가 활성화될 때마다 소리와 진동을 발생시키지만, 이전에 취소된 통지에 대해서는 소리와 진동을 반복하지 않는다. 따라서 4번이 틀린 설명이다.
43. 토스트(Toast)보다 복잡한 메시지를 전달할 수 있는 대화상자에 대한 설명으로 틀린 것은? (3점)
① 대화상자 빌더 객체의 생성후, 빌더의 메소드를 통해 대화상자의 여러 가지 설정을 초기화한다.
② setMessage(...), setTitle(...), setIcon(...) 메소드를 통해 대화상자의 메시지, 타이틀 바의 문자열, 아이콘을 지정한다.
③ create() 메소드를 통해 대화상자를 생성하고 이를 화면에 표시한다.
④ 인수로 콘텍스트(context)를 전달하는데 대화상자를 생성하는 부모 액티비티를 전달한다.
정답: 3
해설: 대화상자를 생성할 때, create() 메소드는 대화상자를 단순히 생성하는 역할만 한다. 이를 화면에 표시하려면 show() 메소드를 호출해야 한다. 즉, 대화상자를 생성한 후에 이를 화면에 표시하기 위해서는 create()가 아니라 show() 메소드를 사용해야 한다. 따라서, create() 메소드를 통해 대화상자를 화면에 표시한다는 설명은 틀렸다. 나머지 선택지는 모두 올바른 설명이다.
44. 어댑터 뷰에 대한 설명으로 틀린 것은? (3점)
① 리스트 뷰는 여러 가지 선택 사항 중 하나를 선택받을 경우에 사용된다.
② 표시할 항목 데이터를 어댑터 객체로부터 공급받는다.
③ 리니어 뷰나 갤러리뷰 같이 배치만 담당하는 레이아웃과는 달리 사용자와 상호 작용도 처리할 수 있다.
④ 어댑터 뷰들은 항목에 해당하는 여러 개의 차일드 뷰를 가질 수 있다.
정답: 1
해설: 리스트 뷰(ListView)는 단일 선택뿐만 아니라 다중 선택도 지원하는 다양한 항목을 표시할 수 있는 뷰이다. 리스트 뷰는 항목을 선택할 수 있는 기능을 제공하며, 표시할 항목 데이터는 어댑터 객체로부터 공급받는다. 리니어 뷰나 갤러리 뷰와 달리, 리스트 뷰는 배치뿐만 아니라 사용자와 상호작용도 처리할 수 있다. 어댑터 뷰는 여러 개의 차일드 뷰를 가질 수 있는 점에서 틀리지 않다. 따라서, 리스트 뷰가 단일 선택만을 위한 것이라는 설명은 틀렸다.
45. 다음 설명에 해당하는 것은 무엇인가? (3점)
안드로이드 응용 프로그램을 구성하는 주요 컴포넌트의 하나이며, 사용자와의 인터페이스를 구성하기는 하지만 그 자체는 출력 기능이 없다.
① 그리드
② 인텐트
③ 뷰
④ 액티비티
정답: 4
해설: Activity는 사용자가 앱과의 상호작용을 수행하는 가장 기본적인 주요 컴포넌트이다. 액티비티는 사용자와의 인터페이스를 구성하지만 그 자체는 출력 기능이 없으므로 직접 보이지는 않고 통로 역할만 한다. 액티비티 자체는 사용자에게 보여지는 수단이 아니라, 안드로이드 앱을 관리하기 위한 단위이다. 사용자에게 실제로 보이는 것은 View이며, 액티비티는 반드시 내부에 View나 ViewGroup을 가져야한다. 액티비티가 생성될 때마다 호출되는 setContentView() 메소드가 액티비티 안에 View를 화면에 출력하는 기능을 한다.
46. 액티비티끼리 서로 호출하기 위해 필요한 통신을 지원하기 위한 장치 혹은 메세지 전달 방법은 무엇인가? (3점)
① 뷰어댑터
② 인텐트
③ 서브 액티비티
④ 그리드
정답: 2
해설: 안드로이드에서 액티비티 간의 통신을 위해 인텐트(Intent)를 사용한다. 인텐트는 애플리케이션의 구성 요소 간에 작업을 수행하거나 데이터를 전달하기 위한 메시징 객체이다. 인텐트를 통해 다른 액티비티를 호출하거나 서비스를 시작할 수 있으며, 데이터 전달을 위해서도 사용된다. 뷰어댑터는 뷰와 데이터를 연결하는 역할을 하며, 서브 액티비티는 액티비티의 일종으로 독립된 기능을 갖춘다. 그리드는 데이터를 격자 형태로 배치하는 레이아웃을 의미한다. 따라서 액티비티 간의 통신을 지원하는 방법으로 인텐트가 맞다.
47. 입력을 위한 getAction 메소드의 키보드 동작에 대한 리턴값의 설명으로 틀린 것은? (3점)
① ACTION_DRAW : 키를 밑으로 내렸다.
② ACTION_DOWN : 키를 눌렀다.
③ ACTION_UP : 키를 뗐다.
④ ACTION_MULTIPLE : 같은 키를 여러 번 눌렀다.
정답: 1
해설: 키보드 터치 동작으로 다음과 같은 동작을 정의한다. ACTION_DOWN은 키를 누른 상태이다. ACTION_UP은 키를 누른 후 뗀 상태이다. ACTION_MULTIPLE은 동일한 키를 여러 번 누른 상태이다. 1번은 정의되지 않은 동작이다.
48. 안드로이드 플랫폼 환경에서 이벤트를 처리하는 방법으로 특정 이벤트가 발생했을 때 자동으로 호출되는 메소드에 이벤트 발생시의 동작을 정의하는 방법은 무엇인가? (3점)
① 리스너 인터페이스 구현 방법
② 액티비티를 통한 리스너 구현 방법
③ 뷰를 통한 리스너 구현 방법
④ 콜백 메소드 재정의 방법
정답: 4
해설: 안드로이드에서 이벤트가 발생했을 때 이를 처리하기 위해서는 콜백 메소드를 재정의하는 방법이 주로 사용된다. 콜백 메소드를 통한 이벤트 처리는 이벤트가 발생하면 자동으로 호출되어 실행되는 콜백 메소드를 재정의하는 방법이다. 예를 들어, 사용자가 버튼을 클릭했을 때 호출되는 onClick() 메소드, 액티비티의 생명 주기 동안 호출되는 onCreate(), onStart(), onResume() 등의 메소드가 있다. 이 콜백 메소드들은 이벤트가 발생할 때 시스템에 의해 자동으로 호출되며, 해당 메소드 내에서 이벤트에 대한 동작을 정의할 수 있다. 리스너 인터페이스는 이벤트를 처리하기 위해 구현할 수 있는 방법 중 하나지만, 여기서 말하는 '콜백 메소드 재정의'는 보다 직접적이고 명확한 방식이다. 액티비티나 뷰를 통한 리스너 구현은 특정 컨텍스트에 맞게 이벤트 처리를 수행할 수 있는 방법이지만, 가장 일반적인 이벤트 처리 방식은 콜백 메소드의 재정의이다.
49. 부모 레이아웃의 남은 영역을 얼마나 차지할 것인가를 결정하는 비율값을 정의하는 속성은 무엇인가? (3점)
① padding_layout
② margin_layout
③ baselineAligned
④ layout_weight
정답: 4
해설: layout_weight 속성은 안드로이드 레이아웃에서 자식 뷰가 부모 뷰의 남은 공간을 얼마나 차지할 것인지 비율로 정의하는 속성이다. 예를 들어, LinearLayout에서 두 자식 뷰가 각각 layout_weight가 1인 경우, 두 뷰는 부모 뷰의 남은 공간을 동일하게 나누어 차지한다. padding_layout과 margin_layout은 존재하지 않는 속성이고, baselineAligned는 레이아웃에서 자식 뷰들의 기준선 정렬을 위한 속성이다.
50. 액티비티 리스너 구현을 통한 이벤트 처리 방법에 대한 설명이 아닌 것은? (3점)
① 모든 이벤트에 대한 확장성의 문제로 인해 몇 가지 이벤트에 대해서만 사용할 수 있다.
② 리스너가 구현된 뷰는 액티비티에 강하게 종속된다.
③ 재사용을 위해 액티비티가 구현하는 리스너를 분리하여 다른 액티비티로 옮겨야 한다.
④ 뷰와 관련된 메소드가 뷰 자신에게 포함되어 있지 않고 부모가 구현해주기 때문에 독립성이 떨어진다.
정답: 1
해설: 리스너 인터페이스를 통해 이벤트를 처리하는 방식은 매우 유연하며 다양한 이벤트를 처리할 수 있다. 특정 몇 가지 이벤트에만 사용할 수 있다는 설명은 잘못되었다. 리스너가 구현된 뷰는 액티비티에 종속되며, 재사용을 위해서는 리스너를 분리하여 다른 액티비티로 옮길 수 있다. 또한, 뷰와 관련된 메소드가 뷰 자신이 아닌 부모 액티비티에 의해 구현되면 독립성이 떨어질 수 있다. 따라서, 1번 설명이 틀렸다.
51. 그리기에 대한 속성정보를 가지는 객체이며 new 연산자로 생성하면 디폴트 속성으로 생성되며, 속성을 조절하는 메소드를 호출하여 원하는 대로 수정 가능한 객체는 무엇인가? (2점)
① CustomView 객체
② Canvas 객체
③ Paint 객체
④ Circle 객체
정답: 3
해설: Paint 객체는 그리기 속성을 가지며, new 연산자로 생성할 때 디폴트 속성으로 생성된다. Paint 객체는 색상, 스타일, 글꼴 등 다양한 그리기 속성을 설정할 수 있는 메소드를 제공하며, 이러한 속성을 통해 그리기 작업을 커스터마이즈할 수 있다. CustomView 객체는 사용자가 정의하는 뷰 클래스이고, Canvas 객체는 그리기 작업을 위한 클래스지만 속성 정보를 저장하지 않는다. Circle 객체는 안드로이드의 기본 클래스가 아니다. 따라서, Paint 객체가 정답이다.
52. 패딩과 마진에 대한 설명으로 틀린 것은? (2점)
① 뷰의 입장에서 볼 때 패딩은 바깥 여백이고 마진은 안쪽 여백이 된다.
② 패딩은 뷰 자체의 속성이지만 마진은 레이아웃의 속성이다.
③ 패딩은 뷰의 내부이므로 크기에 포함되지만 마진은 포함되지 않는다.
④ 마진은 뷰와 부모 사이에 적용되면 패딩은 뷰와 내용물 사이에 적용된다.
정답: 1
해설: 패딩은 뷰의 내부 여백으로, 뷰의 경계와 내용물 사이의 간격을 지정하는 속성이다. 따라서 패딩은 안쪽 여백이 되고, 크기에 포함된다. 반면 마진은 뷰의 외부 여백으로, 뷰와 부모 뷰 사이의 간격을 지정하는 속성이므로 바깥 여백이 된다. 또한 패딩은 뷰 자체의 속성이고, 마진은 레이아웃의 속성이다. 따라서 1번 설명이 틀리다.
53. ImageView 객체의 속성에 대한 설명으로 틀린 것은? (2점)
① maxHeight/maxWidth : 이미지가 출력될 최대 크기를 지정한다.
② adjustViewBounds : 이미지의 종횡비를 맞추기 위해 ImageView의 크기를 적당히 조정할 것을 지정한다.
③ cropToPadding : 이미지에 색조를 입히는 속성이다.
④ scaleType : 이미지의 원래 크기와 다르게 출력할 때 적용될 이미지 확대 및 축소 알고리즘을 지정한다.
정답: 3
해설: cropToPadding 속성은 이미지의 경계가 패딩 영역을 침범하지 않도록 설정하는 속성으로, 이미지가 패딩에 의해 잘리지 않도록 한다. 이는 색조를 입히는 속성이 아니다. 나머지 옵션들은 모두 올바르게 설명하고 있다. maxHeight/maxWidth는 이미지의 최대 크기를 지정하고, adjustViewBounds는 종횡비를 맞추기 위해 이미지 뷰의 크기를 조정하며, scaleType은 이미지의 확대 및 축소 알고리즘을 지정한다.
54. View 객체의 속성으로 틀린 것은? (2점)
① focusable : 숨겨지지만 자리는 차지할 수 있는 특성을 지정한다.
② padding : View와 내용물간의 간격을 지정한다.
③ background : View의 배경을 채우는 방법을 지정한다.
④ layout_width/layout_height : View의 폭과 높이를 지정한다.
정답: 1
해설: focusable 속성은 뷰가 포커스를 받을 수 있는지 여부를 지정하는 속성이다. 포커스를 받을 수 있도록 설정하면 사용자가 뷰와 상호작용할 수 있다. 이는 뷰가 숨겨지지만 자리를 차지할 수 있는 특성을 지정하는 것이 아니다. 나머지 속성들은 모두 올바르게 설명하고 있다. padding은 뷰와 내용물간의 간격을 지정하고, background는 뷰의 배경을 채우는 방법을 지정하며, layout_width와 layout_height는 뷰의 폭과 높이를 지정한다.
55. 안드로이드 플랫폼 환경에서 다음과 같은 내용을 갖는 파일은 무엇인가? (2점)
.....
<application android:icon =“@drawable/icon”
android:label=“@string/app_name”>
<activity android:name =“.HelloActivity”
android:label=“@string/app_name”>
<intent-filter>
<action android:name=“android.intent.action.MAIN”/>
<category android:name=“android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
.....
① AndroidManifest.xml
② string.xml
③ main.xml
④ R.java
정답: 1
해설: 주어진 XML 내용은 안드로이드 애플리케이션의 구성 요소를 정의하는 AndroidManifest.xml 파일의 일부이다. 이 파일은 애플리케이션의 패키지 정보, 구성 요소(액티비티, 서비스, 리시버 등), 권한 등을 설정하는 중요한 파일이다. application 태그는 애플리케이션의 전역 속성을 정의하며, activity 태그는 애플리케이션의 각 액티비티를 정의한다. intent-filter는 액티비티가 응답할 수 있는 인텐트를 지정한다. string.xml은 문자열 리소스를 정의하고, main.xml은 레이아웃 파일이며, R.java는 리소스 ID를 포함한 자동 생성 파일이다. 따라서 정답은 1번이다.
56. 다음 코드가 출력하는 화면 형태는 무엇인가? (2점)
public class SpinnerTest extends Activity {
ArrayAdapter<CharSequence> adspin;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spin = (Spinner)findViewById(R.id.myspinner);
spin.setPrompt("과일을 고르세요.");
adspin = ArrayAdapter.createFromResource(this,
R.array.fruits, android.R.layout.simple_spinner_item);
adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adspin);
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SpinnerTest.this, adspin.getItem(position) + "는 맛있다.", Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
① 어댑터 뷰
② 스피너
③ 리스트 뷰
④ 그리드
정답: 2
해설: 주어진 코드는 안드로이드에서 Spinner를 사용하는 예제이다. Spinner는 드롭다운 목록을 제공하여 사용자가 항목을 선택할 수 있게 하는 위젯이다. 코드에서 Spinner에 어댑터를 설정하고, ArrayAdapter를 통해 문자열 배열을 Spinner에 연결하고 있다. 사용자가 항목을 선택하면 Toast 메시지를 통해 선택된 항목을 표시한다. 어댑터 뷰는 Spinner, ListView 등을 포함하는 더 일반적인 개념이고, 리스트 뷰와 그리드는 각각 목록과 격자 형태의 항목을 표시하는 뷰이다. 따라서 이 코드는 Spinner를 출력하는 예제이다.
57. 리스너 인터페이스 구현에 사용되는 리스너와 메소드가 아닌 것은? (2점)
① View.OnClickListener : void onClick (View v)
② View.OnLongClickListener : boolean onLongClick (View v)
③ View.OnFocusChangeListener : void onFocusChange (View v, boolean hasFocus)
④ boolean onTrackballEvent (MotionEvent event)
정답: 4
해설: 안드로이드에서 이벤트 처리를 위해 리스너 인터페이스를 구현할 때, 각 리스너 인터페이스는 특정한 메소드를 제공한다. View.OnClickListener는 onClick(View v) 메소드를 제공하여 클릭 이벤트를 처리하고, View.OnLongClickListener는 onLongClick(View v) 메소드를 제공하여 길게 클릭하는 이벤트를 처리한다. View.OnFocusChangeListener는 onFocusChange(View v, boolean hasFocus) 메소드를 제공하여 포커스 변경 이벤트를 처리한다. 반면에 onTrackballEvent(MotionEvent event)는 리스너 인터페이스에 속하는 메소드가 아니라, View 클래스의 메소드이다. 따라서 4번이 리스너 인터페이스와 메소드 조합에 대한 설명으로 틀린 것이다.
58. 다음 XML코드의 실행 결과로 옳은 것은? (2점)
<?xml version =“1.0” encoding=“utf-8”?>
<LinearLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:orientation=“vertical”
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
>
<TextView
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:text=“정렬 테스트”
android:textSize=“30px”
android:textColor=“#00ff00”
android:layout_gravity=“center”
/>
</LinearLayout>
정답: 3
해설: 이 XML 코드는 `LinearLayout`을 사용하고 있으며, `orientation` 속성이 "vertical"로 설정되어 있다. `TextView`의 `layout_width`와 `layout_height`가 모두 `fill_parent`로 설정되어 있어 전체 부모 뷰를 채운다. 그러나 `layout_gravity` 속성은 `LinearLayout`에서 유효하지 않으며, 대신 `gravity` 속성을 사용해야 한다. 결과적으로 `TextView`는 부모의 크기를 채우고 텍스트는 기본적으로 왼쪽 상단에 정렬된다. 따라서 정답은 `3`이다.
59. 다음 소스 코드에 대한 설명으로 틀린 것은? (2점)
package kr.CallActivity;
import android.app.Activity;
public class CallActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.callactivity);
Button btnCall=(Button)findViewById(R.id.call);
btnCall.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(CallActivity.this, SubActivity.class);
startActivity(intent);
}
});
}
}
① 액티비티를 호출할 때 startActivity 메소드를 사용하였다.
② 모든 코드가 다 구현되었으므로 Call 버튼을 누르면 액티비티가 실행된다.
③ 인수로 호출할 대상을 지정하는 Intent 객체를 전달한다.
④ Subactivity를 매니페스트 파일에 저장해야 한다.
정답: 2, 4
해설: 2번 설명은 틀리다. 모든 코드가 다 구현되었지만, Call 버튼을 누르면 SubActivity가 실행된다. 따라서 "Call 버튼을 누르면 액티비티가 실행된다"는 설명은 모호하며, 정확하게는 "SubActivity가 실행된다"고 해야 맞다.
4번 설명은 일부 맞지만 불완전하다. SubActivity를 매니페스트 파일에 추가해야 하는 것은 맞지만, 단순히 저장하는 것으로는 충분하지 않다. 매니페스트 파일에 액티비티를 등록하여 시스템이 이를 인식하고 사용할 수 있도록 해야 한다. 즉, `<activity android:name=".SubActivity" />`와 같은 형식으로 등록해야 한다. 따라서 설명이 정확하지 않다.
60. 다음과 같은 차일드 뷰의 구조를 출력하기 위해 필요한 orientation 속성값은 무엇인가? (2점)
① vertical
② horizontal
③ aligned
④ wrap_content
정답: 1
해설: 주어진 그림은 세 개의 버튼이 수직으로 정렬된 모습을 보여준다. 이러한 레이아웃을 만들기 위해서는 `LinearLayout`의 `orientation` 속성을 "vertical"로 설정해야 한다. `vertical` 속성은 자식 뷰들을 수직으로 배열하는데 사용된다. `horizontal` 속성은 자식 뷰들을 수평으로 배열하는 데 사용되고, `aligned`와 `wrap_content`는 적절한 `orientation` 속성값이 아니다. 따라서, 정답은 1번 "vertical"이다.
'방통대' 카테고리의 다른 글
방통대 모바일프로그래밍 2016-1 출석수업대체시험 문제 및 해설 다운로드 (0) | 2024.06.01 |
---|---|
방통대 모바일 앱 프로그래밍 기말시험 2013년도 1학기 문제 및 풀이 다운로드 (0) | 2024.06.01 |
방통대 모바일앱프로그래밍 2011학년도 2학기 기말고사 기출문제 풀이 및 정답 다운로드 (1) | 2024.06.01 |
방통대 기말고사 대비 이산수학 연습문제 빠짐없이 모음 및 완벽 해설 (돌발퀴즈) (0) | 2024.05.29 |
방통대 인공지능 2017-2 기출문제 및 풀이 다운로드 (0) | 2024.05.21 |