A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2.使用布局别名进行相应的匹配
(屏幕尺寸(小屏、7寸、10寸)、方向(横、纵))

res/values/layouts.xml:(默认布局)
<resources>      <item name="main_layout" type="layout">@layout/onepane_with_bar</item>      <bool name="has_two_panes">false</bool>  </resources>
可为resources设置bool,通过获取其值来动态判断目前已处在哪个适配布局

res/values-sw600dp-land/layouts.xml
(大屏、横向、双面板、宽-Andorid 3.2版本后)
<resources>    <item name="main_layout" type="layout">@layout/twopanes</item>    <bool name="has_two_panes">true</bool></resources>

res/values-sw600dp-port/layouts.xml
(大屏、纵向、单面板带操作栏-Andorid 3.2版本后)
<resources>    <item name="main_layout" type="layout">@layout/onepane</item>    <bool name="has_two_panes">false</bool></resources>

res/values-large-land/layouts.xml
(大屏、横向、双面板、宽-Andorid 3.2版本前)
<resources>    <item name="main_layout" type="layout">@layout/twopanes</item>    <bool name="has_two_panes">true</bool></resources>

res/values-large-port/layouts.xml
(大屏、纵向、单面板带操作栏-Andorid 3.2版本前)
<resources>    <item name="main_layout" type="layout">@layout/onepane</item>    <bool name="has_two_panes">false</bool></resources>
这里没有完全把全部尺寸匹配类型的代码贴出来,大家可以自己去尝试把其补充完整

“布局组件”匹配
本质:使得布局组件自适应屏幕尺寸
  • 做法
    使用"wrap_content"、"match_parent"和"weight“来控制视图组件的宽度和高度

    • "wrap_content"
      相应视图的宽和高就会被设定成所需的最小尺寸以适应视图中的内容
    • "match_parent"(在Android API 8之前叫作"fill_parent")
      视图的宽和高延伸至充满整个父布局
    • "weight"
      1.定义:是线性布局(Linelayout)的一个独特比例分配属性
      2.作用:使用此属性设置权重,然后按照比例对界面进行空间的分配,公式计算是:控件宽度=控件设置宽度+剩余空间所占百分比宽幅

    通过使用"wrap_content"、"match_parent"和"weight"来替代硬编码的方式定义视图大小&位置,你的视图要么仅仅使用了需要的那边一点空间,要么就会充满所有可用的空间,即按需占据空间大小,能让你的布局元素充分适应你的屏幕尺寸

“图片资源”匹配
本质:使得图片资源在不同屏幕密度上显示相同的像素效果
  • 做法:使用自动拉伸位图:Nine-Patch的图片类型
    假设需要匹配不同屏幕大小,你的图片资源也必须自动适应各种屏幕尺寸


使用场景:一个按钮的背景图片必须能够随着按钮大小的改变而改变。
使用普通的图片将无法实现上述功能,因为运行时会均匀地拉伸或压缩你的图片

  • 解决方案:使用自动拉伸位图(nine-patch图片),后缀名是.9.png,它是一种被特殊处理过的PNG图片,设计时可以指定图片的拉伸区域和非拉伸区域;使用时,系统就会根据控件的大小自动地拉伸你想要拉伸的部分

1.必须要使用.9.png后缀名,因为系统就是根据这个来区别nine-patch图片和普通的PNG图片的;
2.当你需要在一个控件中使用nine-patch图片时,如
android:background="@drawable/button"系统就会根据控件的大小自动地拉伸你想要拉伸的部分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马