GithubHelp home page GithubHelp logo

alibaba / ultraviewpager Goto Github PK

View Code? Open in Web Editor NEW
5.0K 122.0 679.0 8.67 MB

UltraViewPager is an extension for ViewPager to provide multiple features in a single ViewPager.

License: MIT License

Java 100.00%
viewpager android multi-page-switching tangram

ultraviewpager's Introduction

Attention. This project is not maintained any more !!!

UltraViewPager

中文文档

ProjectUltraViewPager is a ViewPager extension that encapsulates multiple features, mainly to provide a unified solution for multi-page switching scenarios.

Example0 Example1 Example0 Example1

Main Feature

  • support horizontal scrolling and vertical scrolling
  • support multi views in one viewpager
  • support switching views circularly. For example, if there are 3 views to display in a ViewPager, it should switch back to the first view after the third view.
  • support auto-scrolling feature,implemented timer with Handler.
  • support setting max-height and max-width for this ViewPager.
  • support setting the aspect ratio for UltraViewPager.
  • UltraViewPager has a built-in indicator. support circle and icon style.
  • built-in two kind of page tansition animation.

you can combine multiple features at the same time.

Design

UltraViewPager is a super extension for ViewPager. It's actually a RelativeLayout in order to display ViewPager and Indicator.UltraViewPager offers some common method delegate for ViewPager, you can also invoke more method by call getViewPager() and get the actual ViewPager.

In order to achieve vertical scroll, through exchanging MotionEvent in onInterceptTouchEvent and onTouchEvent.For more details, you can read the source code.

Usage

Please find the latest version(1.0.7.7 so far) in maven repository. The newest version has been upload to jcenter and MavenCantral, make sure you have added at least one of these repositories.

Using Gradle:

//gradle
compile ('com.alibaba.android:ultraviewpager:1.0.7.7@aar') {
	transitive = true
}

or grab via Maven:

//pom.xml in maven
<dependency>
  <groupId>com.alibaba.android</groupId>
  <artifactId>ultraviewpager</artifactId>
  <version>1.0.7.7</version>
  <type>aar</type>
</dependency>

Create your own layout using a UltraViewPager:

activity_pager.xml

<com.tmall.ultraviewpager.UltraViewPager
    android:id="@+id/ultra_viewpager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:background="@android:color/darker_gray" />

You can follow my tutorial below on how to use UltraViewPager:

UltraViewPager ultraViewPager = (UltraViewPager)findViewById(R.id.ultra_viewpager);
ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL);
//initialize UltraPagerAdapter,and add child view to UltraViewPager
PagerAdapter adapter = new UltraPagerAdapter(false);
ultraViewPager.setAdapter(adapter);

//initialize built-in indicator
ultraViewPager.initIndicator();
//set style of indicators
ultraViewPager.getIndicator()
    .setOrientation(UltraViewPager.Orientation.HORIZONTAL)
    .setFocusColor(Color.GREEN)
    .setNormalColor(Color.WHITE)
    .setRadius((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics()));
//set the alignment
ultraViewPager.getIndicator().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
//construct built-in indicator, and add it to  UltraViewPager
ultraViewPager.getIndicator().build();

//set an infinite loop
ultraViewPager.setInfiniteLoop(true);
//enable auto-scroll mode
ultraViewPager.setAutoScroll(2000);

For other API reference,see this to read more.

FAQ

  • How to refresh data? you can refresh data by any one below three method:
    • ultraViewPager.refresh();
    • ultraViewPager.getWrapAdapter().notifyDataSetChanged();
    • mViewPager.getViewPager().getAdapter().notifyDataSetChanged();

DEMO

Demo Project

Contributing

Before you open an issue or create a pull request, please read Contributing Guide first.

LICENSE

UltraViewPager is available under the MIT license.

ultraviewpager's People

Contributors

alibaba-oss avatar jiangbin1937 avatar longerian avatar masont3 avatar mikeafc avatar nex3z avatar ryee1 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultraviewpager's Issues

使用 FragmentPagerAdapter 时抛出异常 java.lang.IllegalStateException: ViewPager with adapter XXX requires a view id

