วันอังคารที่ 22 พฤษภาคม พ.ศ. 2555

Android Screen sizes

-->




Android Screen sizes

Supporting Multiple Screens ( ภาษาไทย ด้านล่าง )

Android runs on a variety of devices that offer different screen sizes and densities. For applications, the Android system provides a consistent development environment across devices and handles most of the work to adjust each application's user interface to the screen on which it is displayed. At the same time, the system provides APIs that allow you to control your application's UI for specific screen sizes and densities, in order to optimize your UI design for different screen configurations. For example, you might want a UI for tablets that's different from the UI for handsets.
Although the system performs scaling and resizing to make your application work on different screens, you should make the effort to optimize your application for different screen sizes and densities. In doing so, you maximize the user experience for all devices and your users believe that your application was actually designed for their devices—rather than simply stretched to fit the screen on their devices.
By following the practices described in this document, you can create an application that displays properly and provides an optimized user experience on all supported screen configurations, using a single .apk file.


Android สามารถทำงานบนอุปกรณ์ที่มีขนาดหน้าจอ และความละเอียดที่แตกต่างกัน สำหรับการพัฒนาก็สนับสนุนการทำงานที่มีหลายขนาดหน้าจอได้ และสามารถกำหนดการแสดงผลความละเอียดต่างๆ ได้ ในขณะเดียวกันระบบให้ APIs ที่ช่วยให้คุณสามารถควบคุมโปรแกรม UI ของคุณสำหรับขนาดหน้าจอในความละเอีบดต่างๆ เพื่อเพิ่มประสิทธิภาพการออกแบบ UI ของคุณสำหรับการกำหนดค่าหน้าจอที่แตกต่างกัน ตัวอย่างเช่น คุณอาจต้องการ UI สำหรับหน้าจอ Tabletที่แตกต่างจาก UI ของหน้าจอโทรศัพท์มือถือ
 
แม้ว่าระบบจะทำการปรับขนาดเพื่อให้การทำงานของโปรแกรมประยุกต์ของคุณบนหน้าจอที่แตกต่างกัน แต่คุณควรปรับแต่งหน้าจอให้เหมาะสม กับแอพลิเคชันของคุณสำหรับขนาดหน้าจอที่แตกต่างกัน   คุณควรจะทำให้ผู้ใช้เสมือนว่า คุณออกแบบหน้าจอให้เหมาะสมกับอุปกรณ์ของผู้ใช้จริงๆ -แทนที่จะใช้วิธียืด หรือขยายหน้าจอ เพื่อเพียงให้พอดีกับหน้าจอกับอุปกรณ์ของพวกเขา

ในเอกสารนี้ ได้แสดงวิธีที่คุณสามารถสร้างโปรแกรมประยุกต์ที่จะแสดงผลได้อย่างถูกต้อง สำหรับหน้าจอความละเอียดต่างๆ โดยใช้ไฟล์ .APK เพียงไฟล์เดียว



Overview of Screens Support
This section provides an overview of Android's support for multiple screens, including: an introduction to the terms and concepts used in this document and in the API, a summary of the screen configurations that the system supports, and an overview of the API and underlying screen-compatibility features.

Terms and concepts

Screen size
Actual physical size, measured as the screen's diagonal. For simplicity, Android groups all actual screen sizes into four generalized sizes: small, normal, large, and extra large.
Screen density
The quantity of pixels within a physical area of the screen; usually referred to as dpi (dots per inch). For example, a "low" density screen has fewer pixels within a given physical area, compared to a "normal" or "high" density screen. For simplicity, Android groups all actual screen densities into four generalized densities: low, medium, high, and extra high.

Orientation
The orientation of the screen from the user's point of view. This is either landscape or portrait, meaning that the screen's aspect ratio is either wide or tall, respectively. Be aware that not only do different devices operate in different orientations by default, but the orientation can change at runtime when the user rotates the device.

Resolution
The total number of physical pixels on a screen. When adding support for multiple screens, applications do not work directly with resolution; applications should be concerned only with screen size and density, as specified by the generalized size and density groups.
Density-independent pixel (dp)
A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way. The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.

