ZKSlideWindow.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * ZKSlideWindow.h
  3. *
  4. * Created on: Jul 3, 2017
  5. * Author: guoxs
  6. */
  7. #ifndef _WINDOW_ZKSLIDEWINDOW_H_
  8. #define _WINDOW_ZKSLIDEWINDOW_H_
  9. #include "ZKWindow.h"
  10. class ZKSlideWindowPrivate;
  11. /**
  12. * @brief 滑动窗口控件
  13. */
  14. class ZKSlideWindow : public ZKWindow {
  15. ZK_DECLARE_PRIVATE(ZKSlideWindow)
  16. public:
  17. ZKSlideWindow(ZKBase *pParent);
  18. virtual ~ZKSlideWindow();
  19. public:
  20. /**
  21. * @brief 滑动项点击监听接口
  22. */
  23. class ISlideItemClickListener {
  24. public:
  25. virtual ~ISlideItemClickListener() { }
  26. virtual void onSlideItemClick(ZKSlideWindow *pSlideWindow, int index) = 0;
  27. };
  28. void setSlideItemClickListener(ISlideItemClickListener *pListener);
  29. /**
  30. * @brief 翻页监听接口
  31. */
  32. class ISlidePageChangeListener {
  33. public:
  34. virtual ~ISlidePageChangeListener() { }
  35. virtual void onSlidePageChange(ZKSlideWindow *pSlideWindow, int page) = 0;
  36. };
  37. void setSlidePageChangeListener(ISlidePageChangeListener *pListener);
  38. /**
  39. * @brief 获取当前页位置
  40. */
  41. int getCurrentPage() const;
  42. /**
  43. * @brief 获取总页数
  44. */
  45. int getPageSize() const;
  46. /**
  47. * @brief 切换到下一页
  48. * @param isAnimatable 是否开启翻页动画,默认为false,不开启动画
  49. */
  50. void turnToNextPage(bool isAnimatable = false);
  51. /**
  52. * @brief 切换到上一页
  53. * @param isAnimatable 是否开启翻页动画,默认为false,不开启动画
  54. */
  55. void turnToPrevPage(bool isAnimatable = false);
  56. protected:
  57. ZKSlideWindow(ZKBase *pParent, ZKBasePrivate *pBP);
  58. virtual void onBeforeCreateWindow(const Json::Value &json);
  59. virtual const char* getClassName() const { return ZK_SLIDEWINDOW; }
  60. virtual void onDraw(ZKCanvas *pCanvas);
  61. virtual bool onTouchEvent(const MotionEvent &ev);
  62. virtual void onTimer(int id);
  63. private:
  64. void parseSlideWindowAttributeFromJson(const Json::Value &json);
  65. };
  66. #endif /* _WINDOW_ZKSLIDEWINDOW_H_ */