UltraViewPagersetAdapter() 中使用 FragmentPagerAdapter 时抛出 java.lang.IllegalStateException 异常,信息如下:

Process: test.fragmentpagerdemo, PID: 26425
java.lang.IllegalStateException: ViewPager with adapter test.fragmentpagerdemo.MainActivity$NumberFragmentPagerAdapter@23052a8 requires a view id
at android.support.v4.app.FragmentPagerAdapter.startUpdate(FragmentPagerAdapter.java:81)
at com.tmall.ultraviewpager.UltraViewPagerAdapter.startUpdate(UltraViewPagerAdapter.java:189)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1148)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642)
at com.tmall.ultraviewpager.UltraViewPagerView.onMeasure(UltraViewPagerView.java:83)
at android.view.View.measure(View.java:19740)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at com.tmall.ultraviewpager.UltraViewPager.onMeasure(UltraViewPager.java:170)
at android.view.View.measure(View.java:19740)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19740)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120)
...

复现代码见这里

FragmentPagerAdapter 要求 ViewPager 具有一个 idUltraViewPager 里的 UltraViewPagerView 没有 id,导致此异常。

关于无限循环问题

设置无限循环的时候,代码写死了getCount * 4 是什么意思?
当循环完后,又会跑到第一张,这时候有个动画。有没有办法可以不要动画?
我设置了setCurrentItem后回到了第一张,但是,在UltraScaleTransformer的模式下有个问题,中间的item跟左边的item粘一起,没用间距了。有没有什么好的方案可以实现无限循环问题呢

Vertical Mode 时的滑动感知阈值问题

关于垂直滑动的实现,应该是跟下面这个库完全相同
https://github.com/kaelaela/VerticalViewPager
但是这种实现有个很明显的问题,就是在转换坐标后并没有很好的处理滑动在 水平和 垂直上的判断比例,
造成 不那么标准的垂直滑动 会无法触发 ViewPager的滑动。
setPageMargin 也会因为宽高比的翻转而得不到想要的 margin。

设置item之间距离无效

设置item之间的距离是否是用下图的属性,设置后无效
image
image

建议api文档写的详细点,现在好多属性都要挨个试验才能知道具体功能

不支持FragmentPagerAdapter的扩展

android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
at android.content.res.Resources.getResourceName(Resources.java:2140)

手动滚动的问题

打开自动滚动后,一直手动向左滑动,会出现滑不动和跳第一页的情况,能否在触摸的时候停止自动滚动。

建议将一些API开放访问

在无限循环的模式下:
目前只提供了 getNextItem() 方法获取下个Item的下标,如果我想获取上个Item的下标比较麻烦。
1.无法调用 getCurrentItemFake() 方法获取真实的下标
2.直接调用 getCurrentItem() 方法获取到的是计算后的真实下标,在无限循环模式不能直接减 1 计算上个Item的下标,需要判断当前下标是否为0,然后设置上个I tem 的下标为数据源的 size-1

希望开放这些 API 对外访问。

PageMargin?

hi,
i couldn't find the pageMargin method.
i want to put spacing between pages in vertical/horizontal mode.

is it possible to use setMultiScreen with page margin in both ways (vertical, horizontal)?

[bug] 首页的pagerAdapter内容改变并没有更新banner里的内容

'''java
RequestServerTask: java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 800, found: 2000 Pager id: 2 Pager class: class com.tmall.ultraviewpager.UltraViewPagerView Problematic adapter: class com.tmall.ultraviewpager.UltraViewPagerAdapter
at android.support.v4.view.ViewPager.populate(ViewPager.java:1134)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:666)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:628)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:620)
at com.tmall.ultraviewpager.UltraViewPagerView.setCurrentItem(UltraViewPagerView.java:215)
at com.tmall.ultraviewpager.UltraViewPagerView.setCurrentItem(UltraViewPagerView.java:207)
at com.tmall.ultraviewpager.UltraViewPager.setCurrentItem(UltraViewPager.java:419)
at com.redteamobile.roaming.fragments.MainLocationFragment.notifyBanner(MainLocationFragment.java:405)
at com.redteamobile.roaming.fragments.MainLocationFragment.refreshBanner(MainLocationFragment.java:362)
at com.redteamobile.roaming.fragments.MainLocationFragment.onGetBanner(MainLocationFragment.java:430)
at com.redteamobile.roaming.fragments.AllLocationsFragment$9.onSuccess(AllLocationsFragment.java:362)
at com.redteamobile.roaming.fragments.AllLocationsFragment$9.onSuccess(AllLocationsFragment.java:349)
at com.redteamobile.masterbase.remote.RequestServerTask.onPostExecute(RequestServerTask.java:33)
at com.redteamobile.masterbase.remote.RequestServerTask.onPostExecute(RequestServerTask.java:10)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:179)
at android.app.ActivityThread.main(ActivityThread.java:5672)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
'''

