Browse Source

update gradle and adapter PhotoView

zhangpan 6 years ago
parent
commit
ed8216852d

+ 11 - 10
app/build.gradle

@@ -2,11 +2,11 @@ apply plugin: 'com.android.application'
 
 android {
     compileSdkVersion 26
-    buildToolsVersion '26.0.2'
+    buildToolsVersion '28.0.3'
     defaultConfig {
         applicationId "com.example.zhpan.circleviewpager"
         minSdkVersion 17
-        targetSdkVersion 25
+        targetSdkVersion 26
         versionCode 1
         versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -33,15 +33,16 @@ repositories {
 
 
 dependencies {
-    compile fileTree(include: ['*.jar'], dir: 'libs')
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
-    compile 'com.android.support:appcompat-v7:26.1.0'
-    testCompile 'junit:junit:4.12'
-    compile project(':viewpager')
+    implementation 'com.android.support:appcompat-v7:26.1.0'
+    testImplementation 'junit:junit:4.12'
+    implementation project(':viewpager')
     // compile 'com.zhpan.library:viewpager:1.0.0'
-    compile 'com.github.bumptech.glide:glide:3.7.0'
-   // implementation files('libs/viewpager-1.0.0.jar')
-   // compile(name: 'viewpager-1.0.0', ext: 'aar')
+    implementation 'com.github.bumptech.glide:glide:3.7.0'
+    implementation 'com.github.chrisbanes:PhotoView:2.1.0'
+    // implementation files('libs/viewpager-1.0.0.jar')
+    // compile(name: 'viewpager-1.0.0', ext: 'aar')
 }

+ 45 - 0
app/src/main/java/com/example/zhpan/circleviewpager/DataViewHolder.java

@@ -0,0 +1,45 @@
+package com.example.zhpan.circleviewpager;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.zhpan.viewpager.holder.ViewHolder;
+import com.example.zhpan.circleviewpager.utils.ImageLoaderUtil;
+
+/**
+ * Created by zhpan on 2017/10/30.
+ * Description:
+ */
+
+public class DataViewHolder implements ViewHolder<DataBean> {
+    private ImageView mImageView;
+    private TextView mTvDescribe;
+
+    @Override
+    public View createView(Context context, int position) {
+        // 返回页面布局文件
+        View view = LayoutInflater.from(context).inflate(R.layout.item_view, null);
+        mImageView = view.findViewById(R.id.banner_image);
+        mTvDescribe = view.findViewById(R.id.tv_describe);
+        return view;
+    }
+
+    @Override
+    public void onBind(final Context context, DataBean data, final int position, final int size) {
+
+        final DataBean dataBean = (DataBean) data;
+        ImageLoaderUtil.loadImg(mImageView, dataBean.getUrl(), R.drawable.placeholder);
+        mTvDescribe.setText(dataBean.getDescribe());
+        mImageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Toast.makeText(context, position + "点击了" + dataBean.getDescribe() + "  页面数" + size, Toast.LENGTH_SHORT).show();
+
+            }
+        });
+    }
+}

+ 22 - 23
app/src/main/java/com/example/zhpan/circleviewpager/MainActivity.java

@@ -6,7 +6,6 @@ import android.support.v7.app.AppCompatActivity;
 import android.widget.Toast;
 
 import com.zhpan.viewpager.holder.HolderCreator;
-import com.zhpan.viewpager.holder.ViewHolder;
 import com.zhpan.viewpager.view.CircleViewPager;
 
 import java.util.ArrayList;
