|
@@ -3,78 +3,101 @@ package com.example.zhpan.circleviewpager.activity;
|
|
|
|
|
|
import android.graphics.Color;
|
|
|
import android.os.Bundle;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.RadioButton;
|
|
|
+import android.widget.RadioGroup;
|
|
|
|
|
|
import com.example.zhpan.circleviewpager.R;
|
|
|
+import com.example.zhpan.circleviewpager.view.FigureIndicatorView;
|
|
|
import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder;
|
|
|
import com.zhpan.bannerview.BannerViewPager;
|
|
|
-import com.zhpan.bannerview.constants.IndicatorSlideMode;
|
|
|
+import com.zhpan.bannerview.constants.IndicatorGravity;
|
|
|
import com.zhpan.bannerview.constants.IndicatorStyle;
|
|
|
import com.zhpan.bannerview.utils.DpUtils;
|
|
|
+import com.zhpan.idea.utils.LogUtils;
|
|
|
+import com.zhpan.idea.utils.ToastUtils;
|
|
|
|
|
|
public class IndicatorStyleActivity extends BaseDataActivity {
|
|
|
|
|
|
- private BannerViewPager<Integer, ImageResourceViewHolder> mViewPagerSmoothSlide;
|
|
|
-
|
|
|
- private BannerViewPager<Integer, ImageResourceViewHolder> mViewPagerNormalSlide;
|
|
|
-
|
|
|
- private BannerViewPager<Integer, ImageResourceViewHolder> mViewPagerDash;
|
|
|
+ private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
|
|
|
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
setContentView(R.layout.activity_indicator_slide_mode);
|
|
|
setTitle(getString(R.string.indicator_style));
|
|
|
- initCircleNormalSlide();
|
|
|
- initCircleSmoothSlide();
|
|
|
- initDashIndicator();
|
|
|
+ mViewPager = findViewById(R.id.banner_view_dash);
|
|
|
+ mViewPager.setRoundCorner(DpUtils.dp2px(5))
|
|
|
+ .setIndicatorGap(DpUtils.dp2px(6))
|
|
|
+ .setHolderCreator(ImageResourceViewHolder::new);
|
|
|
+ initRadioGroup();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initRadioGroup() {
|
|
|
+ RadioGroup radioGroupStyle = findViewById(R.id.rg_indicator_style);
|
|
|
+ radioGroupStyle.setVisibility(View.VISIBLE);
|
|
|
+ radioGroupStyle.setVisibility(View.VISIBLE);
|
|
|
+ radioGroupStyle.setOnCheckedChangeListener((group, checkedId) -> {
|
|
|
+ LogUtils.e("LLL", "check" + checkedId);
|
|
|
+ switch (checkedId) {
|
|
|
+ case R.id.rb_circle:
|
|
|
+ mViewPager.resetIndicator();
|
|
|
+ setupCircleIndicator();
|
|
|
+ break;
|
|
|
+ case R.id.rb_dash:
|
|
|
+ mViewPager.resetIndicator();
|
|
|
+ setupDashIndicator();
|
|
|
+ break;
|
|
|
+ case R.id.rb_custom:
|
|
|
+ setupCustomIndicator();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ RadioButton radioButton = findViewById(R.id.rb_circle);
|
|
|
+ radioButton.performClick();
|
|
|
}
|
|
|
|
|
|
- private void initDashIndicator() {
|
|
|
- mViewPagerDash = findViewById(R.id.banner_view_dash);
|
|
|
- mViewPagerDash.setAutoPlay(true).setCanLoop(true)
|
|
|
- .setIndicatorGap(DpUtils.dp2px(5))
|
|
|
- .setScrollDuration(1000).setPageMargin(DpUtils.dp2px(20))
|
|
|
+ private void setupCircleIndicator() {
|
|
|
+ mViewPager.setIndicatorStyle(IndicatorStyle.CIRCLE)
|
|
|
+ .setIndicatorGravity(IndicatorGravity.CENTER)
|
|
|
+ .setIndicatorColor(Color.parseColor("#935656"), Color.parseColor("#FF4C39"))
|
|
|
+ .setIndicatorRadius(DpUtils.dp2px(4), DpUtils.dp2px(5)).create(mDrawableList);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setupDashIndicator() {
|
|
|
+ mViewPager.setIndicatorStyle(IndicatorStyle.DASH)
|
|
|
.setIndicatorHeight(DpUtils.dp2px(2.5f))
|
|
|
- .setIndicatorStyle(IndicatorStyle.DASH)
|
|
|
- .setIndicatorWidth(DpUtils.dp2px(10), DpUtils.dp2px(5))
|
|
|
- .setHolderCreator(ImageResourceViewHolder::new)
|
|
|
+ .setIndicatorGravity(IndicatorGravity.CENTER)
|
|
|
+ .setIndicatorWidth(DpUtils.dp2px(6), DpUtils.dp2px(12))
|
|
|
.setIndicatorColor(Color.parseColor("#888888"),
|
|
|
Color.parseColor("#118EEA")).create(mDrawableList);
|
|
|
}
|
|
|
|
|
|
- private void initCircleSmoothSlide() {
|
|
|
- mViewPagerSmoothSlide = findViewById(R.id.banner_view);
|
|
|
- mViewPagerSmoothSlide.setAutoPlay(true).setCanLoop(true)
|
|
|
- .setRoundCorner(DpUtils.dp2px(5))
|
|
|
- .setIndicatorGap(DpUtils.dp2px(7))
|
|
|
- .setScrollDuration(1000)
|
|
|
- .setIndicatorStyle(IndicatorStyle.CIRCLE)
|
|
|
- .setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
|
|
|
- .setIndicatorRadius(DpUtils.dp2px(6), DpUtils.dp2px(7))
|
|
|
- .setHolderCreator(ImageResourceViewHolder::new)
|
|
|
- .setIndicatorColor(Color.parseColor("#935656"),
|
|
|
- Color.parseColor("#CCFF4C39")).create(mDrawableList);
|
|
|
+ private void setupCustomIndicator() {
|
|
|
+ mViewPager = findViewById(R.id.banner_view_dash);
|
|
|
+ mViewPager.setAutoPlay(false).setCanLoop(true)
|
|
|
+ .setPageMargin(DpUtils.dp2px(20))
|
|
|
+ .setIndicatorGravity(IndicatorGravity.END)
|
|
|
+ .setIndicatorView(setupIndicatorView(mDrawableList.size()))
|
|
|
+ .setOnPageClickListener(position -> ToastUtils.show(position + ""))
|
|
|
+ .setHolderCreator(ImageResourceViewHolder::new).create(mDrawableList);
|
|
|
}
|
|
|
|
|
|
- private void initCircleNormalSlide() {
|
|
|
- mViewPagerNormalSlide = findViewById(R.id.banner_view_normal_slide);
|
|
|
- mViewPagerNormalSlide.setAutoPlay(true).setCanLoop(true)
|
|
|
- .setRoundCorner(DpUtils.dp2px(5))
|
|
|
- .setIndicatorGap(DpUtils.dp2px(7))
|
|
|
- .setScrollDuration(1000)
|
|
|
- .setIndicatorStyle(IndicatorStyle.CIRCLE)
|
|
|
- .setIndicatorWidth(DpUtils.dp2px(8))
|
|
|
- .setIndicatorSlideMode(IndicatorSlideMode.NORMAL)
|
|
|
- .setHolderCreator(ImageResourceViewHolder::new)
|
|
|
- .setIndicatorColor(Color.parseColor("#888888"),
|
|
|
- Color.parseColor("#118EEA")).create(mDrawableList);
|
|
|
+ /**
|
|
|
+ * 这里可以是自定义的Indicator,需要继承BaseIndicatorView或者实现IIndicator接口;
|
|
|
+ */
|
|
|
+ private FigureIndicatorView setupIndicatorView(int pageSize) {
|
|
|
+ FigureIndicatorView indicatorView = new FigureIndicatorView(this);
|
|
|
+ indicatorView.setPageSize(pageSize);
|
|
|
+ indicatorView.setRadius(DpUtils.dp2px(18));
|
|
|
+ indicatorView.setTextSize(DpUtils.dp2px(13));
|
|
|
+ indicatorView.setBackgroundColor(Color.parseColor("#88FF5252"));
|
|
|
+ return indicatorView;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|
|
|
- mViewPagerSmoothSlide.stopLoop();
|
|
|
- mViewPagerNormalSlide.stopLoop();
|
|
|
- mViewPagerDash.stopLoop();
|
|
|
+ mViewPager.stopLoop();
|
|
|
}
|
|
|
}
|