Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案
在一些应用中,涉及到横竖屏切换,View要切换成不同大小比例尺寸。为解决这种开发场景,有多种解决方案,比如可以重写View,实现横竖切换在onMesure或者此类View的回调方法里面重新测量重新绘制View的尺寸大小。还有可以在onConfigurationChanged里面根据当前的横竖屏切换情况重写设置View的长宽比例等等。
现在给出一种比较简单且较为灵活的处理方法:通过写两套xml布局,实现在不同横竖屏切换状态下的不同大小比例尺寸。这种方案的关键做法是在res里面放置两个layout,分别叫做layout-land和layout-port。layout-land横屏时候将被加载,layout-port竖屏时候加载。只需要写两个同名的布局文件,但是要分别放在res/layout-land和layout-port文件目录下。这样在横竖屏切换时候Android系统就会自动根据当前横竖屏情况加载相应的布局。
给出一个例子,本例只有一个activity_main.xml,需要在不同横竖屏切换时候加载不同相应的布局。那么就分别写两个不同activity_main.xml但是同名的布局文件。
res/layout-land/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="200dp" android:layout_height="150dp" android:layout_centerInParent="true" android:background="@android:color/holo_red_light" android:gravity="center" android:text="横屏" /> </RelativeLayout>
res/layout-port/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="133dp" android:layout_height="100dp" android:layout_centerInParent="true" android:background="@android:color/holo_red_light" android:gravity="center" android:text="竖屏" /> </RelativeLayout>
代码文件结构:
横屏:
竖屏:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
“Xavier”安卓木马分析:可静默收集数据并远程代码执行
趋势科技研究发现了一款Android恶意木马——Xavier。在谷歌Play应用市场中,超过800款Android应用感染了该恶意木马,影响数百万Android用户。感染的应用范围覆盖图片编辑器,墙纸和铃声转换器等。受感染的用户绝大多数来自亚洲东南部国家,如越南、菲律宾和印度尼西亚,美国和欧洲的感染人数较少。 对比此前恶意广告木马,Xavier的功能及特征更为复杂。首先他具备远程下载恶意代码并执行的能力。其次,它通过使用诸如字符串加密,Internet数据加密和模拟器检测等方法来保护自己不被检测到。 Xavier窃取用户数据的行为很难被发现,它有一套自我保护机制,来躲避静态和动态的检测分析。此外,Xavier还具有下载和执行其他恶意代码的能力,使它的威胁性大大增加。 Xavie进化史 joymobile Xavier是恶意广告下载家族的成员之一,它的存在已有2年时间。第一个版本被称为joymobile,出现在2015年年初。joymobile这个版本已经具备执行远程代码的能力。 除了收集和泄露用户信息,它还可以安装其他应用,并在设备root的情况下实现静默安装。 它通过远程命令和C&...
- 下一篇
阿里配管专家解读:如何最优成本搭建非标准的iOS构建集群
作者简介:董必胜(叔大),阿里巴巴配置管理专家,负责集团、蚂蚁的移动端构建,负责研发协同平台RDC无线。 背景:在移动物联网大潮中iOS构建的重要性日益突出,如何能提供稳定的iOS构建服务?中大型的企业如何搭建、管理这种非标准的iOS构建集群?如何能做到集群搭建的成本最优?本文以alibaba集团的场景和大家分享iOS构建集群搭建的方案选型。 我们都知道iOS的构建需要在macOS Sierra的系统上构建。针对我们构建集群的搭建有几种思路: 直接采购mac mini、mac pro用于构建; 在linux虚机里安装macOS Sierra(应用层); 在PC、linux等裸机上安装macOS Sierra(系统层)。 一、 系统层虚拟化方案 在裸机上直接安装macOS Sierra。 这种机器在业界有个说法叫黑苹果,最著名的黑苹果论坛:http
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- Red5直播服务器,属于Java语言的直播服务器
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题