Browse Source

Update README

zhpanvip 5 years ago
parent
commit
9ce891f073

+ 12 - 12
README.md

@@ -15,9 +15,8 @@
 
 - Migrate to ViewPager2
 - Mutiple item type supported
-- Optimize memory,improve perfermance.
-- add setOrientation method,support vertical orientation
-- add addPageTransformer method and removeTransformer method
+- setOrientation supported
+- addPageTransformer and removeTransformer supported
 - setAdapter replaces setHolderCreator
 - getData replaces getList
 - registerOnPageChangeCallback replaces setOnPageChangeListener
@@ -42,7 +41,7 @@
 
 ### 2.Indicator
 
-The IndicatorView was split from BannerViewPager,the new repo is [ViewPagerIndicator](https://github.com/zhpanvip/viewpagerindicator),Click the link to see more information about [ViewPagerIndicator](https://github.com/zhpanvip/viewpagerindicator)
+The Indicator library was split from BannerViewPager,the new repo is [ViewPagerIndicator](https://github.com/zhpanvip/viewpagerindicator),Click the link to see more information about [ViewPagerIndicator](https://github.com/zhpanvip/viewpagerindicator)
 
 #### (1)setIndicatorStyle and setIndicatorSlideMode
 
@@ -64,7 +63,7 @@ It's also support to custom indicator style,just need extends BaseIndicatorView
 
 | Figure Indicator | Drawable Indicator | Indicator below of Banner |
 |--|--|--|
-| ![CIRCLE](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custum.gif) | ![DASH](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom1.gif) | ![NORMAL](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom2.gif) |
+| ![CIRCLE](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custum.gif) | ![DASH](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom2.gif) | ![NORMAL](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom1.gif) |
 
 
 ## API
@@ -130,7 +129,7 @@ It's also support to custom indicator style,just need extends BaseIndicatorView
 
 ## Useage
 
-Since Viewpager2 does not support android support, BannerViewPager 3.0 no longer supports android support. If you are still using Android support, please use [BannerViewPager V2.x](https://github.com/zhpanvip/BannerViewPager/tree/v_2.x)
+Since Viewpager2 does not support android support library, So since the version 3.0 is no longer supports android support library too. If you are still using android support, please use [BannerViewPager v2.x](https://github.com/zhpanvip/BannerViewPager/tree/v_2.x)
 
 ### 1.Gradle dependency
 
@@ -364,16 +363,17 @@ public class FigureIndicatorView extends BaseIndicatorView {
 ```
     FigureIndicatorView indicatorView = new FigureIndicatorView(mContext);
     indicatorView.setRadius(getResources().getDimensionPixelOffset(R.dimen.dp_18));
-    indicatorView.setTextSize(getResources().getDimensionPixelOffset(R.dimen.dp_13));
+    indicatorView.setTextSize(getResources().getDimensionPixelSize(R.dimen.sp_13));
     indicatorView.setBackgroundColor(Color.parseColor("#aa118EEA"));
 
-    mViewPager.setIndicatorGravity(IndicatorGravity.END)
-              .setIndicatorView(indicatorView)
-              .setHolderCreator(() -> new ImageResourceViewHolder(0))
-              .create(mDrawableList);
+    mViewPager.setAutoPlay(false).setCanLoop(true)
+               .setIndicatorSlideMode(IndicatorSlideMode.NORMAL)
+               .setIndicatorVisibility(View.VISIBLE)
+               .setIndicatorGravity(IndicatorGravity.END)
+               .setIndicatorView(indicatorView).create(getPicList(4));
 ```
 
-## 8. Proguard config
+## 8. Proguard
 
 you must add proguard rules,If you have called setScrollDuration method in your project:
 

+ 8 - 7
README_CN.md

@@ -63,7 +63,7 @@ BannerViewPager目前已支持三种IndicatorViewStyle,以及三种IndicatorSlid
 
 | Figure Indicator | Drawable Indicator | Indicator below of Banner |
 |--|--|--|
-| ![CIRCLE](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custum.gif) | ![DASH](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom1.gif) | ![NORMAL](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom2.gif) |
+| ![CIRCLE](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custum.gif) | ![DASH](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom2.gif) | ![NORMAL](https://github.com/zhpanvip/Resource/blob/master/image/banner/style_custom1.gif) |
 
 
 ## 开放API
@@ -362,14 +362,15 @@ public class FigureIndicatorView extends BaseIndicatorView {
 
 ```
     FigureIndicatorView indicatorView = new FigureIndicatorView(mContext);
-    indicatorView.setRadius(BannerUtils.dp2px(18));
-    indicatorView.setTextSize(BannerUtils.dp2px(13));
+    indicatorView.setRadius(getResources().getDimensionPixelOffset(R.dimen.dp_18));
+    indicatorView.setTextSize(getResources().getDimensionPixelSize(R.dimen.sp_13));
     indicatorView.setBackgroundColor(Color.parseColor("#aa118EEA"));
 
-    mViewPager.setIndicatorGravity(IndicatorGravity.END)
-              .setIndicatorView(indicatorView)
-              .setHolderCreator(() -> new ImageResourceViewHolder(0))
-              .create(mDrawableList);
+   mViewPager.setAutoPlay(false).setCanLoop(true)
+               .setIndicatorSlideMode(IndicatorSlideMode.NORMAL)
+               .setIndicatorVisibility(View.VISIBLE)
+               .setIndicatorGravity(IndicatorGravity.END)
+               .setIndicatorView(indicatorView).create(getPicList(4));
 ```
 
 ## 8. 混淆

+ 1 - 0
app/build.gradle

@@ -58,4 +58,5 @@ dependencies {
     implementation 'androidx.core:core-ktx:1.2.0'
     implementation 'androidx.cardview:cardview:1.0.0'
     implementation 'androidx.viewpager2:viewpager2:1.0.0'
+    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.2'
 }

BIN
app/release/app-release.apk


+ 32 - 5
app/src/main/java/com/example/zhpan/circleviewpager/adapter/ArticleAdapter.kt

@@ -1,18 +1,25 @@
 package com.example.zhpan.circleviewpager.adapter
 
 import android.content.Context
+import android.content.res.Resources
 import androidx.recyclerview.widget.RecyclerView
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
+import androidx.viewpager2.widget.ViewPager2
 
 import com.example.zhpan.circleviewpager.R
 import com.example.zhpan.circleviewpager.bean.ArticleWrapper
+import com.example.zhpan.circleviewpager.bean.CustomBean
+import com.example.zhpan.circleviewpager.viewholder.CustomPageViewHolder
+import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder
+import com.zhpan.bannerview.BannerViewPager
+import com.zhpan.indicator.enums.IndicatorStyle
 
 import java.util.ArrayList
 
-class ArticleAdapter(context: Context, data: List<ArticleWrapper.Article>) : RecyclerView.Adapter<ArticleAdapter.ArticleViewHolder>() {
+class ArticleAdapter(context: Context, data: List<ArticleWrapper.Article>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
     private val mList = ArrayList<ArticleWrapper.Article>()
     private val inflater: LayoutInflater
 
@@ -21,14 +28,28 @@ class ArticleAdapter(context: Context, data: List<ArticleWrapper.Article>) : Rec
         this.inflater = LayoutInflater.from(context)
     }
 
-    override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ArticleViewHolder {
+    override fun onCreateViewHolder(viewGroup: ViewGroup, itemType: Int): RecyclerView.ViewHolder {
+        if (itemType == 1001) {
+            return BannerItemViewHolder(inflater.inflate(R.layout.item_home_banner, viewGroup, false))
+        }
         return ArticleViewHolder(inflater.inflate(R.layout.item_article, viewGroup, false))
     }
 
-    override fun onBindViewHolder(holder: ArticleViewHolder, i: Int) {
+    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, i: Int) {
         val article = mList[i]
-        holder.tvAuthor.text = article.author
-        holder.tvTitle.text = article.title
+        if (article.type == 1001 && holder is BannerItemViewHolder) {
+            holder.bannerViewPager.setCanLoop(false)
+                    .setIndicatorStyle(IndicatorStyle.ROUND_RECT)
+                    .setIndicatorSliderGap(holder.resources.getDimensionPixelOffset(R.dimen.dp_4))
+                    .setIndicatorSliderWidth(holder.resources.getDimensionPixelOffset(R.dimen.dp_4), holder.resources.getDimensionPixelOffset(R.dimen.dp_10))
+                    .setIndicatorSliderColor(holder.resources.getColor(R.color.red_normal_color), holder.resources.getColor(R.color.red_checked_color))
+                    .setOrientation(ViewPager2.ORIENTATION_VERTICAL)
+                    .setInterval(2000)
+                    .setAdapter(ImageResourceAdapter(0)).create(article.pagers);
+        } else if (holder is ArticleViewHolder) {
+            holder.tvAuthor.text = article.author
+            holder.tvTitle.text = article.title
+        }
     }
 
     fun setData(list: List<ArticleWrapper.Article>) {
@@ -47,4 +68,10 @@ class ArticleAdapter(context: Context, data: List<ArticleWrapper.Article>) : Rec
 
     }
 
+    inner class BannerItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        var bannerViewPager: BannerViewPager<Int, ImageResourceViewHolder> = itemView.findViewById(R.id.banner_view3)
+        var resources: Resources = itemView.context.resources
+
+    }
+
 }

+ 4 - 0
app/src/main/java/com/example/zhpan/circleviewpager/bean/ArticleWrapper.kt

@@ -12,6 +12,10 @@ class ArticleWrapper {
         var author: String? = null
 
         var publishTime: Long = 0
+
+        var type: Int = 0
+
+        var pagers: List<Int>? = null
     }
 
 

+ 3 - 7
app/src/main/java/com/example/zhpan/circleviewpager/fragment/HomeFragment.java

@@ -1,10 +1,8 @@
 package com.example.zhpan.circleviewpager.fragment;
 
-import android.net.Uri;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.MediaController;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -135,7 +133,7 @@ public class HomeFragment extends BaseFragment {
                     public void onSuccess(DataWrapper response) {
                         List<BannerData> dataList = response.getDataBeanList();
                         BannerData bannerData = new BannerData();
-                        bannerData.setDrawable(R.drawable.advertise4);
+                        bannerData.setDrawable(R.drawable.bg_card0);
                         bannerData.setType(BannerData.TYPE_NEW);
                         bannerData.setTitle("这是一个自定义类型");
                         dataList.add(1, bannerData);
@@ -206,10 +204,8 @@ public class HomeFragment extends BaseFragment {
     }
 
     private void onPageClicked(int position) {
-        if (position != 0) {
-            BannerData bannerData = mViewPagerHorizontal.getData().get(position);
-            Toast.makeText(getMContext(), "position:" + position + " " + bannerData.getTitle() + "currentItem:" + mViewPagerHorizontal.getCurrentItem(), Toast.LENGTH_SHORT).show();
-        }
+        BannerData bannerData = mViewPagerHorizontal.getData().get(position);
+        Toast.makeText(getMContext(), "position:" + position + " " + bannerData.getTitle() + "currentItem:" + mViewPagerHorizontal.getCurrentItem(), Toast.LENGTH_SHORT).show();
     }
 
     private View getHeaderView() {

+ 2 - 2
app/src/main/java/com/example/zhpan/circleviewpager/fragment/OthersFragment.java

@@ -160,8 +160,8 @@ public class OthersFragment extends BaseFragment implements View.OnClickListener
      */
     private IIndicator setupIndicatorView() {
         FigureIndicatorView indicatorView = new FigureIndicatorView(getMContext());
-        indicatorView.setRadius(BannerUtils.dp2px(18));
-        indicatorView.setTextSize(BannerUtils.dp2px(13));
+        indicatorView.setRadius(getResources().getDimensionPixelOffset(R.dimen.dp_18));
+        indicatorView.setTextSize(getResources().getDimensionPixelSize(R.dimen.sp_13));
         indicatorView.setBackgroundColor(Color.parseColor("#aa118EEA"));
         return indicatorView;
     }

+ 0 - 5
app/src/main/java/com/example/zhpan/circleviewpager/fragment/PageFragment.java

@@ -1,13 +1,9 @@
 package com.example.zhpan.circleviewpager.fragment;
 
-import android.media.MediaPlayer;
-import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
-import android.widget.MediaController;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
-import android.widget.VideoView;
 
 import com.example.zhpan.circleviewpager.R;
 import com.example.zhpan.circleviewpager.adapter.ImageResourceAdapter;
@@ -26,7 +22,6 @@ public class PageFragment extends BaseFragment {
     private BannerViewPager<Integer, ImageResourceViewHolder> mViewPager;
     private RadioGroup mRadioGroupPageStyle;
     private RadioButton radioButton;
-    private VideoView mVideoView;
 
     @Override
     protected int getLayout() {

+ 10 - 0
app/src/main/res/layout/item_home_banner.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+    <com.zhpan.bannerview.BannerViewPager
+        android:id="@+id/banner_view3"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_120"
+        android:layout_marginTop="@dimen/dp_5" />
+</LinearLayout>

+ 2 - 2
app/src/main/res/layout/item_new_type.xml

@@ -13,14 +13,14 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
-        android:layout_marginTop="@dimen/dp_10"
         android:background="@drawable/bg_start"
         android:gravity="center"
         android:paddingStart="@dimen/dp_10"
         android:paddingTop="@dimen/dp_5"
         android:paddingEnd="@dimen/dp_10"
+        android:layout_centerInParent="true"
         android:paddingBottom="@dimen/dp_5"
-        android:text="多类型Item"
+        android:text="多类型Item示例"
         android:textColor="#fff"
         android:textSize="16sp" />