Messed up

#35 #32
This is the error =

08-27 13:54:30.003 11262-11262/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: ir.agcom.mylitener, PID: 11262
                                                   java.lang.NullPointerException: Attempt to invoke virtual method 'int com.tmall.ultraviewpager.UltraViewPagerAdapter.getCount()' on a null object reference
                                                       at com.tmall.ultraviewpager.UltraViewPagerView.getCurrentItem(UltraViewPagerView.java:217)
                                                       at com.tmall.ultraviewpager.UltraViewPagerView.onMeasurePage(UltraViewPagerView.java:86)
                                                       at com.tmall.ultraviewpager.UltraViewPagerView.onMeasure(UltraViewPagerView.java:82)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
                                                       at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
                                                       at com.tmall.ultraviewpager.UltraViewPager.onMeasure(UltraViewPager.java:179)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1028)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
                                                       at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
                                                       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
                                                       at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
                                                       at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
                                                       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
                                                       at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
                                                       at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535)
                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
                                                       at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615)
                                                       at android.view.View.measure(View.java:17547)
                                                       at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015)
                                                       at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173)
                                                       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379)
                                                       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
                                                       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
                                                       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                                                       at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                                                       at android.view.Choreographer.doFrame(Choreographer.java:550)
                                                       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                                                       at android.os.Handler.handleCallback(Handler.java:739)
                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                       at android.os.Looper.loop(Looper.java:135)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at java.lang.reflect.Method.invoke(Method.java:372)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

and this is my layout =

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.tmall.ultraviewpager.UltraViewPager android:id="@+id/top_pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:upv_scrollmode="horizontal"
        app:upv_multiscreen="true"/>

    <com.tmall.ultraviewpager.UltraViewPager android:id="@+id/bottom_pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:upv_scrollmode="horizontal"
        app:upv_multiscreen="true"/>

</LinearLayout>

This happens when i try to inflate this layout.
Also, Error is shown in android studio layout preview.
Using library version 1.0.6

graphic-bug when swiching from portrait to landscape

When I use your library in portrait mode, everything looks fine (sorry about the pictures)
20170821_155516
:
But when a rotate my phone to landscape, the gap between the menu items increase so much, that only one menu item is shown at a time:

20170821_155527

When I move to the next menu item, the picture enlarges by a lot:

20170821_155538

And when I rotate back to portrait, the menu items are overlapping:
20170821_155601

Otherwise everything works great.

Any ideas whats goind on?

数据更新后,调用notifyDataSetChanged无效并且异常退出

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 0, found: 1200 Pager id: 1 Pager class: class com.tmall.ultraviewpager.UltraViewPagerView Problematic adapter: class com.tmall.ultraviewpager.UltraViewPagerAdapter
at android.support.v4.view.ViewPager.populate(ViewPager.java:1167)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:622)
at com.tmall.ultraviewpager.UltraViewPagerView.setCurrentItemFake(UltraViewPagerView.java:235)
at com.tmall.ultraviewpager.UltraViewPager.scrollNextPage(UltraViewPager.java:360)
at com.tmall.ultraviewpager.UltraViewPager$2.callBack(UltraViewPager.java:293)
at com.tmall.ultraviewpager.TimerHandler.handleMessage(TimerHandler.java:55)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)

compileSdkVersion 25
buildToolsVersion "25.0.2"

Page curl

