2014-06-18 4 views
0

저는 조각을 배우기 시작했고 여러 자습서를 이미 거쳤습니다. 기존 조각을 다른 조각으로 대체하거나 기존 조각을 참조하고 UI 요소를 변경할 수 있다는 사실을 눈치 채 셨습니다. 조각 추가 및 삭제 방법도 있다고 가정합니다.안드로이드에서 자동 조각 선택

하지만 조각을 배우기 시작하기 전에 Android에 일종의 조각 선택 메커니즘이 내장되어 있다고 가정했습니다. 내 앱이 스마트 폰에서 실행되면 기본 화면에 대해 하나의 조각을 선택하고 스 와이프하여 두 번째 조각을 표시합니다. 이것은 일종의 마스터/디테일 뷰를 제공합니다. 그런 다음 태블릿에서 동일한 앱을 실행하면 두 조각이 동시에 표시됩니다.

하지만 분명히 틀림 없습니다. 안드로이드는 아마도 화면 크기를 결정하고 조각을 최적화 된 방식으로 자동 정렬하기위한 정교한 로직을 내장하지 않을 것입니다. 오드가 그랬어? 또는 화면 크기를 감지하고 코드에서 화면 조각 사용을 최적화하는 방식으로 조각을 정렬한다고 가정합니까? 다른 화면 크기가 많으면 각 크기의 레이아웃을 결정하고 적절하게 조각을 정렬하는 데 많은 코드를 작성해야한다고 생각합니다. 이 활동하고 추가 할 때마다의 레이아웃 파일에 당신은 컨테이너가

을 어떻게 작동하는지, 그래서 여기에 좋아

답변

1

에서

더 많은 참조 그런 다음 소스 코드에서 조각 사이의 상호 작용을 조절, 화면 크기에 따라 다른 레이아웃을 정의합니다. 따라서 마스터/세부 사항의 경우 테이블을 처리하는 레이아웃 하나와 휴대폰을 처리하는 다른 레이아웃을 갖게됩니다. Android는 크기에 따라 현재 기기의 레이아웃 파일을 자동으로 선택합니다. 예제를 보려면 Eclipse에서 새 프로젝트를 시작하고 master/detail을 선택하면 설명 된대로 간단한 프로젝트가 생성됩니다. 핸드셋 용

고해상도/레이아웃/main.xml에 :

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- "Fragment A" --> 
    <fragment class="com.example.android.TitlesFragment" 
       android:id="@+id/list_frag" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> </FrameLayout> 

는 화면의 크기에 따라 http://developer.android.com/guide/practices/tablets-and-handsets.html

에서 가져온 다음, 시스템은 다른 main.xml에 레이아웃 파일을 적용합니다

res/layout-large/main.xml (태블릿 용) :

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/frags"> 
    <!-- "Fragment A" --> <fragment class="com.example.android.TitlesFragment" 
      android:id="@+id/list_frag" 
      android:layout_width="@dimen/titles_size" 
      android:layout_height="match_parent"/> 
    <!-- "Fragment B" --> <fragment class="com.example.android.DetailsFragment" 
      android:id="@+id/details_frag" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> </LinearLayout> 
1

는/당신이 컨테이너에 추가 조각을 교체합니다.

이제 두 개의 서로 다른 조각을 태블릿에 나란히 표시하려고합니다. 당신은 단지 두 개의 컨테이너를 포함 할 별도의 XML을 만들고 당신은 아주 쉽게 자바와 함께 그것을 처리 할 수 ​​있습니다. 여기 Android Fragments

+0

예 ,하지만 당신이 말하는 것은 수동으로 현재 화면 크기를 확인하고 올바른 조각 레이아웃을로드해야한다는 것입니다. 결국 안드로이드는 화면 크기 탐지 기능을 내장하고 이에 따라 리소스를 선택합니다. 그렇다면 왜 자동으로 올바른 조각 레이아웃을 선택하지 않을까요? – AndroidDev

+0

@AndroidDev 아니요, 안드로이드가 당신을 대신해줍니다. 문자열의 경우, Values ​​폴더에 String.xml 파일이 있지만 값을 만들 수 있습니다.-lt 폴더에 Strings.xml을 배치하고 모든 경우를 리투아니아어로 변환 할 수 있습니다.이 경우 Android는 자동으로 Lithanian String.xml 파일을로드합니다. 리투아니아어 시스템 언어를 감지합니다. 그것은 아직 화면 크기와 레이아웃과 매우 비슷하지만, 그렇게 많은 즐거움을 아직 누리지 못했습니다. [더 많은 것을 읽으십시오] (http://developer.android.com/guide/practices/screens_support.html) – Marius

관련 문제