《Pro Android Graphics》读书笔记之第五节
Android DIP: Device-independent Pixel Graphics Design
How Android Supports Device Displays: UI Design and UX
Device Display Concepts: Size, Density, Orientation, DIP
size Type
screen density
the number of physical pixels contained in a one inch area of a given device’s display screen
density type
low or LDPI, medium or MDPI, tv or TVDPI, high or HDPI, extra high or XHDPI and XXHDPI
Density Independence: Creating Similar User Experiences
Android Multi-Screen Support Via <supports-screens> Tag
in manifest: <supports-screens android:largeScreens="true" android:xlargeScreens="true" />
Providing Device-Optimized User Interface Layout Designs
Using Android’s SmallestWidth Screen Configuration Modifier
takes the format sw#dp
使用这个格式,进行屏幕判断,使用不同xml文件。
720 DIP, then you would use this qualifier to create the layout resource folder named /res/layout-sw720dp to hold your user interface layout definition XML files for your app’s Activities
Using the Available Screen Width Screen Configuration Modifier
w#dp (example: w480dp):横竖屏 切换 使用不同布局(根据可视宽度)
不用同时关注方向和屏幕大小:This is due to the fact that even on the larger tablet devices, you often don’t want to use the same multiple pane UI layout design for the portrait orientation as you do for the landscape orientation. With the width screen configuration modifier, you can use something like w640dp to specify a 640 DIP minimum available screen area width for your layout, instead of having to implement both the screen size qualifier and orientation qualifier.
Using the Available Screen Height Screen Configuration Modifier
h#dp (example: h600dp)
Providing Device-Optimized Image Drawable Assets
资源匹配过程
no density-matching assets can be located in your /res/drawable folders, Android will use your default assets, which are kept in the /res/drawable folder; if none are found there, Android will use the MDPI density resources in the /res/drawable-mdpi folder, and will then scale these up or down as needed to match the current screen size and density.
作者经验
I keep only XML definitions for things like animations and transitions in this /res/drawable folder, and then keep all of my pixel-based digital imaging assets in those various density-specific /res/drawable-dpi folders.
本文件夹没有,去别的文件夹找,然后按比例缩放。
res/drawable-nodpi
no scale
/res/drawable-land-hdpi would contain landscape HDPI assets
The DisplayMetrics Class: Size, Density, and Font Scaling
package : android.util
display physical size in both the X and Y dimensions
DisplayMetrics currentDeviceDisplayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(currentDeviceDisplayMetrics);