PageFragment.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.example.zhpan.circleviewpager.fragment;
  2. import android.graphics.Color;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.RadioButton;
  8. import android.widget.RadioGroup;
  9. import androidx.annotation.NonNull;
  10. import androidx.annotation.Nullable;
  11. import com.example.zhpan.circleviewpager.R;
  12. import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
  13. import com.zhpan.bannerview.BannerViewPager;
  14. import com.zhpan.bannerview.annotation.APageStyle;
  15. import com.zhpan.bannerview.constants.PageStyle;
  16. import com.zhpan.bannerview.indicator.CircleIndicatorView;
  17. import com.zhpan.bannerview.utils.BannerUtils;
  18. import com.zhpan.idea.utils.ToastUtils;
  19. import butterknife.BindView;
  20. /**
  21. * Created by zhpan on 2018/7/24.
  22. */
  23. public class PageFragment extends BaseFragment {
  24. @BindView(R.id.banner_view)
  25. BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
  26. @BindView(R.id.rg_page_style)
  27. RadioGroup mRadioGroupPageStyle;
  28. @BindView(R.id.indicator_view)
  29. CircleIndicatorView indicatorView;
  30. @BindView(R.id.rb_multi_page)
  31. RadioButton radioButton;
  32. @Override
  33. protected int getLayout() {
  34. return R.layout.fragment_find;
  35. }
  36. @Override
  37. protected void initTitle() {
  38. }
  39. @Override
  40. protected void initView(Bundle savedInstanceState, View view) {
  41. mViewPager
  42. .setPageMargin(BannerUtils.dp2px(10))
  43. .setRevealWidth(BannerUtils.dp2px(10))
  44. .setHolderCreator(() -> new ImageResourceViewHolder(BannerUtils.dp2px(5)))
  45. .setIndicatorColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
  46. .setOnPageClickListener(position -> ToastUtils.show("position:" + position))
  47. .setInterval(5000);
  48. initRadioGroup();
  49. }
  50. @Nullable
  51. @Override
  52. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  53. return super.onCreateView(inflater, container, savedInstanceState);
  54. }
  55. public static PageFragment getInstance() {
  56. return new PageFragment();
  57. }
  58. private void setupBanner(@APageStyle int pageStyle) {
  59. mViewPager
  60. .setPageStyle(pageStyle)
  61. .create(mDrawableList);
  62. }
  63. private void initRadioGroup() {
  64. mRadioGroupPageStyle.setOnCheckedChangeListener((group, checkedId) -> {
  65. switch (checkedId) {
  66. case R.id.rb_multi_page:
  67. setupBanner(PageStyle.MULTI_PAGE);
  68. break;
  69. case R.id.rb_multi_page_scale:
  70. setupBanner(PageStyle.MULTI_PAGE_SCALE);
  71. break;
  72. case R.id.rb_multi_page_overlap:
  73. setupOverlapBanner();
  74. break;
  75. }
  76. });
  77. radioButton.performClick();
  78. }
  79. private void setupOverlapBanner() {
  80. mViewPager
  81. .setIndicatorVisibility(View.GONE) // 在实际开发中这行代码不必添加,此处因为受到其它两种模式影响所以要隐藏掉内置指示器
  82. .setPageStyle(PageStyle.MULTI_PAGE_OVERLAP)
  83. .setIndicatorView(indicatorView)
  84. .setIndicatorColor(Color.parseColor("#888888"),
  85. Color.parseColor("#118EEA"))
  86. .create(mDrawableList);
  87. }
  88. @Override
  89. public void onStop() {
  90. if (mViewPager != null)
  91. mViewPager.stopLoop();
  92. super.onStop();
  93. }
  94. @Override
  95. public void onResume() {
  96. if (mViewPager != null)
  97. mViewPager.startLoop();
  98. super.onResume();
  99. }
  100. }