Git Product home page Git Product logo

autoscrollviewpager's Introduction

AutoScrollViewPager

Release License

README: English | 中文

Add to your project

Gradle

  • Add it in your root build.gradle at the end of repositories:
allprojects {
    repositories {
	...
	maven { url 'https://jitpack.io' }
    }
}
  • Add the dependency
dependencies {
    compile 'com.github.demoNo:AutoScrollViewPager:v1.0.2'
}

Maven

  • Add the JitPack repository to your build file
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
  • Add the dependency
<dependency>
    <groupId>com.github.demoNo</groupId>
    <artifactId>AutoScrollViewPager</artifactId>
    <version>v1.0.2</version>
</dependency>

Feature

  • Unlimited scrolling
  • Custom slide duration
  • Custom slide interval
  • Slide both right and left
  • todo

How to use

  • Use in xml
<com.github.demono.AutoScrollViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:stopWhenTouch="true"
    app:slideInterval="5000"
    app:slideDirection="right"
    app:slideDuration="5000"/>
  • Create an Adapter extends InfinitePagerAdapter
public class MyAdapter extends InfinitePagerAdapter {

    private List<String> data;

    public MyAdapter(List<String> data) {
        this.data = data;
    }

    @Override
    public int getItemCount() {
        return data == null ? 0 : data.size();
    }

    @Override
    public View getItemView(int position, View convertView, ViewGroup container) {
        return your view;
    }
}
  • Set Adapter
@Override
protected void onCreate(Bundle savedInstanceState) {
    AutoScrollViewPager mViewPager = (AutoScrollViewPager) findViewById(R.id.viewPager);
    MyAdapter mAdapter = new MyAdapter(data);
    mViewPager.setAdapter(mAdapter);
    // optional start auto scroll
    mViewPager.startAutoScroll();
}

More setting

  • startAutoScroll() Start auto scroll.
  • stopAutoScroll() Stop auto scroll.
  • setSlideInterval(int slideInterval) Set each item slide interval, default 5000ms.
  • setDirection(int direction) Set auto scroll direction DIRECTION_RIGHT or DIRECTION_LEFT, default RIGHT.
  • setStopWhenTouch(boolean stopWhenTouch) Whether stop when touch ViewPager, default true.
  • setCycle(boolean cycle) Whether auto scroll to first item when scroll to last item, only for Adapter that extends PagerAdapter, default false.
  • setSlideDuration(int slideDuration) Set each item scroll duration, default 800ms.

Credits

Licence

                    Copyright 2016 demoNo

   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.

autoscrollviewpager's People

Contributors

demono 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

Watchers

 avatar  avatar  avatar

autoscrollviewpager's Issues

Only limited scroll items. The viewpager is not taking more than 3 banners out of 7.

I have cloned the repository into my IDE, used it as per the instructions in my custom project. The pager is working as expected but, it is taking only 3 pages by default. I have 7 pages out of which first two will scroll one by one and then the pager directly jumps to the last page.

I had tried to make it a custom implementation but was unable to find the exact line where this is going on. Let me know if there is any scope of implementation of this kind.

On scrolling i am getting "specified child already has a parent. You must call removeView() on the child's parent first"

2019-06-13 18:13:33.275 7104-7104/com.vlv.aravali.preprod E/MessageQueue-JNI: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4583)
at android.view.ViewGroup.addView(ViewGroup.java:4424)
at androidx.viewpager.widget.ViewPager.addView(ViewPager.java:1485)
at android.view.ViewGroup.addView(ViewGroup.java:4364)
at android.view.ViewGroup.addView(ViewGroup.java:4337)
at com.vlv.aravali.views.widgets.scroller.v1.RecyclingPagerAdapter.instantiateItem(RecyclingPagerAdapter.java:34)
at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1224)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager$3.run(ViewPager.java:273)
at androidx.viewpager.widget.ViewPager.completeScroll(ViewPager.java:2005)
at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2135)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2247)

How to hide your Indicator

Hi, thanks for this library. i want use your libary, but when use this show me many Indicator in below of viewpager! how can i fix it?

How to use Indicator in your library?

I want use your library, i should show Indicator in viewPager.
for set Indicator i want use below code in adapter.

   @Override
    public int getCount() {
        return model.size();
    }

but when use above code in adapter, show many bugs in viewpager!

how can i use this?

Remove application label

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@label value=(@string/label_application) from AndroidManifest.xml:17:7-48
  	is also present at [com.github.demoNo:AutoScrollViewPager:v1.0.1] AndroidManifest.xml:13:9-41 value=(@string/app_name).
  	Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:6:3-8:37 to override.

Selected item page skip zero index in view pager while moving as per given interval

<com.github.demono.AutoScrollViewPager android:id="@+id/vpHomeBanner" android:layout_width="match_parent" android:layout_height="@dimen/dp_150" app:stopWhenTouch="true" android:layout_marginTop="@dimen/dp_4" app:slideDirection="right" app:slideInterval="1000" app:cycle="true" app:slideDuration="1000"/>

View Pager skip zero index for selection of given time interval

divide by zero when list is empty

java.lang.ArithmeticException: divide by zero at com.github.demono.adapter.InfinitePagerAdapter.getCount(InfinitePagerAdapter.java:24)

crash when trying to scroll fast with small fling action

when trying to scroll manually one of pager item with fast and small fling action, below crash happens.

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4915)
at android.view.ViewGroup.addView(ViewGroup.java:4746)
at android.support.v4.view.ViewPager.addView(ViewPager.java:1479)
at android.view.ViewGroup.addView(ViewGroup.java:4686)
at android.view.ViewGroup.addView(ViewGroup.java:4659)
at com.jakewharton.salvage.RecyclingPagerAdapter.instantiateItem(RecyclingPagerAdapter.java:38)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1004)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1186)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2124)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2504)
at com.github.demono.AutoScrollViewPager.dispatchTouchEvent(AutoScrollViewPager.java:260)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2961)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2593)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:445)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1828)
at android.app.Activity.dispatchTouchEvent(Activity.java:3292)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:407)
at android.view.View.dispatchPointerEvent(View.java:11961)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4790)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4604)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4142)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4195)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4161)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4288)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4169)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4345)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4142)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4195)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4161)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4169)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4142)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6663)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6637)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6598)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6766)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:325)
at android.os.Looper.loop(Looper.java:142)
at android.app.ActivityThread.main(ActivityThread.java:6565)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

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.