Giter Site home page Giter Site logo

android-auto-scroll-view-pager's Introduction

Android Auto Scroll ViewPager

ViewPager which can auto scrolling, cycling, decelerating.
ViewPager which can be slided normal in parent ViewPager.

Attention: This library is too old and only supports android-support lib, It's deprecated now. The latest Kotlin and AndroidX support version can use https://github.com/pzienowicz/androidx-auto-scroll-view-pager, Thanks to pzienowicz for giving it a new life.

Dev Tools App

The Dev Tools App is a powerful android development tool that can help you improve efficiency greatly, It can be used to view the latest open source projects, view activity history, view manifest, decompile, color picker, extract apk or so, view app info, open or close the options in the developer options quickly, and more.

You can download it from DevTools@Google Play.

中文介绍见: Android自动滚动 轮播循环的ViewPager android-auto-scroll-view-pager

Sample Application

Download

Demo File: AutoScrollViewPagerSingleDemo.java
Demo Project: android-demo

Usage

  • include this library, use
<cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
	android:id="@+id/view_pager"
	android:layout_width="match_parent"
	android:layout_height="wrap_content" />

replace

<android.support.v4.view.ViewPager
	android:id="@+id/view_pager"
	android:layout_width="match_parent"
	android:layout_height="wrap_content" />
  • startAutoScroll() start auto scroll, delay time is getInterval().
  • startAutoScroll(int) start auto scroll delayed.
  • stopAutoScroll() stop auto scroll.

Setting

  • setInterval(long) set auto scroll time in milliseconds, default is DEFAULT_INTERVAL.
  • setDirection(int) set auto scroll direction, default is RIGHT.
  • setCycle(boolean) set whether automatic cycle when auto scroll reaching the last or first item, default is true.
  • setScrollDurationFactor(double) set the factor by which the duration of sliding animation will change.
  • setSlideBorderMode(int) set how to process when sliding at the last or first item, default is SLIDE_BORDER_MODE_NONE.
  • setStopScrollWhenTouch(boolean) set whether stop auto scroll when touching, default is true.
  • setBorderAnimation(boolean) set whether animating when auto scroll at the last or first item, default is true.
  • You cannot combine with ViewPagerIndicator if setCycle(true).
  • If you want infinite loop, please see AutoScrollViewPagerSingleDemo.java
    More: http://www.trinea.cn/android/auto-scroll-view-pager/

Proguard

-keep class cn.trinea.android.** { *; }
-keepclassmembers class cn.trinea.android.** { *; }
-dontwarn cn.trinea.android.**

Download

Maven:

<dependency>
    <groupId>cn.trinea.android.view.autoscrollviewpager</groupId>
    <artifactId>android-auto-scroll-view-pager</artifactId>
    <version>1.1.2</version>
</dependency>

Gradle:

compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') {
    exclude module: 'support-v4'
}

About Me

Author of Android Dev Tools App

License

Copyright 2014 trinea.cn

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

android-auto-scroll-view-pager's People

Contributors

ajma avatar akslive avatar bitdeli-chef avatar caij avatar lightsky avatar trinea avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-auto-scroll-view-pager's Issues

Update library

Hello
Why do you remove "setAutoScrollDurationFactor" from "AutoScrollViewPager" in gradle version?

程序无响应(ANR)

使用AsyncHttpClient,在HttpClient请求结果中调用AutoScrollViewPager setInfiniteLoop(true) 程序出现无响应情况,setInfiniteLoop(false) 程序正常运行。 请问会是什么原因导致的。谢谢

viewpager.setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_CYCLE) doesn't behave properly

I have autoscrollviewpager inside recyclerview and i want it to scroll in both direction i.e. Left and Right.
when i use viewpager.setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_CYCLE)
then it become scrollable in both direction but it shows black screen for first couple of time. And whenever i am scrolling viewpager, it doesn't listen and recyclerview takes scrolling event it scrolls vertically.
But if do not set any slideboardMode then it scrolls to only right side but vertical scrolling issue doesn't appear that much .

Crash android.support.v4.app.Fragment.setUserVisibleHint

Hi, i have the following issue, i cannot duplicate it but in production version im receiving the following crash:

android.support.v4.app.Fragment.setUserVisibleHint Fragment.java, line 841
android.support.v4.app.FragmentPagerAdapter.setPrimaryItem FragmentPagerAdapter.java, line 130
android.support.v4.view.ViewPager.populate ViewPager.java, line 1066
android.support.v4.view.ViewPager.setCurrentItemInternal ViewPager.java, line 550
android.support.v4.view.ViewPager.setCurrentItemInternal ViewPager.java, line 509
android.support.v4.view.ViewPager.setCurrentItem ViewPager.java, line 501
cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager.scrollOnce AutoScrollViewPager.java, line 185
cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager$MyHandler.handleMessage AutoScrollViewPager.java, line 251
android.os.Handler.dispatchMessage Handler.java, line 102
android.os.Looper.loop Looper.java, line 157
android.app.ActivityThread.main ActivityThread.java, line 5356

Can you help me?

Thanks for all!

Jp

Scroll and Stop vs. Flinging

When trying to scroll and stop to the left (contrary to flingin) the pager moves 1 page on the opposite side, if not to the other. It's an strange behavior. Could you pleas take a look at it.

编译失败

你好,我在用Gradle添加该库时,编译不能通过,错误信息:

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    D:\android\sdk\build-tools\21.0.2\dx.bat --dex --no-optimize --output D:\Android\app\build\intermediates\dex\debug --input-list=D:\Android\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
    2
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302)
        at com.android.dx.command.dexer.Main.run(Main.java:245)
        at com.android.dx.command.dexer.Main.main(Main.java:214)
        at com.android.dx.command.Main.main(Main.java:106)

搜索后,应该是包重复了(应该是v4包),我依赖的包:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:21.0.2'
    compile 'com.jakewharton:butterknife:6.0.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
    compile 'it.sephiroth.android.library.imagezoom:imagezoom:+'
}
libs目录下是 ActiveAndroidVolley2个包

谢谢。

Why i can't use this library..

Since I did migrate androidX, I can't use auto-scroll-view-pager library.

i did implementation in build.gradle(app) file. like below code.
implementation ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') { exclude module: 'support-v4' }
also, i did sync project and clean code, rebuild.
but i couldn't find 'cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager' in my xml.

how can i solve it..?

Hello Trinea,我发现这个autoscroolviewPager 有个Bug

  3ks 你的项目!

我现在用了你的项目,实现循环播放图片功能(淘宝客户端首页Title),自动滑动到最后一项时,又切换到第一项,

手动滑动到最好一页时,无法,手动快速 滑到第一页,我们期望实现淘宝客户端首页效果,求指点一下啊~!

Put in Maven Central

Can you add this to maven central so we can use it by taking a dependency rather than copying the code?

support-v4 issue

Since the framework includes support-v4, it's better to have

compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') {
exclude module: 'support-v4'
}

rather than

compile 'cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2'

don't consume touch event when scroll up or down

Hi , first Thanks for your library.

I want to put auto-scroll-view-pager as header of my listview (RecyclerView) but When I scroll up/down it consume touch event. I use following piece of code to handle this issue (I put it in dispatchTouchEvent method ):


    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        int action = MotionEventCompat.getActionMasked(ev);

        if (stopScrollWhenTouch) {
            if ((action == MotionEvent.ACTION_DOWN) && isAutoScroll) {
                isStopByTouch = true;
                stopAutoScroll();
            } else if (ev.getAction() == MotionEvent.ACTION_UP && isStopByTouch) {
                startAutoScroll();
            }
        }

        if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT || slideBorderMode == SLIDE_BORDER_MODE_CYCLE) {
            touchX = ev.getX();
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                downX = touchX;
            }
            int currentItem = getCurrentItem();
            PagerAdapter adapter = getAdapter();
            int pageCount = adapter == null ? 0 : adapter.getCount();
            /**
             * current index is first one and slide to right or current index is last one and slide to left.<br/>
             * if slide border mode is to parent, then requestDisallowInterceptTouchEvent false.<br/>
             * else scroll to last one when current item is first one, scroll to first one when current item is last
             * one.
             */
            if ((currentItem == 0 && downX <= touchX) || (currentItem == pageCount - 1 && downX >= touchX)) {
                if (slideBorderMode == SLIDE_BORDER_MODE_TO_PARENT) {
                    getParent().requestDisallowInterceptTouchEvent(false);
                } else {
                    if (pageCount > 1) {
                        setCurrentItem(pageCount - currentItem - 1, isBorderAnimation);
                    }
                    getParent().requestDisallowInterceptTouchEvent(true);
                }
                return super.dispatchTouchEvent(ev);
            }
        }
       //----------------this is my code ----------------
        boolean consumeTouch = false;
        if (action == MotionEvent.ACTION_DOWN) {
            touchY = ev.getY();
        } else if (action == MotionEvent.ACTION_UP) {
            consumeTouch = Math.abs(touchY - ev.getY()) > 0;
        }
        if (consumeTouch)
            getParent().requestDisallowInterceptTouchEvent(true);
        else
            getParent().requestDisallowInterceptTouchEvent(false);


        return super.dispatchTouchEvent(ev);
    }