@@ -14,10 +13,14 @@ import java.util.List;
 
 public class MainActivity extends AppCompatActivity {
 
-    private CircleViewPager mViewpager;
-    private CircleViewPager mViewPager2;
-    private List<DataBean> mList = new ArrayList<>();
-    private List<Integer> mListInt = new ArrayList<>();
+    private CircleViewPager<DataBean, DataViewHolder> mViewpager;
+    private CircleViewPager<Integer, PhotoViewHolder> mViewPager2;
+    private List<DataBean> mDataList = new ArrayList<>();
+    private List<Integer> mPicResList = new ArrayList<>();
+    private String[] picUrls = {"http://img0.imgtn.bdimg.com/it/u=3159618424,497154385&fm=214&gp=0.jpg",
+            "http://img4.imgtn.bdimg.com/it/u=928730363,1881984966&fm=214&gp=0.jpg",
+            "http://img4.imgtn.bdimg.com/it/u=3779410813,199087977&fm=214&gp=0.jpg",
+            "http://img2.niutuku.com/desk/1208/1450/ntk-1450-9891.jpg"};
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -34,18 +37,14 @@ public class MainActivity extends AppCompatActivity {
     }
 
     private void initData() {
-        DataBean dataBean = new DataBean("http://img0.imgtn.bdimg.com/it/u=3159618424,497154385&fm=214&gp=0.jpg", "图片一");
-        DataBean dataBean2 = new DataBean("http://img4.imgtn.bdimg.com/it/u=928730363,1881984966&fm=214&gp=0.jpg", "图片二");
-        DataBean dataBean3 = new DataBean("http://img4.imgtn.bdimg.com/it/u=3779410813,199087977&fm=214&gp=0.jpg", "图片三");
-        DataBean dataBean4 = new DataBean("http://img2.niutuku.com/desk/1208/1450/ntk-1450-9891.jpg", "图片四");
-        mList.add(dataBean);
-        mList.add(dataBean2);
-        mList.add(dataBean3);
-        mList.add(dataBean4);
+        for (int i = 0; i < picUrls.length; i++) {
+            DataBean dataBean = new DataBean(picUrls[i], "图片" + (i + 1));
+            mDataList.add(dataBean);
+        }
 
-        for (int i = 0; i <= 3; i++) {
-            int drawable = getResources().getIdentifier("b" + i, "drawable", getPackageName());
-            mListInt.add(drawable);
+        for (int i = 1; i <= 4; i++) {
+            int drawable = getResources().getIdentifier("a" + i, "drawable", getPackageName());
+            mPicResList.add(drawable);
         }
     }
 
@@ -64,24 +63,24 @@ public class MainActivity extends AppCompatActivity {
             @Override
             public void onPageClick(int position) {
                 List<DataBean> list = mViewpager.getList();
+                String describe = list.get(position).getDescribe();
                 Toast.makeText(MainActivity.this, "点击了" + list.get(position).getDescribe(), Toast.LENGTH_SHORT).show();
             }
         });
         //  设置数据
-        mViewpager.setPages(mList, new HolderCreator<ViewHolder>() {
+        mViewpager.setPages(mDataList, new HolderCreator<DataViewHolder>() {
             @Override
-            public ViewHolder createViewHolder() {
-                return new MyViewHolder();
+            public DataViewHolder createViewHolder() {
+                return new DataViewHolder();
             }
         });
 
-
         mViewPager2.setAutoPlay(false);
         mViewPager2.setCanLoop(false);
-        mViewPager2.setPages(mListInt, new HolderCreator<ViewHolder>() {
+        mViewPager2.setPages(mPicResList, new HolderCreator<PhotoViewHolder>() {
             @Override
-            public ViewHolder createViewHolder() {
-                return new MyViewHolder();
+            public PhotoViewHolder createViewHolder() {
+                return new PhotoViewHolder();
             }
         });
         //  设置指示器资源图片

+ 0 - 57
app/src/main/java/com/example/zhpan/circleviewpager/MyViewHolder.java

@@ -1,57 +0,0 @@
-package com.example.zhpan.circleviewpager;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.zhpan.viewpager.holder.ViewHolder;
-import com.example.zhpan.circleviewpager.utils.ImageLoaderUtil;
-
-/**
- * Created by zhpan on 2017/10/30.
- * Description:
- */
-
-public class MyViewHolder implements ViewHolder<Object> {
-    private ImageView mImageView;
-    private TextView mTvDescribe;
-
-    @Override
-    public View createView(Context context, int position) {
-        // 返回页面布局文件
-        View view = LayoutInflater.from(context).inflate(R.layout.item_view, null);
-        mImageView = view.findViewById(R.id.banner_image);
-        mTvDescribe = view.findViewById(R.id.tv_describe);
-        return view;
-    }
-
-    @Override
-    public void onBind(final Context context, Object data, final int position, final int size) {
-        // 数据绑定
-        if (data instanceof Integer) {
-            mImageView.setImageResource((Integer) data);
-            mImageView.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    Toast.makeText(context, position + "点击了"+"页面数:"+size, Toast.LENGTH_SHORT).show();
-
-                }
-            });
-        } else if (data instanceof DataBean) {
-
-            final DataBean dataBean = (DataBean) data;
-            ImageLoaderUtil.loadImg(mImageView, dataBean.getUrl(), R.drawable.placeholder);
-            mTvDescribe.setText(dataBean.getDescribe());
-            mImageView.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    Toast.makeText(context, position + "点击了" + dataBean.getDescribe()+"  页面数"+size, Toast.LENGTH_SHORT).show();
-
-                }
-            });
-        }
-    }
-}

+ 42 - 0
app/src/main/java/com/example/zhpan/circleviewpager/PhotoViewHolder.java

@@ -0,0 +1,42 @@
+package com.example.zhpan.circleviewpager;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.example.zhpan.circleviewpager.utils.ImageLoaderUtil;
+import com.github.chrisbanes.photoview.PhotoView;
+import com.zhpan.viewpager.holder.ViewHolder;
+
+/**
+ * Created by zhpan on 2017/10/30.
+ * Description:
+ */
+
+public class PhotoViewHolder implements ViewHolder<Integer> {
+    private PhotoView mImageView;
+
+    @Override
+    public View createView(Context context, int position) {
+        // 返回页面布局文件
+        View view = LayoutInflater.from(context).inflate(R.layout.item_photo_view, null);
+        mImageView = view.findViewById(R.id.banner_image);
+        return view;
+    }
+
+    @Override
+    public void onBind(final Context context, Integer data, final int position, final int size) {
+        // 数据绑定
+        mImageView.setImageResource(data);
+        mImageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Toast.makeText(context, position + "  页面数" + size, Toast.LENGTH_SHORT).show();
+
+            }
+        });
+    }
+}

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

