从去年6月至今,一直在开发两个较大型的uwp应用,一个是阅读类的,另一个是音乐相关。作为wp4年的开发者,带有一种从入门到饿死的感觉,在此对uwp开发进行了一些总结。
对于uwp来说,ui的沉浸式设计算是最大的特点了。其对开发人员相关的也就是特别要注意的,就是代码用了同一套,但是ui在不同宽高度要做不同的展示。
①对于我们代码中能获取到的宽高,其实是有效像素,对于不知道什么是有效像素,请自己查文档吧。我在开发中,对于响应式界面基本只响应宽度的变化,算上手机,大概宽度会在300-500-2000这个区间,其中500,算是一个区分手机还是pc的一个模糊阈值(真正区分需要用devicefamily来区分),如630的宽为320,1520为400+。
②对于控件的设计,对于响应式来说,一般只关注父控件大小,随之而来的是要对各种常用控件进行增强。如在GridView中,它能得到的是它自身的大小,但是在sizechanged的时候,为了满足视觉要求,可能需要动态的变化里面的item宽高或者显示item的个数。
③切图,系统选图的时候,会根据dpi来挑选资源。我们要做的,只需在资源后面添加.scale-xxx.png的后缀就好了。
④触发器,如果一个界面想要咱不同的宽高,不同的设备等做比较明显的变化,那么在xaml里添加触发器再好不过了,不过有时候比较坑,在触发状态的时候可能会出现过渡状态,需要自己克服。
⑤区分平台。最常用的场景,很多时候,变态交互和视觉很喜欢在pc和mobile上显示差异相当大的ui,大到界面都不能服用了,这时候,就只能服用page的cs以及相关业务逻辑。xaml则完全区分。要做这样的区分,只需对xaml的命名做修改即可。如本来页面A包含A.xaml和A.xaml.cs两个文件,现在要在做一个手机上的大差异适配,则添加一个A.DeviceFamily-Mobile.xaml文件,这样,系统自己能区分加载哪个xaml。当然,这个功能由触发器也能完成,完全取决于你页面的差异大不大了。
⑥手势,比较坑爹,winrt以后,我们只能拿到冒泡方式的手势,隧道方式的已经拿不到了,致使很多操作效果都很难实现。说几个比较有用的手势检测。
1)scrollviewer的directmanipulatstarted、directmanipulatcompleted,这两个事件可以监控触摸scrollviewer开始和结束两个事件,下拉刷新非常需要它,这两个事件可以穿透scrollviewer的嵌套。
2)经常遇到多tab页场景,会将listview嵌套到flipview里面,如果使用默认属性,会发现,listview在手势45度角滑动的时候非常恶心,左右会晃,我也是参考了google,得出的解决方法,就是讲listview内的scrollviewer的isverticalrail设为true即可
3)compositon,对于拖动事件。一般场合可能没多大问题,使用manipulationdelta的数据就好,但是如果想对scrollviewer检测拖动的手势,那就真是抓狂了。compostion这个东西是win10在10586这个版本上才加入的,可以将ui的操作动效引出来,或者和其他空间的效果做绑定。这个东西比直接使用了dx引擎,能完成相当多的功能,由于文档少,所以我在这只用它实现了下拉刷新和一些拖动的效果。
以上只是一些开发随感,如果有什么想要探讨的,请留言。