Range of screens supported

Starting with Android 1.6 (API Level 4), Android provides support for multiple screen sizes and densities, reflecting the many different screen configurations that a device may have. You can use features of the Android system to optimize your application's user interface for each screen configuration and ensure that your application not only renders properly, but provides the best user experience possible on each screen.
To simplify the way that you design your user interfaces for multiple screens, Android divides the range of actual screen sizes and densities into:
  • A set of four generalized sizes: small, normal, large, and xlarge
    Note: Beginning with Android 3.2 (API level 13), these size groups are deprecated in favor of a new technique for managing screen sizes based on the available screen width. If you're developing for Android 3.2 and greater, see Declaring Tablet Layouts for Android 3.2 for more information.
  • A set of four generalized densities: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
The generalized sizes and densities are arranged around a baseline configuration that is a normal size and mdpi (medium) density. This baseline is based upon the screen configuration for the first Android-powered device, the T-Mobile G1, which has an HVGA screen (until Android 1.6, this was the only screen configuration that Android supported).
Each generalized size and density spans a range of actual screen sizes and densities. For example, two devices that both report a screen size of normal might have actual screen sizes and aspect ratios that are slightly different when measured by hand. Similarly, two devices that report a screen density of hdpi might have real pixel densities that are slightly different. Android makes these differences abstract to applications, so you can provide UI designed for the generalized sizes and densities and let the system handle any final adjustments as necessary. Figure 1 illustrates how different sizes and densities are roughly categorized into the different size and density groups.

เริ่มต้นด้วย Android 1.6 (ระดับ API 4), Android ให้การสนับสนุนสำหรับขนาดหน้าจอที่หลากหลาย สะท้อนให้เห็นถึงการกำหนดค่าหลายหน้าจอที่แตกต่างกัน ว่า อุปกรณ์ต่างๆ จะมีคุณสมบัติที่สนับสนุนจากระบบ Android เพื่อเพิ่มประสิทธิภาพการใช้งานของผู้ใช้โปรแกรมประยุกต์ของคุณสำหรับการตั้งค่าหน้าจอแต่ละคนและให้แน่ใจว่าการแสดงผลได้อย่างถูกต้อง และก็ให้ประสบการณ์การใช้งานที่ดีที่สุดที่เป็นไปได้ในแต่ละหน้าจอ

เพื่อความง่ายในออกแบบส่วนติดต่อผู้ใช้ของคุณสำหรับหลายหน้าจอ, Android แบ่งช่วงของขนาดหน้าจอที่เกิดขึ้นจริงและมีความหนาแน่นเป็นดังนี้:

  • 4 ขนาดหน้าจอ: small, normal, large, and xlarge
หมายเหตุ: เริ่มใช้ที่ Android 3.2 (ระดับ API 13), กลุ่มนี้จะเทคนิคใหม่สำหรับการจัดการขนาดหน้าจอขึ้นอยู่กับความกว้างของหน้าจอที่มีอยู่ หากคุณกำลังพัฒนาสำหรับ Android 3.2 ขึ้นไป ให้ดูที่การประกาศเลย์เอาต์แท็บเล็ต (Declaring Tablet Layouts) สำหรับ Android 3.2 ในส่วนข้อมูลเพิ่มเติม
  • ความละเอียด : ldpi (ต่ำ), mdpi (ขนาดกลาง) hdpi (สูง), และ xhdpi (สูงพิเศษ)
 ขนาดหน้าจอและความความละเอียโดยทั่วไปมีการกำหนดค่าพื้นฐานที่มีขนาดปกติที่ mdpi ความหนาแน่น (กลาง) พื้นฐานนี้จะขึ้นอยู่กับการกำหนดค่าหน้าจอสำหรับอุปกรณ์ Android
รูปที่ 1 แสดงความแตกต่างกันของขนาดหน้าจอและความหนาแน่นมีการแบ่งประเภทเป็นขนาดและความหนาแน่นที่แตกต่างกัน
 



