PageFragment.java 5.2 KB

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