@@ -11,12 +11,12 @@
         android:layout_width="match_parent"
         android:layout_height="150dp"
         app:indicator_radius="6dp"
+        android:visibility="gone"
         app:indicator_gravity="end"
         app:interval="5000" />
 
     <com.zhpan.viewpager.view.CircleViewPager
         android:id="@+id/viewpager2"
         android:layout_width="match_parent"
-        android:layout_height="170dp"
-        android:layout_marginTop="15dp"/>
+        android:layout_height="wrap_content"/>
 </LinearLayout>

+ 21 - 0
app/src/main/res/layout/item_photo_view.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <com.github.chrisbanes.photoview.PhotoView
+        android:id="@+id/banner_image"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/placeholder"
+        android:scaleType="centerCrop" />
+
+    <TextView
+        android:id="@+id/tv_describe"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="#FFFFFF"
+        android:layout_alignParentBottom="true"
+        android:layout_marginStart="10dp"
+        android:layout_marginBottom="10dp"
+        android:textSize="16sp" />
+</RelativeLayout>

+ 4 - 3
build.gradle

@@ -9,9 +9,9 @@ buildscript {
         google()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.1'
-        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
-        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
+        classpath 'com.android.tools.build:gradle:3.2.1'
+        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }
@@ -21,6 +21,7 @@ allprojects {
     repositories {
         jcenter()
         google()
+        maven { url "https://jitpack.io" }
     }
 }
 

+ 2 - 2
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Wed Dec 06 15:15:30 CST 2017
+#Wed Nov 14 14:52:39 CST 2018
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

+ 5 - 5
viewpager/build.gradle