Hello,
Is there any plan to support a PageCurl Transformer? Thanks.

question

Process: com.tmall.ultraviewpager.sample, PID: 20920 java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 622, found: 623 Pager id: 1 Pager class: class com.tmall.ultraviewpager.UltraViewPagerView Problematic adapter: class com.tmall.ultraviewpager.UltraViewPagerAdapter at android.support.v4.view.ViewPager.populate(ViewPager.java:1000) at android.support.v4.view.ViewPager.populate(ViewPager.java:952) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1474) at com.tmall.ultraviewpager.UltraViewPagerView.onMeasure(UltraViewPagerView.java:83) at android.view.View.measure(View.java:17547) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463) at com.tmall.ultraviewpager.UltraViewPager.onMeasure(UltraViewPager.java:177)

any support for R2L ?

android native view pager did NOT support RTL by default any work around that in UltraViewPager?

Indicator 不居中

设置Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL后,Indicator整体显示略微偏左

Not real loop

不是真正的无限循环,循环一两次后不再循环

更新问题+崩溃(bug)

demo项目依赖
compile 'com.android.support:appcompat-v7:25.3.1'
继承AppCompatActivity
notifyDataSetChanged();无效

去掉依赖
compile 'com.android.support:appcompat-v7:25.3.1'
继承AppCompatActivity
notifyDataSetChanged();有效

Error on adapter update

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 0, found: 4 Pager id: ffffffff Pager class: class com.tmall.ultraviewpager.UltraViewPagerView Problematic adapter: class com.tmall.ultraviewpager.UltraViewPagerAdapter

i'd updated adapter just a simple
image

崩溃

布局中有UltraViewPager,进入界面必须第一时间设置一个Adaper,等一下设置就会崩溃

parameter must be a descendant of this view

我把ultraviewpager放在列表的head上,设置UltraViewPager.setInfiniteLoop(true); 滑动轮播闪退,不加这个设置就没问题。
使用com.alibaba.android:ultraviewpager:1.0.3@aar
错误日志:

java.lang.IllegalArgumentException: parameter must be a descendant of this view
                                                                       at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5515)
                                                                       at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5444)
                                                                       at android.view.ViewGroup$ViewLocationHolder.init(ViewGroup.java:7935)
                                                                       at android.view.ViewGroup$ViewLocationHolder.obtain(ViewGroup.java:7869)
                                                                       at android.view.ViewGroup$ChildListForAccessibility.init(ViewGroup.java:7804)
                                                                       at android.view.ViewGroup$ChildListForAccessibility.obtain(ViewGroup.java:7772)
                                                                       at android.view.ViewGroup.addChildrenForAccessibility(ViewGroup.java:2015)
                                                                       at android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal(ViewGroup.java:3117)
                                                                       at android.view.View$AccessibilityDelegate.onInitializeAccessibilityNodeInfo(View.java:23632)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatIcs.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompatIcs.java:101)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompat.java:198)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompat.java:451)
                                                                       at android.support.v4.view.ViewPager$MyAccessibilityDelegate.onInitializeAccessibilityNodeInfo(ViewPager.java:3069)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompat.java:246)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityNodeInfo(AccessibilityDelegateCompatJellyBean.java:66)
                                                                       at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6621)
                                                                       at android.view.View.createAccessibilityNodeInfoInternal(View.java:6582)
                                                                       at android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo(View.java:23701)
                                                                       at android.view.View.createAccessibilityNodeInfo(View.java:6565)
                                                                       at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
                                                                       at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
                                                                       at android.view.View.onInitializeAccessibilityEventInternal(View.java:6519)
                                                                       at android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent(View.java:23613)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatIcs.onInitializeAccessibilityEvent(AccessibilityDelegateCompatIcs.java:97)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:192)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:432)
                                                                       at android.support.v4.view.ViewPager$MyAccessibilityDelegate.onInitializeAccessibilityEvent(ViewPager.java:3054)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:241)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:61)
                                                                       at android.view.View.onInitializeAccessibilityEvent(View.java:6505)
                                                                       at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:6368)
                                                                       at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:23552)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:122)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:223)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:371)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:268)
   at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatJellyBean.java:87)
                                                                       at android.view.View.sendAccessibilityEventUnchecked(View.java:6351)
                                                                       at android.view.View.sendAccessibilityEventInternal(View.java:6330)
                                                                       at android.view.View$AccessibilityDelegate.sendAccessibilityEvent(View.java:23510)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEvent(AccessibilityDelegateCompatIcs.java:117)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEvent(AccessibilityDelegateCompat.java:217)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEvent(AccessibilityDelegateCompat.java:349)
                                                                       at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEvent(AccessibilityDelegateCompat.java:263)
                                                                       at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.sendAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:82)
                                                                       at android.view.View.sendAccessibilityEvent(View.java:6295)
                                                                       at android.view.View$SendViewScrolledAccessibilityEvent.run(View.java:23416)
                                                                       at android.os.Handler.handleCallback(Handler.java:755)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                       at android.os.Looper.loop(Looper.java:156)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6524)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)

