· TV端主要包括但不限于智能电视(TV)、网络机顶盒(盒子)、Android投影仪(投影仪),以下统称TV端设备。做TV端开发将近一年了,公司在的主要业务是在TV端,要适配市面上大量的TV、盒子、投影,TV端设备良莠不齐,屏幕尺寸千差万别,比手机开发要小心处理的东西更多。这里记录下 性能、分辨率、事件处理、动画 这几个方面的一些注意事项。
设备性能方面:与手机相比,在CPU和RAM上相比整体差了很多,所以在TV端app开发中更加注重性能,很多在手机上能完美运行的控件,在TV端效果都差强人意;另外要开发中及时关注app内存占用,及时释放无用内存;设备内存实在无法满足app需求的时候,可以考虑拆分进程,但这会导致其他的一些问题,稍后再叙;图片不宜过大,目前来看720p的图片已经足够,过大的图片会影响加载速度和增加内存占用,在压缩图片体积方面可以考虑使用webp,但要注意一点 Android 4.0以上系统才开始支持webp图片格式,4.2.1以上系统才开始支持带有透明区域的webp格式也就是说4.0-4.2.0系统只能使用不含透明区域的webp图片。
屏幕方面:设备分辨率720p与1080p设备分辨率居多,但在部分投影、盒子、TV中还在使用480甚至更低的屏幕分辨率;部分设备屏幕密度低,比如说有一家的投影设备只有160dpi,这就需要在原有分辨率适配基础上增加屏幕密度适配;极少数的设备使用的Android系统含有虚拟按键,厂家一般都会主动隐藏,但这会导致5.0以上Android系统使用原有的方式获取到的屏幕高度不准确,这一点需要注意。
事件处理:TV端设备的操作基本上都靠使用遥控器,部分设备同时支持鼠标操作,所以事件处理方式与手机端就大相径庭。获取控件焦点不可缺少,比如一个普通按钮的点击事件,只有在该按钮获取到焦点的时候点击才能生效。一些复杂界面的操作,通常在处理控件焦点事件的基础上在Activity中添加事件拦截处理。
动画:动画尽量使用属性动画,同时可使用一些第三方动画库提高动画的易用性,比如我个人觉得很不错的一个动画库,一个流畅的Android动画库 - ViewAnimator,使用动画的时候要注意性能,前面有说到TV端设备通常情况下性能较差,会影响动画的流畅性,所以尽量避免在执行动画的时候同时执行其它的任务。
网友评论