Figure 1. Illustration of how Android roughly maps actual sizes and densities to generalized sizes and densities (figures are not exact).
As you design your UI for different screen sizes, you'll discover that each design requires a minimum amount of space. So, each generalized screen size above has an associated minimum resolution that's defined by the system. These minimum sizes are in "dp" units—the same units you should use when defining your layouts—which allows the system to avoid worrying about changes in screen density.
  • xlarge screens are at least 960dp x 720dp
  • large screens are at least 640dp x 480dp
  • normal screens are at least 470dp x 320dp
  • small screens are at least 426dp x 320dp
Note: These minimum screen sizes were not as well defined prior to Android 3.0, so you may encounter some devices that are mis-classified between normal and large. These are also based on the physical resolution of the screen, so may vary across devices—for example a 1024x720 tablet with a system bar actually has a bit less space available to the application due to it being used by the system bar.
To optimize your application's UI for the different screen sizes and densities, you can provide alternative resources for any of the generalized sizes and densities. Typically, you should provide alternative layouts for some of the different screen sizes and alternative bitmap images for different screen densities. At runtime, the system uses the appropriate resources for your application, based on the generalized size or density of the current device screen.
You do not need to provide alternative resources for every combination of screen size and density. The system provides robust compatibility features that can handle most of the work of rendering your application on any device screen, provided that you've implemented your UI using techniques that allow it to gracefully resize (as described in the Best Practices, below).

Note: The characteristics that define a device's generalized screen size and density are independent from each other. For example, a WVGA high-density screen is considered a normal size screen because its physical size is about the same as the T-Mobile G1 (Android's first device and baseline screen configuration). On the other hand, a WVGA medium-density screen is considered a large size screen. Although it offers the same resolution (the same number of pixels), the WVGA medium-density screen has a lower screen density, meaning that each pixel is physically larger and, thus, the entire screen is larger than the baseline (normal size) screen.

Density independence

Your application achieves "density independence" when it preserves the physical size (from the user's point of view) of user interface elements when displayed on screens with different densities.
Maintaining density independence is important because, without it, a UI element (such as a button) appears physically larger on a low density screen and smaller on a high density screen. Such density-related size changes can cause problems in your application layout and usability. Figures 2 and 3 show the difference between an application when it does not provide density independence and when it does, respectively.

Figure 2. Example application without support for different densities, as shown on low, medium, and high density screens.
 

Figure 3. Example application with good support for different densities (it's density independent), as shown on low, medium, and high density screens.
The Android system helps your application achieve density independence in two ways:
  • The system scales dp units as appropriate for the current screen density
  • The system scales drawable resources to the appropriate size, based on the current screen density, if necessary
In figure 2, the text view and bitmap drawable have dimensions specified in pixels (px units), so the views are physically larger on a low density screen and smaller on a high density screen. This is because although the actual screen sizes may be the same, the high density screen has more pixels per inch (the same amount of pixels fit in a smaller area). In figure 3, the layout dimensions are specified in density-independent pixels (dp units). Because the baseline for density-independent pixels is a medium-density screen, the device with a medium-density screen looks the same as it does in figure 2. For the low-density and high-density screens, however, the system scales the density-independent pixel values down and up, respectively, to fit the screen as appropriate.
In most cases, you can ensure density independence in your application simply by specifying all layout dimension values in density-independent pixels (dp units) or with "wrap_content", as appropriate. The system then scales bitmap drawables as appropriate in order to display at the appropriate size, based on the appropriate scaling factor for the current screen's density.
However, bitmap scaling can result in blurry or pixelated bitmaps, which you might notice in the above screenshots. To avoid these artifacts, you should provide alternative bitmap resources for different densities. For example, you should provide higher-resolution bitmaps for high-density screens and the system will use those instead of resizing the bitmap designed for medium-density screens. The following section describes more about how to supply alternative resources for different screen configurations.



Android example code ตัวอย่าง  Android Code
http://androidcodeexample.blogspot.com/

Android Control ควบคุมอุปกรณ์ต่างๆ ด้วย Android
http://androidcontrol.blogspot.com

สอนเขียน Android  สอนเขียนโปรแกรม Android
http://androidcontrol.blogspot.com/2012/01/beginning-android-training-android.html



 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น