2014-03-05 2 views
0

720p 화면에서 잘 작동하는 앱을 작성하고 있습니다. 이 응용 프로그램을 다른 화면 크기로 실행하고 싶습니다. 나는이 기사를 읽었다 : http://developer.android.com/guide/practices/screens_support.html여러 레이아웃을 사용하여 안드로이드에서 여러 화면 크기를 지원합니다.

그러나 나는 혼란 스럽다. 다른 레이아웃 (layout-normal, layout-large, layout-xlarge)에 대해 3 개의 폴더를 만들고 각 폴더에 다른 XML 파일을 배치했습니다. 하지만 레이아웃 정상적인 일부 화면이 있는데 내 앱이 그 중 일부는 좋게 보이고 다른 앱은 좋지 않은 것처럼 보입니다. 예를 들어,이 크기는 일반적인 레이아웃입니다 (4.7 "WXGA, 4"WVGA, 3.7 "WVGA, ...). 그러나 내 앱은 4 인치와 3.7 인치에서 잘 보이고 다른 유형에서는 매우 나 빠져 보입니다.

내 레이아웃 - 일반 폴더에 활동 main.xml에는 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/backasli" 
    android:orientation="vertical" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="100dp" 
     android:paddingTop="140dp" 
     android:stretchColumns="3" > 

     <TableRow 
      android:id="@+id/tableRow6" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" > 

      <TextView 
       android:id="@+id/txt1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="pray :" 
       android:textColor="#031a7b" 
       android:textSize="15sp" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" > 

      <TextView 
       android:id="@+id/namaztxt" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:textColor="#031a7b" 
       android:textSize="20sp" /> 
     </TableRow> 

     <TableRow android:gravity="center" > 

      <Button 
       android:id="@+id/buttonchange" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:background="@drawable/ubtn" 
       android:text="change" 
       android:textColor="#ffffff" 
       android:textSize="20sp" /> 
     </TableRow> 
    </TableLayout> 

</LinearLayout> 
+0

나는 android : paddingBottom = "100dp" android : paddingTop = "140dp"이것은 기기 정렬에 문제가 될 것이라고 생각한다 ?? 그것이 어떻게 표시 감각에 나쁜 ?? – Lokesh

+0

@Lokesh. 정확하게!!! 이 패드들은 문제가 생깁니다 – user2855778

+0

그런 다음 모든 레이아웃에서 화면마다 패딩을 변경하십시오. – Lokesh

답변

2

안드로이드는 다양한 화면 크기를 지원하는 아주 좋은 방법을 제공합니다 그것은 무게라고 당신은을 LinearLayout가중치를 사용하여 그래픽을 확인해야합니다.. 크기를 조정하는 방법을 보려면보기를 클릭하십시오.

Com 철저히 피하십시오 :

  1. 해상도 및 화면 크기를 계산하십시오. 결국 엉망이 될 것입니다.
  2. dpi의 여러 레이아웃.

지금까지 개발 한 모든 응용 프로그램은 모든 플랫폼에서 1 개의 레이아웃 파일로 구성된 가중치를 사용하여 수행되었습니다. 그것은 작동하고 경이로운 것처럼 작동합니다.

편집 :

나는 또한 마진 패딩 및 10dp에 대한 5dp 이상 사용하지 않습니다. 이렇게하면 코드를 깨끗하게 유지하고 Android 가중치를 사용하여 여유 공간을 관리합니다.

무게에 대한 자세한 내용은 this 질문을 확인하십시오. 그것은 정말로 시작부터 잘 설명됩니다.

편집 다시 :

그것에 대해 생각하십시오. 당신은 dp가 모든 전화기에 대해 물리적 인 mm (밀리미터)의 관점에서 "동일"하다고 가정합니다. 그러나 그렇지 않습니다. 사실 X와 Y 1 dp는 "mm"이 다른 것을 의미 할 수 있습니다. dp는 일관성이 없습니다. 100dp와 같은 코드를 사용하고 하드 코딩 된 너비와 높이를 설정할 때는주의하십시오. 더 나쁜 것은 다중 레이아웃 파일입니다. 그것들과 함께 많은 코드 관리 악몽에 빠지게 될 것입니다.

+0

ohk @siddhath :) 실제로 나는 또한 하드 코드를 사용하지 않고 이전에 설명해 봤지만 나는이 트릭을 제공하지 못했습니다. –

+0

더 설명 할 수 있습니까? 예를 들어 100dp에서 'weight * 100dp'로 패딩을 변경하고 자바 코드의 무게를 조절해야합니까? – user2855778

+0

확인. ** 가중치 **는 최선의 아이디어입니다 ... 감사합니다. 내가 이것을 사용하여 발견 : [링크] (http://www.coderanch.com/t/610485/Android/Mobile/set-size-elements-layout-percent) – user2855778