Android一些关于分辨率和布局的设置

简介:

1、Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320) 测试的时候可以设定模拟器的分辨率知道了手机屏幕手机大小的分类以后,就开始着手设计自己的程序:

(a) 配置manifest 文档位置android-sdk-windows/docs/guide/topics/manifest/supports-screens-element.html,可以查看Multiple Screens Support.的设置,在manifest 中,加入supports-screens标签支持多种屏幕显示:

1
2
3
4
5
6
7
8
< manifest  xmlns:android="http://schemas.android.com/apk/res/android">
     < supports-screens  android:largescreens="true"
         android:normalscreens="true"
         android:smallscreens="true"
         android:resizable="true"
         android:anydensity="true">
     </ supports-screens >
</ manifest >

(b)创建自己的layout 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。 还要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。 在我的项目里创建的是layout-large,(注意!这里有个插曲,我创建好layout-large以后发现使用800.480的屏幕还是调用默认的layout,最后才发现layout-large里面所用的资源,一定要放入drawable-hdpi里面)

2、重力感应设置:常规的显示为HVGA-P(port),即分辨率为320x480如果使用横屏(land)。如果模拟器尚未启动,可以在Eclipse的项目Run as=>Open Run Dialog对话框中设置,如果android模拟器已经启动后,可以使用快捷键F12或Ctrl+F11来切换。

3、布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数: "unspecified" 默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. "landscape" 横屏显示(宽比高要长) "portrait" 竖屏显示(高比宽要长) "user" 用户当前首选的方向 "behind" 和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) "sensor" 有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。 "nosensor" 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。

有的可能是程序设置的问题,如果想要屏幕保持竖屏,只设置android:screenOrientation,程序就回自动关闭。这时候可以通过设置android:configChanges="orientation|keyboardHidden" 来解决,activity的具体属性,可以参考andriod doc: /android-sdk-windows/docs/guide/topics/manifest/activity-element.html

相关文章
|
JavaScript 前端开发 架构师
12个开源免费的程序员简历模板
12个开源免费的程序员简历模板
1960 0
|
SQL JavaScript 小程序
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
|
Linux
Linux如何查询较大文件的方法
【5月更文挑战第8天】Linux如何查询较大文件的方法
1766 0
|
XML Android开发 数据格式
Dialog里面用ComposeView竟会直接闪退?深挖Lifecycle与Compose的爱恨情仇
Dialog里面用ComposeView竟会直接闪退?深挖Lifecycle与Compose的爱恨情仇
769 0
|
人工智能 前端开发 JavaScript
AI 如何辅助 Web 前端开发
随着人工智能(AI)的快速发展,它正逐渐渗透到各个领域,包括软件开发。Web 前端开发作为软件工程中重要的一环,也受益于人工智能的进步。本文将探讨如何利用 AI 技术来辅助 Web 前端开发,从代码生成、布局优化、错误检测和智能助手等方面展开讨论。
3842 2
|
存储 Web App开发 消息中间件
IM开发干货分享:浅谈IM系统中离线消息、历史消息的最佳实践
本文将基于IM消息系统的技术实践,分享关于离线消息和历史消息的正确理解,以及具体的技术配合和实践,希望能为你的离线消息和历史消息技术设计带来最佳实践灵感。
1359 0
IM开发干货分享:浅谈IM系统中离线消息、历史消息的最佳实践
|
存储 缓存 分布式计算
复盘|吉林医保:新架构解决老问题
阿里云多年经验沉淀总结出的“应缓存尽缓存、应异步尽异步、大表要分库分表、并发平行散开”创新性最佳IT实践,支撑了医保信息化系统的改造。
763 0
复盘|吉林医保:新架构解决老问题
【剑指offer知识点】List转int[],List转String,String转int,char[]转String,String 转char[],List转String[]
【剑指offer知识点】List转int[],List转String,String转int,char[]转String,String 转char[],List转String[]
223 0
|
BI C#
一起谈.NET技术,C#特性Attribute的实际应用之:代码统计分析
  日常工作中,需要为程序集提供统计分析:   1:程序集方法数;   2:开发人员数目及各自所开发或REVIEW的方法数;   3:测试中,被标注有BUG的数目;   4:直接查看方法的IL代码;   鉴于以上统计的需要,特开发本EXE。
1325 0