It's work somehow but have issue. When I scroll up/down autoScroll mode not worked. Can you help me to solve this issue ?

为ViewPager的子View添加事件后,长按屏幕AutoScroll无法stop

群主好啊,最近使用你的AutoViewPager的时候,发现了一个小问题。
通常当手指按住屏幕的时候,是可以暂停滑动的。当我为ImageView(我的ViewPagerAdpter的Item是ImageView)设定了onClick事件的时候,用手指长按屏幕就无法暂停滑动了。

我的理解是这样的:
根据View事件的分发机制,Event是从ViewPager的dispatchTouchEvent开始的,当在ViewPager的onInterceptTouchEvent中没有返回true,也就没有拦截事件的时候,就会分发到ImageView中,由于为ImageView设置了onClick事件,所以在onTouchevent里面会执行onClick事件,从而消费掉了该事件,因此事件就不会返回到ViewPager的onTouchEvent中,也就无法处理相应的逻辑了。

我的解决方案是:
将ViewPager中onTouchEvent的逻辑放到dispatchTouchEvent或者onInterceptEvent中去,这样就可以先控制ViewPager的stop或者start了,然后再将事件传递到ImageView,让其自行处理。

上面的长按和onClick事件有点矛盾,下面是原因:
这里说下onClick和onLongClick,我通过log看到,即使你设置了onLongClick事件的处理,但是依旧会执行onClick事件,这是因为onLongClick事件默认返回了FALSE,事件没有消费掉,导致在action up的时候执行了onClick。所以也就是不管你是不是长按屏幕,都会执行onClick事件。也就是我长按屏幕时,事件被ImageView消费掉导致没法stop的原因。

在实际开发中,应该避免onClick和onLongClick同时触发的情况,所以在onLongClick方法里面返回FALSE,就可以了。当然这和上面的问题关联不是很大。

题外话:
看了下淘宝和携程还有网易音乐的广告栏
淘宝没有任何的限制,长按,或者move的时候,都可以继续轮循的。
携程的处理了move的情况,但没有处理长按的情况。
网易两种情况都处理了,并且onClick和onLongClick事件都响应了

这是我结合ViewPagerIndicator和你的AutoScrollViewPager而成的项目:https://github.com/lightSky/InfiniteAutoScroolView

That lib has support Indicator

Hi trinea,
I'm using your lib , when I combined with https://github.com/ongakuer/CircleIndicator . not working fine .
That's my code

viewPager = (AutoScrollViewPager) findViewById(R.id.view_pager); viewPager.setAdapter(new ImagePagerAdapter(this, imageUrl).setInfiniteLoop(true)); viewPager.setInterval(3000); viewPager.startAutoScroll(); viewPager.setCurrentItem(1); CircleIndicator indicator = (CircleIndicator) view.findViewById(R.id.indicator); indicator.setViewPager(viewpager);
So could u help me ?

app:dexDebug错误

遇到这么一个错误
Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_25\bin\java.exe'' finished with non-zero exit value 2

不过不知道跟别的哪个库有冲突了
这是我的gradle.build
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// Google stuff
compile 'com.android.support:appcompat-v7:22.1.0'

// Square-y stuff
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup:otto:1.3.5'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2'
compile 'com.squareup.dagger:dagger:1.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'

// UI stuff
compile 'com.jakewharton:butterknife:5.1.2'
compile 'com.nispok:snackbar:2.7.5'
compile 'com.marshalchen.ultimaterecyclerview:library:0.3.6'
compile 'com.github.lecho:hellocharts-library:1.5.5@aar'

// Unit tests
testCompile 'com.android.support.test:testing-support-lib:0.1'
testCompile 'org.mockito:mockito-core:1.9.0'

}

fail

i can't find package common.util any where in project

First scroll is laggy

If there are multiple images in the view pager then the first scroll is laggy towards the end, rest other scrolls are smooth

AutoScrollViewPager.mContext leaks DemoActivity instance (48 KB)

logs

net.tsz.afinal.core.AsyncTask.sHandler * references net.tsz.afinal.core.AsyncTask$InternalHandler.mQueue * references android.os.MessageQueue.mMessages * references android.os.Message.next * references android.os.Message.target * references cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager$MyHandler.this$0 * references cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager.mContext * leaks cn.com.demo.DemoActivity instance * Retaining: 48 KB. * Reference Key: 2cd1903-be4e-4d3e-8f94-efa50c058ec7 * Device: Xiaomi Xiaomi MI NOTE Pro leo * Android Version: 5.1.1 API: 22 LeakCanary: 1.5 00f37f5 * Durations: watch=15287ms, gc=231ms, heap dump=3338ms, analysis=54623ms 

