(转)android 多屏幕的支持问题

在 android 中分为 small, normal, large 3 个大小的屏幕, density 分为 240,160, 120 3 个层次。分辨率有 1024*600 , 320*480 , 480*800 等等。

 

什么是分辨率:

是整个屏是多少点, 比如 800x480 ,它是软件的显示单位。

什么是 density :

density 表示每英寸有多少个显示点 ( 逻辑值 ) ,它的单位是 dpi : dot per inch ,通常屏幕大时, density 就大,屏幕小时, density 就小。

 

如表 1 android 如何区分屏幕的大小:

 

 Low density (120), ldpi Medium density (160), mdpi High density (240), hdpi
Small screen
  • QVGA (240x320), 2.6"-3.0" diagonal
  
Normal screen
  • WQVGA (240x400), 3.2"-3.5" diagonal
  • FWQVGA (240x432), 3.5"-3.8" diagonal
  • HVGA (320x480), 3.0"-3.5" diagonal
  • WVGA (480x800), 3.3"-4.0" diagonal
  • FWVGA (480x854), 3.5"-4.0" diagonal
Large screen 
  • WVGA (480x800), 4.8"-5.5" diagonal
  • FWVGA (480x854), 5.0"-5.8" diagonal
 

 


 

(表 1 )

android 如何支持多屏幕 

不管对大屏幕和中等屏幕来说如果 android:anyDensity="false" ,android:normalScreens (或 largescreen ) ="false" ,Android 都会把320*480 160(density) 作为基准屏幕绘画 , 假如我们面对 1024*600 ,240(density) 且 android:anyDensity="false",android: largescreen=”ture”, 那么为了显示 160density 的效果,分辨率必须降低 , 降低的比例为 240/160=1.5 即 683*400 160(density) ( 由上面分辨率和 density 的定义可以知道 ) 。

 

当 android:anyDensity="false",android:largescreen=”false” 时 , 会画出 320*480 , 160(density) 的图像出来,因为 320*480 160(density) 不会填满整个屏幕,所以多出的地方会被填以黑色。至于比例是多少 我个人认为在 1024*600 240 上长和宽为 1024/240=4.2 和 600/240 =2.5 ,而 320*480 160(density) 上长和宽为 480/160=3 和 320/160=2 ;很明显没有填满。

 

当 android:anyDensity="true" android , largescreen=”false” 时,很明显会由 320*480 , 160(density) 的画面上 *1.5 变成 480*720 , 240(density) 的画面。

 

当屏幕为 normalScreens 时,且 normalScreens=”false” 则屏幕不变。而屏幕的分辨率只是和 density 相关 ( 因为基准屏幕就是 normalscreens) 。即分辨率的比例为 240/160 或 160/160 (具体看当前屏幕的 density )。

 

当屏幕为   smallscreen   时,   android:smallScreens    android:anyDensity   的数值设置将不引起屏幕的变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值