비디오: 하얀고양이 프로젝트 초반 핵심 가이드! [모바일 게임] 白猫プロジェクト - 기리 2024
여기에 사용 된 Android 앱 예제의 사용자 인터페이스에는 항목 목록, 목록에서 선택된 항목을 설명하는 세부 정보 패널 깊이있는 세부 정보 패널 등이 있습니다. 소형 스마트 폰 화면에서 각 패널은 별도의 활동 일 수 있습니다. 그러나 가로 모드의 태블릿 화면에는 두 개 이상의 패널을위한 공간이 있습니다.
아래 이미지는 세 개의 패널 중 두 개가 표시된 앱입니다. 왼쪽 패널에는 Android SDK 구성 요소 목록이 표시됩니다. 오른쪽 패널에는 왼쪽 목록에서 선택한 구성 요소에 대한 설명이 표시됩니다. 이 설명은 실제로 구성 요소의 SDK 설명서의 처음 몇 문장입니다.이 세부 묘사 패턴은 많은 사용자 인터페이스의 일부입니다.
디스플레이를 만들려면 하나의 활동을 만듭니다. 액티비티에는 왼쪽에 조각이 있고 오른쪽에 조각이 두 개 있습니다. 왼쪽 패널은 앱 실행 중에 동일한 단편을 표시하므로 해당 단편을 활동의 레이아웃 파일에 선언 할 수 있습니다. 오른쪽 패널은 한 번에 하나의 단편을 표시하지만 단편은 앱이 실행되는 동안 변경됩니다. 오른쪽 패널에 프레임 레이아웃을 선언합니다.
궁금한 점이있는 경우 안드로이드의 내장 된 세부 사항 ElementBackground는 오른쪽 절반 (사용자가 선택한 항목에 대한 세부 정보를 표시하는 것)과 같은 항목에 대해 동일한 모양을 제공합니다.
앱의 주요 활동 코드는 인상적입니다.
package com. allmycode. 파편; 안드로이드 가져 오기. 앱. 활동; 안드로이드 가져 오기. OS. 묶음; Public 클래스 AllPurposeActivity는 Activity를 확장합니다. {@Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R.형세. main);}}
아래 코드는 ComponentNamesFragment 클래스를 포함합니다. 첫 번째 예제의 레이아웃 덕분에 Android는 장치 화면의 왼쪽에 ComponentNamesFragment를 작성합니다.
package com. allmycode. 파편; 안드로이드 가져 오기. 앱. FragmentManager; 안드로이드 가져 오기. 앱. FragmentTransaction; 안드로이드 가져 오기. 앱. ListFragment; 안드로이드 가져 오기. OS. 묶음; 안드로이드 가져 오기. 전망. 전망; 안드로이드 가져 오기. 위젯. ArrayAdapter; 안드로이드 가져 오기. 위젯. 목록보기; 공용 클래스 ComponentNamesFragment는 ListFragment를 확장합니다. {final static String [] COMPONENTS = { "Activity", "Service", "BroadcastReceiver", "ContentProvider"}; @Override public void onActivityCreated (번들 savedInstanceState) {super. onActivityCreated (savedInstanceState); @Override public void onListItemClick (ListView l, View v, int index, long id) {// 인덱스가있는 조각 만들기 DocsFragment docsFragment = 새로운 DocsFragment (); 번들 args = 도우미. getBundleWithIndex (index); docsFragment. setArguments (args); // 백 스택을 지 웁니다. FragmentManager fragmentManager = getFragmentManager (); int backStackEntryCount = fragmentManager입니다. getBackStackEntryCount (); for (int i = 0; i ArrayAdapter 생성자의 첫 번째 매개 변수는 컨텍스트입니다. 하지만 기다려! 활동과 달리 단편은 컨텍스트가 아닙니다. 따라서 ArrayAdapter 생성자의 첫 번째 매개 변수에 this 키워드를 사용할 수 없습니다. 다행히 조각에는 getActivity 메소드가있다. getActivity의 호출은 프래그먼트가 첨부 된 활동을 가져옵니다. 따라서 ArrayAdapter 생성자의 첫 번째 매개 변수에 대해 getActivity를 호출 할 수 있습니다. 물론 프래그먼트가 기존 활동에 첨부 될 때까지는 getActivity를 호출 할 수 없습니다. 이것이 프래그먼트의 onActivityCreated 메소드가 오버라이드 된 이유입니다. 안드로이드는 조각을 첨부하고 활동의 onCreate 메소드를 호출 한 후 onActivityCreated를 호출합니다. 모든 것이 계획대로 작동합니다. 안드로이드. 앱. 액티비티 클래스의 조부모 클래스는 안드로이드입니다. 함유량. 문맥. 하지만 안드로이드. 앱. 프래그먼트 클래스의 상위 클래스는 보통 오래된 java입니다. 랭. 목적. 따라서 활동 코드에서 키워드 this는 컨텍스트를 나타냅니다. 그러나 조각의 코드에서 키워드 this는 문맥을 참조하지 않습니다. 위의 예에서 ArrayAdapter의 생성자에는 세 개의 매개 변수가 있습니다. 첫 번째 매개 변수는 컨텍스트입니다.이 매개 변수는 생성자를 onActivityCreated 메소드 안에 넣도록합니다. 두 번째 매개 변수는 표준 Android 레이아웃 인 simple_list_item_1입니다. simple_list_item_ 1 레이아웃은 이미지의 왼쪽에 보이는 모양을 만듭니다. Android에는 이러한 표준 레이아웃이 많이 있습니다. 사용 가능한 레이아웃을 모으려면 Android 개발자 사이트를 방문하십시오. 세 번째 매개 변수는 목록에 나타날 항목의 모음입니다. 이 예에서 해당 항목은 동일한 예에서 선언 된 COMPONENTS 배열에서 가져온 것입니다. ListActivity와 마찬가지로 ListFragment에는 onListItemClick 메서드가 있습니다. DocsFragment, FragmentTransaction 및 FragmentManager로 작업하여 클릭에 응답 할 수 있습니다. DocsFragment는 위 이미지의 오른쪽을 나타냅니다. 프래그먼트 트랜잭션은 프래그먼트로 수행하는 일들의 묶음입니다. 예를 들어 하나의 조각을 다른 조각으로 교체하도록 설정하는 것은 트랜잭션입니다. 조각 관리자는 이름에서 알 수있는 것을 수행합니다. 파편의 도착과 출발을 관리합니다.
위 코드의 클래스는 Android의 ListFragment 클래스를 확장합니다. ListFragment는 목록을 표시하는 조각입니다. 프래그먼트의 라이프 사이클 초기에 위 코드의 코드는 프래그먼트의 목록 어댑터 (특히 ArrayAdapter)를 설정합니다. 그렇다면 조기에 "초기에"얼마나 빠릅니까?