Memory keeps on Increasing

Whenever the image is changed in AutoScrollViewPager, memory increases and it keeps on increasing for every image change and eventually leads to outOfMemoryException.

功能需求

我现在有个需求,自动播放时速度放慢,手动切换时速度使用正常速度,现在通过setScrollDurationFactor()设置一个较慢的切换速度,可是手动滑动时速度也很慢了,可不可以暴露个监听接口,监听自动和手动模式的切换事件,这样可以设置不同模式下的ViewPager切换速度.

Clicking while scrolling doesn't invoke the clickListener

If I click the pager while the scroll is taking place, the pager sometimes fast-scrolls to the next item, and sometimes to the previous one. I have an onClick() event listener on each pager item that should open another activity. I need this listener to keep working even if the pager was clicked during the transition.

Is there a way to implement this?

Note: your demo Android application (Trinea Android demo) shows the undesired behaviour in the “AutoScrollViewPager demo”, but the problem doesn’t occur when we further navigate into the “AutoScrollViewPager demo >ViewPager in ViewPager Demo” page.

添加Transformer会阻拦掉ViewPager子view的所有事件

如题,如果添加Transformer会阻拦掉Viewpager子View的所有事件,点击事件没办法处理,另外请教一下大神,这个库很棒,我不太理解如果我在ListView里使用HashMap 去缓存View,如果是普通ViewPager,使用缓存的View感觉ViewPager会丢失状态,事件处理变得很卡,而你的这个控件不会,不知道有什么特殊处理?

FakeDrag is possible

It is not an issue but I have a quick question - Does it have fakeDrag.. I am trying to have smooth slide of image rather than fling???

"ViewPager" not found error when project migrated to AndroidX

When I migrated my project to AndroidX it seems that "ViewPager" is not correctly referenced. When I separately try to create a ViewPager it's being referenced from "androidx.viewpager.widget", whereas in your library it is still referred from the support library as it pertains to the normal libraries and not AndroidX. Please provide an update or atleast a fix for this ASAP.

Screenshot 2019-03-29 at 1 18 29 PM

为ViewPager的子View添加事件后,长按屏幕AutoScroll无法stop

群主好啊,最近使用你的AutoViewPager的时候,发现了一个小问题。
通常当手指按住屏幕的时候,是可以暂停滑动的。当我为ImageView(我的ViewPagerAdpter的Item是ImageView)设定了onClick事件的时候,用手指长按屏幕就无法暂停滑动了。

我的理解是这样的:
根据View事件的分发机制,Event是从ViewPager的dispatchTouchEvent开始的,当在ViewPager的onInterceptTouchEvent中没有返回true,也就没有拦截事件的时候,就会分发到ImageView中,由于为ImageView设置了onClick事件,所以在onTouchevent里面会执行onClick事件,从而消费掉了该事件,因此事件就不会返回到ViewPager的onTouchEvent中,也就无法处理相应的逻辑了。

我的解决方案是:
将ViewPager中onTouchEvent的逻辑放到dispatchTouchEvent或者onInterceptEvent中去,这样就可以先控制ViewPager,然后再将事件传递到ImageView,让其自行处理。

上面的长按和onClick事件有点矛盾,下面是原因:
这里说下onClick和onLongClick,我通过log看到,即使你设置了onLongClick事件的处理,但是依旧会执行onClick事件,这是因为onLongClick事件默认返回了FALSE,事件没有消费掉,导致在action up的时候执行了onClick。所以也就是不管你是不是长按屏幕,都会执行onClick事件。也就是我长按屏幕时,事件被ImageView消费掉导致没法stop的原因。

在实际开发中,应该避免onClick和onLongClick同时触发的情况,所以在onLongClick方法里面返回FALSE,就可以了。当然这和上面的问题关联不是很大。

题外话:
看了下淘宝和携程还有网易音乐的广告栏
淘宝没有任何的限制,长按,或者move的时候,都可以继续轮循的。
携程的处理了move的情况,但没有处理长按的情况。
网易两种情况都处理了,并且onClick和onLongClick事件都响应了

这是我结合ViewPagerIndicator和你的AutoScrollViewPager而成的项目:https://github.com/lightSky/InfiniteAutoScroolView

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.