- 积分
- 1886
- 注册时间
- 2014-12-29
- 最后登录
- 2016-6-17
- 在线时间
- 14 小时
- 威望
- 8
- 贡献
- 1
- 金币
- 989
- 钢镚
- 29
- 交易凭证
- 0
- 分享
- 0
- 精华
- 1
- 帖子
- 15
- 主题
- 8
TA的每日心情 | 无聊 2016-4-19 18:18 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
版主
- 威望
- 8
- 贡献
- 1
- 金币
- 989
- 钢镚
- 29
|
1. 去 -app.xml 里设置 <softKeyboardBehavior></softKeyboardBehavior> 标签(记得反注释)里面的值写 none
2. 自己监听 输入框 或 stage 的 SoftKeyboardEvent 相关事件, 判断软件盘的弹出和收回。http://help.adobe.com/zh_CN/Flas ... tKeyboardEvent.html
3. 通过 stage.softKeyboardRect 可以动态得到软键盘的物理像素尺寸, 注意, 不同的手机型号, 不同的操作系统, 软键盘的尺寸可能都不一样, 所以要动态获取
[img]file:///C:\Users\ADMINI~1\AppData\Local\Temp\[5UQ[BL(6~BS2JV6W}N6[%S.png[/img]http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#softKeyboardRect
4. Flex 的 UI 永远以逻辑像素来布局, 因此从 stage.softKeyboardRect 获取到的物理像素要转换为逻辑像素再用, 逻辑像素 = 物理像素 / 缩放因数.
Flex 缩放因数 = FlexGlobals.topLevelApplication.runtimeDPI / FlexGlobals.topLevelApplication.applicationDPI;
记得 applicationDPI 永远设置为 160, 然后 runtimeDPIProvider 可以自己写实现类, 自己返回想要的 runtimeDPI
5. 当监听到软键盘弹出时, 自己设置你相关 UI 组件的 skin.currentState = "A" 或 "B"
比如 "A" 就是软件盘弹出了, 这个时候软件盘会遮住你屏幕下半部分的 UI, 那么在 "A" 这个皮肤状态下, 你事先应该调整 "A" 状态下相关组件的布局, 布局时用的所有宽高, 间隔, 坐标, 全部都用逻辑像素, 坚决不能直接用物理像素, 最终的效果就是 "A" 状态下把你 UI 的输入框不会被软键盘遮住, UI 输入框的下方被软键盘遮住, 并且还要考虑输入框与软键盘的间隔这些细节.
6. 当监听到软键盘收拢时, 切换你对应组件的 skin.currentState = "B", 你懂的, 就不多说了
以上步骤如果你都理解对了, 并且做对了, 那么可以应对至少 90% 的不同型号的设备
以上摘自 qq群(!非常实验室! 23477140)
|
评分
-
查看全部评分
|