Man*_*noj 12 android android-viewpager
我想知道ViewPager视图是否滚动了一半的屏幕?
当我拖动它时,如果它覆盖了屏幕的一半,我想要更改页面.
例如,如果我在MDPI上测试,即屏幕宽度为320px,如果我将ViewPager的页面拖动160px,那么我想更改页面.
如何从ViewPager的视图覆盖这半距离?
ol0*_*ol0 20
使用OnPageChangeListener的方法.如果用户滚动了超过一半的屏幕,则onPageScrolled方法返回positionOffset> 0.5. http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
我假设您想要在页面滚动一半屏幕时更新一些静态视图,而不必等待它滚动整页宽度.这是我使用onPageScrolled回调解决此问题的方法.
@Override
public void onPageScrolled( int position , float positionOffset , int positionOffsetPixels )
{
if ( position == mCurrentSelectedScreen )
{
// We are moving to next screen on right side
if ( positionOffset > 0.5 )
{
// Closer to next screen than to current
if ( position + 1 != mNextSelectedScreen )
{
mNextSelectedScreen = position + 1;
updateStaticViewsForScreen( mNextSelectedScreen );
}
}
else
{
// Closer to current screen than to next
if ( position != mNextSelectedScreen )
{
mNextSelectedScreen = position;
updateStaticViewsForScreen( mNextSelectedScreen );
}
}
}
else
{
// We are moving to next screen left side
if ( positionOffset > 0.5 )
{
// Closer to current screen than to next
if ( position + 1 != mNextSelectedScreen )
{
mNextSelectedScreen = position + 1;
updateStaticViewsForScreen( mNextSelectedScreen );
}
}
else
{
// Closer to next screen than to current
if ( position != mNextSelectedScreen )
{
mNextSelectedScreen = position;
updateStaticViewsForScreen( mNextSelectedScreen );
}
}
}
}
@Override
public void onPageSelected( int arg0 )
{
updateStaticViewsForScreen( arg0 );
mCurrentSelectedScreen = arg0;
mNextSelectedScreen = arg0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16414 次 |
| 最近记录: |