背景
最近项目中使用到touchGFX这个GUI,需要实现一个手机主界面左右滑动类似的菜单,并且需要循环,问题来了,需要用哪一个控件?
touchGFX现成控件中只有这两个控件适合,如果单纯从简单的角度,可以直接使用scrollwheel,因为他内置循环,而swipeContainer是不带有循环界面调节的。
但是,他有一个缺点,滑动必须要超过屏幕的一半才可以进行下一个界面的切换(类似swipeContainer的swipe threshold),并且没有现成的可更改API。为什么要改,因为滑动起来不流畅,很不方便,影响体验。
所以,现在有两个解决方法
1、重写scrollwheel,把那个滑动阈值问题改掉。
2、想办法让swipeContainer实现循环
3、自己写控件
先说第一种,本人已经实现了,但是scrollwheel这一个控件,继承机制很复杂:
getNearestAlignedOffset这个函数主要是控制这个左右滑动的参数值的,重写这个函数既可以。贴个源码。
int32_t ScrollBase::getNearestAlignedOffset(int32_t offset) const
{
if (itemSize == 0)
{
return offset;
}
if (getCircular()