PageFragment.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.example.zhpan.banner.fragment;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.widget.RadioGroup;
  5. import com.blankj.utilcode.util.ToastUtils;
  6. import com.example.zhpan.banner.R;
  7. import com.example.zhpan.banner.adapter.ImageResourceAdapter;
  8. import com.example.zhpan.banner.viewholder.ImageResourceViewHolder;
  9. import com.zhpan.bannerview.BannerViewPager;
  10. import com.zhpan.bannerview.annotation.APageStyle;
  11. import com.zhpan.bannerview.constants.PageStyle;
  12. import com.zhpan.bannerview.utils.BannerUtils;
  13. import com.zhpan.indicator.enums.IndicatorSlideMode;
  14. /**
  15. * Created by zhpan on 2018/7/24.
  16. */
  17. public class PageFragment extends BaseFragment {
  18. private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
  19. private RadioGroup mRadioGroupPageStyle;
  20. @Override
  21. protected int getLayout() {
  22. return R.layout.fragment_find;
  23. }
  24. public static PageFragment getInstance() {
  25. return new PageFragment();
  26. }
  27. @Override
  28. protected void initTitle() {
  29. }
  30. @Override
  31. protected void initView(Bundle savedInstanceState, View view) {
  32. mViewPager = view.findViewById(R.id.banner_view);
  33. mRadioGroupPageStyle = view.findViewById(R.id.rg_page_style);
  34. mViewPager
  35. .setIndicatorSlideMode(IndicatorSlideMode.SCALE)
  36. .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
  37. .setIndicatorSliderRadius(getResources().getDimensionPixelOffset(R.dimen.dp_4), getResources().getDimensionPixelOffset(R.dimen.dp_5))
  38. .setLifecycleRegistry(getLifecycle())
  39. .setOnPageClickListener(this::pageClick)
  40. .setAdapter(new ImageResourceAdapter(getResources().getDimensionPixelOffset(R.dimen.dp_8)))
  41. .setInterval(5000);
  42. initRadioGroup();
  43. view.findViewById(R.id.rb_multi_page_overlap).performClick();
  44. }
  45. private void pageClick(View view, int position) {
  46. if (position != mViewPager.getCurrentItem()) {
  47. mViewPager.setCurrentItem(position, true);
  48. }
  49. ToastUtils.showShort("position:" + position);
  50. }
  51. private void initRadioGroup() {
  52. mRadioGroupPageStyle.setOnCheckedChangeListener((group, checkedId) -> {
  53. switch (checkedId) {
  54. case R.id.rb_multi_page:
  55. setupMultiPageBanner();
  56. break;
  57. case R.id.rb_right_page_reveal:
  58. setupRightPageReveal();
  59. break;
  60. case R.id.rb_multi_page_scale:
  61. setupBanner(PageStyle.MULTI_PAGE_SCALE);
  62. break;
  63. case R.id.rb_multi_page_overlap:
  64. setupBanner(PageStyle.MULTI_PAGE_OVERLAP);
  65. break;
  66. case R.id.rb_qq_music_style:
  67. setQQMusicStyle();
  68. break;
  69. case R.id.rb_netease_music_style:
  70. setNetEaseMusicStyle();
  71. break;
  72. default:
  73. break;
  74. }
  75. });
  76. }
  77. private void setupMultiPageBanner() {
  78. mViewPager
  79. .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_10))
  80. .setRevealWidth(getResources().getDimensionPixelOffset(R.dimen.dp_10))
  81. .create(getPicList(4));
  82. mViewPager.removeDefaultPageTransformer();
  83. }
  84. private void setupRightPageReveal() {
  85. mViewPager
  86. .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_10))
  87. .setRevealWidth(0, getResources().getDimensionPixelOffset(R.dimen.dp_30))
  88. .create(getPicList(4));
  89. mViewPager.removeDefaultPageTransformer();
  90. }
  91. private void setupBanner(@APageStyle int pageStyle) {
  92. mViewPager
  93. .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_15))
  94. .setRevealWidth(getResources().getDimensionPixelOffset(R.dimen.dp_10))
  95. .setPageStyle(pageStyle)
  96. .create(getPicList(4));
  97. }
  98. // 网易云音乐样式
  99. private void setNetEaseMusicStyle() {
  100. mViewPager
  101. .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_20))
  102. .setRevealWidth(getResources().getDimensionPixelOffset(R.dimen.dp_m_10))
  103. .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
  104. .setOnPageClickListener((view, position) -> ToastUtils.showShort("position:" + position))
  105. .setInterval(5000).create(getPicList(4));
  106. mViewPager.removeDefaultPageTransformer();
  107. }
  108. // 仿QQ音乐的Banner
  109. private void setQQMusicStyle() {
  110. mViewPager
  111. .setPageMargin(getResources().getDimensionPixelOffset(R.dimen.dp_15))
  112. .setRevealWidth(BannerUtils.dp2px(0))
  113. .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
  114. .setOnPageClickListener((view, position) -> ToastUtils.showShort("position:" + position))
  115. .setInterval(5000).create(getPicList(4));
  116. mViewPager.removeDefaultPageTransformer();
  117. }
  118. }