SOUI官方论坛

 找回密码
 立即注册
查看: 86|回复: 0

启程输入法皮肤多dpi屏幕支持方式介绍

[复制链接]

该用户从未签到

20

主题

237

帖子

1017

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1017

突出贡献优秀版主

发表于 2019-12-11 16:54:16 | 显示全部楼层 |阅读模式
现在的电脑显示器分辨率差异很大,同样是14吋,有的显示器还是1366×768,有的显示器已经是4K屏幕。
这样不同的分辨率下,显示器的dpi差异很大。
同一个程序如何同时适应高分屏与普屏?
在windows系统中,老的程序通常是只适配普通屏幕,为了在高分屏下显示不至于太小,windows系统会自动将老版本程序的屏幕放大,这样程序的界面不至于太小,虽然界面会由于放大而有点模糊。
启程输入法3.0系列统一禁止了系统的窗口自动放大行为,为了就是能够显示得更清楚。启程输入法3.0.6.x前,为了适配不同的分辨率屏幕,是把这个工具交给皮肤配置的,方法就是为不同屏幕配置不同的皮肤。
这种方式一个缺点就是可能同一套皮肤需要为多个dpi配置多个皮肤配置,管理起来有点麻烦,而且用户切换电脑还需要手动重新选择合适的皮肤。
为了解决这个问题,3.0.6.x开始,启程输入法实现了在同一个皮肤中支持多种dpi配置到一个皮肤中。

在介绍皮肤格式前,先清楚一下概念:放大倍数。
scale.png
上图是win10的放大倍数选择。
为了适配多dpi屏幕,防止自动放大带来的质量损失,启程输入法的窗口在显示前会从系统中获取当前显示器的放大倍数,并且将该放大倍数应用到窗口的显示。皮肤中可以为同个显示元素配置多种放大倍数下相匹配的图片。窗口根据放大倍数,从皮肤中选择一个适当的原图来显示。
以默认皮肤为例,我为输入窗口的LOGO图标配置了100%,150%,200%共3个放大倍数的图片。
使用方法:
首先准备好一个显示元素的多个放大倍数的图片,命名为xxx@150.png,150是适用的放大倍数。(文件名没有限制,推荐用这种方式)。
比如默认皮肤中有comp_logo.png, comp_logo@150.png, comp_logo@200.png。这3个图都是用于显示输入法的logo的。
然后在uires.idx里引用这几个图片:
<IMG>
    <file name="png_comp_logo" path="image\comp_logo.png"/>
    <file name="png_comp_logo.150" path="image\comp_logo@150.png"/>
    <file name="png_comp_logo.200" path="image\comp_logo@200.png"/>
  </IMG>



然后在wnd_composition.xml中配置下面的skin对象:
<skin>
    <imglist name="comp_logo" src="img:png_comp_logo" scale="100"/>
    <imglist name="comp_logo" src="img:png_comp_logo.150" scale="150"/>
    <imglist name="comp_logo" src="img:png_comp_logo.200" scale="200"/>
  </skin>


注意它们有相同的name属性,但是有不同的scale属性。
scale=100是默认值,如果没有这个属性,它的scale就是100
然后在布局的SOUI元素下加入一个子元素:
<user autoScale="true"/>
上面元素标识这个窗口是支持多dpi自动放大的。
皮肤的多dpi适配就做好了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|SOUI官方论坛 ( 粤ICP备18103663号-2 )

GMT+8, 2020-1-18 08:08

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表