Bitmap Images doesn't show

When i load bitmap images , it doesn't show me result..
but when i use normal image it shows perfectly..
Actually, problem is pager takes lots of memory..of my phone..
so what i do??

某些机型会报bug,我的是mate9

image

ULtraViewPagerView.java这个onmeasure方法,没有判空的话会报bug,我只是加了一个判断,不知道会不会引起别的问题,博主可以看下

问题

左边的空,怎么去掉。例子中的Scale Transformer中的

过渡的效果未显示

官方demo选择DepthTransformer模式,在机型为华为meta 9 pro上切换时直接闪烁显示下一个item,没有过渡动画,且设置的一屏多显也没有作用.请大大看看
Screenshot_20170705-125615.png

viewpager显示bug

7379b69d-27d0-42b1-b181-d7d99644558a

会把下一屏的一部分显示到这一屏上
setPageMargin((int) (-(pageMargin + convertDp2Px(getContext(), 1f))));
为什么右侧有个1f的margin?

希望添加viewpager自动轮播时mScroller的速度

希望添加viewpager自动轮播时mScroller的速度,自动轮播时只是使用了setCurrentItem的smoothScroll,这个切换手动滑动是好,自动轮播的时候还是太快了,建议加入控制速度的

MultiScreen doesn't work in Vertical mode

hi,
in vertical mode, it can not display the multi page.

            ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.VERTICAL);
            adapter = new UltraPagerAdapter(true);
            ultraViewPager.setAdapter(adapter);
            ultraViewPager.setMultiScreen(0.6f);
            ultraViewPager.setItemRatio(1.0f);

java.lang.NullPointerException: Attempt to invoke virtual method 'int com.tmall.ultraviewpager.UltraViewPagerAdapter.getCount()' on a null object reference

好像是因为布局文件嵌套太多吗? 尽量减少了布局嵌套就没有这个问题了。,想问下大神。具体的该如何避免这种错误呢,

java.lang.NullPointerException: Attempt to invoke virtual method 'int com.tmall.ultraviewpager.UltraViewPagerAdapter.getCount()' on a null object reference
at com.tmall.ultraviewpager.UltraViewPagerView.getCurrentItem(UltraViewPagerView.java:220)
at com.tmall.ultraviewpager.UltraViewPagerView.onMeasurePage(UltraViewPagerView.java:88)
at com.tmall.ultraviewpager.UltraViewPagerView.onMeasure(UltraViewPagerView.java:84)
at android.view.View.measure(View.java:20171)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at com.tmall.ultraviewpager.UltraViewPager.onMeasure(UltraViewPager.java:177)
at android.view.View.measure(View.java:20171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:20171)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:20171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
at android.view.View.measure(View.java:20171)
at android.support.v7.widget.GridLayoutManager.measureChildWithDecorationsAndMargin(GridLayoutManager.java:724)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:575)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574)
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2906)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:344)
at android.widget.FrameLayout.onLayout(FrameLayout.java:281)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1742)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1767)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1742)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:344)
at android.widget.FrameLayout.onLayout(FrameLayout.java:281)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1742)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17945)
at android.view.ViewGroup.layout(ViewGroup.java:5812)
at a

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.