├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dictionaries │ └── caik.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── kcode │ │ └── autoviewpager │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── image │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ └── 3.jpg │ ├── java │ │ └── com │ │ │ └── kcode │ │ │ └── autoviewpager │ │ │ ├── App.java │ │ │ ├── MainActivity.java │ │ │ └── bean │ │ │ └── Picture.java │ └── res │ │ ├── drawable │ │ ├── point_checked.xml │ │ └── point_normal.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ └── imageview.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── kcode │ └── autoviewpager │ └── ExampleUnitTest.java ├── autoScrollViewPager ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── kcode │ │ └── autoscrollviewpager │ │ └── view │ │ ├── AutoScrollViewPager.java │ │ ├── AutoViewPager.java │ │ └── BaseViewPagerAdapter.java │ └── res │ ├── drawable │ ├── point_checked.xml │ └── point_normal.xml │ ├── layout │ ├── imageview.xml │ ├── point_center_text.xml │ └── point_right_text.xml │ └── values │ ├── attr.xml │ ├── colors.xml │ └── strings.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dictionaries/caik.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 51 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 67 | 68 | 69 | 70 | 71 | 72 | 1.8 73 | 74 | 79 | 80 | 81 | 82 | 83 | 84 | 1.8 85 | 86 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## AutoViewPager 2 | ![轮播图.gif](http://upload-images.jianshu.io/upload_images/1715403-cbf7c309b85e2770.gif?imageMogr2/auto-orient/strip) 3 | 4 | ## Download 5 | 6 | Gradle: 7 | 8 | in module's build.gradle,use: 9 | 10 | ``` 11 | repositories { 12 | jcenter() 13 | maven { url "https://jitpack.io" } 14 | } 15 | ``` 16 | 17 | replace: 18 | 19 | ``` 20 | repositories { 21 | jcenter() 22 | } 23 | ``` 24 | 25 | in app's build.gradle,add: 26 | 27 | ``` 28 | compile 'com.github.fccaikai:AutoScrollViewPager:1.0.1' 29 | ``` 30 | 31 | ## Usage 32 | * in layout 33 | 34 | ``` 35 | 39 | 40 | 41 | ``` 42 | 43 | 44 | * in activity: 45 | 46 | ``` 47 | 48 | public class MainActivity extends AppCompatActivity { 49 | 50 | private AutoScrollViewPager mViewPager; 51 | 52 | private String[] paths = {"https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=c493b482b47eca800d053ee7a1229712/8cb1cb1349540923abd671df9658d109b2de49d7.jpg", 53 | "https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=45fbfa5555da81cb51e684cd6267d0a4/2f738bd4b31c8701491ea047237f9e2f0608ffe3.jpg", 54 | "https://ss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=ae0e95c0fc1986185e47e8847aec2e69/0b46f21fbe096b63eb314ef108338744ebf8ac62.jpg", 55 | "https://ss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=1fad2b46952397ddc9799f046983b216/dc54564e9258d109c94bbb13d558ccbf6d814de2.jpg", 56 | "https://ss1.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=ff0999f6d4160924c325a51be406359b/86d6277f9e2f070861ccd4a0ed24b899a801f241.jpg"}; 57 | 58 | @Override 59 | protected void onCreate(Bundle savedInstanceState) { 60 | super.onCreate(savedInstanceState); 61 | setContentView(R.layout.activity_main); 62 | 63 | mViewPager = (AutoScrollViewPager) findViewById(R.id.viewPager); 64 | 65 | BaseViewPagerAdapter adapter = new BaseViewPagerAdapter(this,listener) { 66 | @Override 67 | public void loadImage(ImageView view, int position, String url) { 68 | Picasso.with(MainActivity.this).load(url).into(view); 69 | } 70 | 71 | @Override 72 | public void setSubTitle(TextView textView, int position, String s) { 73 | textView.setText(s); 74 | } 75 | }; 76 | mViewPager.setAdapter(adapter); 77 | 78 | adapter.add(initData()); 79 | 80 | 81 | } 82 | 83 | private List initData() { 84 | List data = new ArrayList<>(); 85 | Picture picture ; 86 | for (int i = 0 ; i < paths.length ;i++){ 87 | data.add(paths[i]); 88 | } 89 | return data; 90 | } 91 | 92 | @Override 93 | protected void onDestroy() { 94 | super.onDestroy(); 95 | mViewPager.onDestroy(); 96 | } 97 | 98 | private BaseViewPagerAdapter.OnAutoViewPagerItemClickListener listener = new BaseViewPagerAdapter.OnAutoViewPagerItemClickListener() { 99 | 100 | @Override 101 | public void onItemClick(int position, String url) { 102 | Toast.makeText(getApplicationContext(), 103 | url, Toast.LENGTH_SHORT).show(); 104 | } 105 | }; 106 | } 107 | ``` 108 | 109 | Override```public void loadImage(ImageView view, int position, String url)``` to load image to ImageView. 110 | 111 | Override```public void setSubTitle(TextView textView, int position, String s)``` to set text to subTitle. 112 | 113 | 114 | * OnClick 115 | 116 | 117 | ``` 118 | private BaseViewPagerAdapter.OnAutoViewPagerItemClickListener listener = new BaseViewPagerAdapter.OnAutoViewPagerItemClickListener() { 119 | 120 | @Override 121 | public void onItemClick(int position, String url) { 122 | Toast.makeText(getApplicationContext(), 123 | 124 | url, Toast.LENGTH_SHORT).show(); 125 | } 126 | }; 127 | ``` 128 | 129 | init OnClickListener 130 | 131 | ``` 132 | public BaseViewPagerAdapter(Context context, List data,OnAutoViewPagerItemClickListener listener) 133 | 134 | ``` 135 | 136 | * PointLayout 137 | add ```xmlns:app="http://schemas.android.com/apk/res-auto"``` to layout file. And , 138 | user ```app:point_layout="right|center"```. 139 | 140 | sample:[AutoViewPager](https://github.com/fccaikai/AutoScrollViewPager/tree/master/app) 141 | 142 | 143 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.1" 6 | defaultConfig { 7 | applicationId "com.kcode.autoviewpager" 8 | minSdkVersion 14 9 | targetSdkVersion 24 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:24.2.0' 28 | testCompile 'junit:junit:4.12' 29 | // compile 'com.github.fccaikai:AutoScrollViewPager:0.8.0', { 30 | // exclude group: 'com.android.support', module: 'appcompat-v7' 31 | // } 32 | compile project(':autoScrollViewPager') 33 | compile 'com.squareup.picasso:picasso:2.3.2' 34 | } 35 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/caik/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/kcode/autoviewpager/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.kcode.autoviewpager; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.kcode.autoviewpager", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/assets/image/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caikaidev/AutoScrollViewPager/77457e7ddef6073ad47c12a62c016d80c550dd5d/app/src/main/assets/image/1.jpg -------------------------------------------------------------------------------- /app/src/main/assets/image/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caikaidev/AutoScrollViewPager/77457e7ddef6073ad47c12a62c016d80c550dd5d/app/src/main/assets/image/2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/image/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caikaidev/AutoScrollViewPager/77457e7ddef6073ad47c12a62c016d80c550dd5d/app/src/main/assets/image/3.jpg -------------------------------------------------------------------------------- /app/src/main/java/com/kcode/autoviewpager/App.java: -------------------------------------------------------------------------------- 1 | package com.kcode.autoviewpager; 2 | 3 | import android.app.Application; 4 | import android.os.StrictMode; 5 | 6 | /** 7 | * Created by caik on 2017/1/3. 8 | */ 9 | 10 | public class App extends Application { 11 | 12 | @Override 13 | public void onCreate() { 14 | super.onCreate(); 15 | StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); 16 | StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); 17 | 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/kcode/autoviewpager/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.kcode.autoviewpager; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.view.View; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | import android.widget.Toast; 9 | 10 | import com.kcode.autoscrollviewpager.view.AutoScrollViewPager; 11 | import com.kcode.autoscrollviewpager.view.BaseViewPagerAdapter; 12 | import com.kcode.autoviewpager.bean.Picture; 13 | import com.squareup.picasso.Picasso; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | public class MainActivity extends AppCompatActivity { 19 | 20 | private BaseViewPagerAdapter mBaseViewPagerAdapter; 21 | 22 | private AutoScrollViewPager mViewPager; 23 | 24 | private String[] paths = {"https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=c493b482b47eca800d053ee7a1229712/8cb1cb1349540923abd671df9658d109b2de49d7.jpg", 25 | "https://ss1.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=ff0999f6d4160924c325a51be406359b/86d6277f9e2f070861ccd4a0ed24b899a801f241.jpg"}; 26 | 27 | // private String[] paths = {"https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=c493b482b47eca800d053ee7a1229712/8cb1cb1349540923abd671df9658d109b2de49d7.jpg", 28 | // "https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=45fbfa5555da81cb51e684cd6267d0a4/2f738bd4b31c8701491ea047237f9e2f0608ffe3.jpg", 29 | // "https://ss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=ae0e95c0fc1986185e47e8847aec2e69/0b46f21fbe096b63eb314ef108338744ebf8ac62.jpg", 30 | // "https://ss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=1fad2b46952397ddc9799f046983b216/dc54564e9258d109c94bbb13d558ccbf6d814de2.jpg", 31 | // "https://ss1.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=ff0999f6d4160924c325a51be406359b/86d6277f9e2f070861ccd4a0ed24b899a801f241.jpg"}; 32 | 33 | @Override 34 | protected void onCreate(Bundle savedInstanceState) { 35 | super.onCreate(savedInstanceState); 36 | setContentView(R.layout.activity_main); 37 | 38 | mViewPager = (AutoScrollViewPager) findViewById(R.id.viewPager); 39 | 40 | mBaseViewPagerAdapter = new BaseViewPagerAdapter(this,listener) { 41 | @Override 42 | public void loadImage(ImageView view, int position, String url) { 43 | Picasso.with(MainActivity.this).load(url).into(view); 44 | } 45 | 46 | @Override 47 | public void setSubTitle(TextView textView, int position, String s) { 48 | textView.setText(s); 49 | } 50 | }; 51 | mViewPager.setAdapter(mBaseViewPagerAdapter); 52 | 53 | mBaseViewPagerAdapter.add(initData()); 54 | 55 | 56 | } 57 | 58 | private List initData() { 59 | List data = new ArrayList<>(); 60 | Picture picture ; 61 | for (int i = 0 ; i < paths.length ;i++){ 62 | data.add(paths[i]); 63 | } 64 | return data; 65 | } 66 | 67 | @Override 68 | protected void onDestroy() { 69 | super.onDestroy(); 70 | mViewPager.onDestroy(); 71 | } 72 | 73 | public void add(View view) { 74 | mBaseViewPagerAdapter.add("http://img3.imgtn.bdimg.com/it/u=214931719,1608091472&fm=21&gp=0.jpg"); 75 | } 76 | 77 | private BaseViewPagerAdapter.OnAutoViewPagerItemClickListener listener = new BaseViewPagerAdapter.OnAutoViewPagerItemClickListener() { 78 | 79 | @Override 80 | public void onItemClick(int position, String url) { 81 | Toast.makeText(getApplicationContext(), 82 | position + " ========= "+ url, Toast.LENGTH_SHORT).show(); 83 | } 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /app/src/main/java/com/kcode/autoviewpager/bean/Picture.java: -------------------------------------------------------------------------------- 1 | package com.kcode.autoviewpager.bean; 2 | 3 | /** 4 | * Created by caik on 2016/10/19. 5 | */ 6 | 7 | public class Picture { 8 | private String path; 9 | private String name; 10 | 11 | public Picture(String path, String name) { 12 | this.path = path; 13 | this.name = name; 14 | } 15 | 16 | public String getPath() { 17 | return path; 18 | } 19 | 20 | public void setPath(String path) { 21 | this.path = path; 22 | } 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public void setName(String name) { 29 | this.name = name; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/point_checked.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/point_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 18 | 19 | 20 | 21 |