@@ -5,7 +5,7 @@ apply plugin: 'com.jfrog.bintray'
 version = "1.0.4"
 android {
     compileSdkVersion 26
-    buildToolsVersion "26.0.2"
+    buildToolsVersion '28.0.3'
 
     defaultConfig {
         minSdkVersion 17
@@ -25,12 +25,12 @@ android {
 }
 
 dependencies {
-    compile fileTree(dir: 'libs', include: ['*.jar'])
-    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
-    compile 'com.android.support:appcompat-v7:26.1.0'
-    testCompile 'junit:junit:4.12'
+    implementation 'com.android.support:appcompat-v7:26.1.0'
+    testImplementation 'junit:junit:4.12'
 }
 
 def siteUrl = 'https://github.com/zhpanvip/CircleViewPager'      // 项目的主页

+ 13 - 4
viewpager/src/main/java/com/zhpan/viewpager/view/CircleViewPager.java

@@ -26,7 +26,7 @@ import java.util.List;
 /**
  * Created by zhpan on 2017/3/28.
  */
-public class CircleViewPager<T> extends FrameLayout {
+public class CircleViewPager<T, M extends ViewHolder> extends FrameLayout {
     private ViewPager mViewPager;
     //  轮播数据集合
     private List<T> mList;
@@ -110,7 +110,7 @@ public class CircleViewPager<T> extends FrameLayout {
             interval = typedArray.getInteger(R.styleable.CircleViewPager_interval, 3000);
             indicatorCheckedColor = typedArray.getColor(R.styleable.CircleViewPager_indicator_checked_color, Color.parseColor("#FF4C39"));
             indicatorNormalColor = typedArray.getColor(R.styleable.CircleViewPager_indicator_normal_color, Color.parseColor("#935656"));
-            indicatorRadius = typedArray.getDimension(R.styleable.CircleViewPager_indicator_radius, DensityUtils.dp2px(context,4));
+            indicatorRadius = typedArray.getDimension(R.styleable.CircleViewPager_indicator_radius, DensityUtils.dp2px(context, 4));
             isAutoPlay = typedArray.getBoolean(R.styleable.CircleViewPager_isAutoPlay, true);
             isCanLoop = typedArray.getBoolean(R.styleable.CircleViewPager_isCanLoop, true);
             gravity = typedArray.getInt(R.styleable.CircleViewPager_indicator_gravity, 0);
@@ -263,11 +263,11 @@ public class CircleViewPager<T> extends FrameLayout {
         this.gravity = gravity;
     }
 
-    public void setPages(List<T> list, HolderCreator<ViewHolder> holderCreator) {
+    public void setPages(List<T> list, HolderCreator<M> holderCreator) {
         if (list == null || holderCreator == null) {
             return;
         }
-        mList .addAll(list);
+        mList.addAll(list);
         this.holderCreator = holderCreator;
     }
 
@@ -368,6 +368,10 @@ public class CircleViewPager<T> extends FrameLayout {
         this.interval = interval;
     }
 
+    public void setCurrentItem(int position) {
+        mViewPager.setCurrentItem(position);
+    }
+
     public List<T> getList() {
         return mList;
     }
@@ -377,6 +381,9 @@ public class CircleViewPager<T> extends FrameLayout {
         mListAdd = new ArrayList<>();
     }
 
+
+
+
     public float getIndicatorRadius() {
         return indicatorRadius;
     }
@@ -384,4 +391,6 @@ public class CircleViewPager<T> extends FrameLayout {
     public void setIndicatorRadius(float indicatorRadius) {
         this.indicatorRadius = DensityUtils.dp2px(getContext(), indicatorRadius);
     }
+
+
 }

+ 31 - 0
viewpager/src/main/java/com/zhpan/viewpager/view/MViewPager.java

@@ -0,0 +1,31 @@
+package com.zhpan.viewpager.view;
+
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+/**
+ * @Author zhangpan
+ * @Time:2018/11/14 15:24
+ * @Description:
+ */
+public class MViewPager extends ViewPager {
+    public MViewPager(Context context) {
+        super(context);
+    }
+
+    public MViewPager(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        try {
+            return super.onInterceptTouchEvent(ev);
+        } catch (IllegalArgumentException ex) {
+            ex.printStackTrace();
+        }
+        return false;
+    }
+}

+ 1 - 1
viewpager/src/main/res/layout/view_pager_layout.xml

@@ -3,7 +3,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <android.support.v4.view.ViewPager
+    <com.zhpan.viewpager.view.MViewPager
         android:id="@+id/vp_main"
         android:layout_width="match_parent"
         android:layout_height="match_parent"