Articles of android viewpager

使用Android的SlidingPaneLayout和ViewPager

我正在尝试像ViewPager一样使用SlidingPaneLayout <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scientific_graph_slidingPaneLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!– The first child view becomes the left pane. –> <ListView android:id="@+id/left_pane" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="left" /> <!– The second child becomes the right (content) pane. –> <android.support.v4.view.ViewPager android:id="@+id/scientific_graph_viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </android.support.v4.widget.SlidingPaneLayout> 当我从左边拉动时,SlidingPaneLayout滑动; 然而,当我从右边拉时,我似乎无法让ViewPager滑动。 当我从右边缘拉,它滑动很less,然后反弹。 这样做甚至可能吗? 有一个更好的方法吗? 我发现通过将手指向上移动到左侧,我可以滑动视图寻呼机。

问题与FragmentPagerAdapter

我试图用viewpager和片段制作一个幻灯片,这样我就可以为每个片段加载不同的布局,并为每个页面提供不同的function。 我跟着一个教程来完成这个。 hover在public Fragment getItem(int arg0)时出现的错误:返回types与FragmentPagerAdapter.getItem(int)不兼容 和错误#2:构造函数FragmentPagerAdapter(FragmentManager)是未定义的 – >hoversuper(fm);时得到这一个super(fm); package com.example.spui; import android.os.Bundle; import android.app.Fragment; import android.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 5; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } /** This method will be invoked when a page is requested to create */ […]

Android ViewPager使用不同的animation像放大,淡入淡出等

我创build了ViewPager,只有2个页面,当页面滚动页面到另一个页面时,我想把淡入,缩放,缩放,3d等animation,意味着第二个整个页面显示与特定的animation,我没有想法到如何做到这一点,请任何一个给我一个例子,当移动到另一个页面时,我们animation传呼机的animation。 主要我有三个类寻呼机:1)ViewPagerMainActivity:它在这里调用两个片段在这个主要样子如enter code here public class ViewPagerMainActivity extends FragmentActivity implements OnClickListener, OnPageChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_pager_main); <other code here> } private class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter( android.support.v4.app.FragmentManager fragmentManager) { super(fragmentManager); } @Override public Fragment getItem(int pos) { switch (pos) { case 0: return FirstFragment.newInstance(""); case 1: return SecondFragment.newInstance(""); […]

Android ViewPager在使用后台时的性能问题

我有一个由XML制作的Activity ,我已经将它的背景设置为我的可绘制文件夹中的背景图片。 在同一个活动中,我创build了一个ViewPager来允许在视图之间来回切换。 ViewPager所有视图ViewPager包含一个图像。 每当我向左或向右滑动时,转换非常缓慢。 我试图通过设置为白色(#fff)去除背景图像,所有的滞后都消失了。 它工作完美! 问题是我确实需要应用程序的背景。 有没有什么办法来优化背景图片或什么东西,所以刷卡将再次顺利? 目前由于滞后而使用太令人沮丧。 我也尝试将图像裁剪成小尺寸,然后将其延伸到屏幕上,但是我没有注意到任何性能改进。 此外,它不是位于ViewPager的图像错误,当我用TextViewstesting它,而不是相同的滞后。

ViewPager + FragmentStatePagerAdapter +方向更改

我有一点问题:我有一个页面的ViewPager,我使用FragmentStatePagerAdapter来处理数据。 在肖像中,我有例如ViewPager的20页和在景观中,我只有10页的ViewPager。 所以在一个方向改变我创build一个新的适配器与不同的数据。 这里有一个小的解释,为什么:我在纵向上显示一个图像,在横向上显示两个图像,但总是在数量上。 如果我有10张照片要显示,我有10张纵向照片和5张横向照片(总是两张)。 但现在我有一个奇怪的错误:当我在索引5的景观,并转动设备,ViewPager的当前页面设置为10.如果我把它又回来了,我在页面5上。如果我现在将页面刷到页面10适配器的方法getItem永远不会被调用,并且ViewPage向我显示一个肖像图片,而不是两个风景。 这怎么可能发生? 在适配器或ViewPager中是否有caching? 在Activity的onCreate中,一切都是新创build的,适配器以及ViewPager的数据(只是带有path的string)。 那么任何想法如何解决这个真正可怕的“function”? 这里是一些代码: 的onCreate: mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources() .getConfiguration().orientation); mPageReader = (ReaderViewPager) findViewById(R.id.pager); mPageReader.setAdapter(mViewPagerAdapter); 适配器getItem: public Fragment getItem(final int index) { final PageInfo pageInfo = mPages.get(index); final PageFragment pageFragment = (PageFragment) PageFragment .instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs); return pageFragment; } 如果你需要更多的东西,请告诉我。 谢谢

如何更新ViewPager内容?

我有这个PageAdapter与星期几,为每个传呼机我有相同的布局。 我的问题是如何更新右侧listView更改一天。 当我改变一天寻呼机创build一个新的寻呼机并删除其他,当发生这种情况我的列表视图指向新的寻呼机,但不是当前。 例如,是wedneyday,我保存列表视图引用,当我改变星期二星期一寻呼机是创build和星期四被删除,并且我的参考点到最后一页创build(星期一),但我在星期二。 我的页面适配器: ListView lvwConfig; @Override public Object instantiateItem(View pager, int position) { LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.pager_layout, null); lvwConfig = (ListView) v.findViewById(R.id.lvwConfig); ((ViewPager) pager).addView(v, 0); return v; } 我想ListView总是指向当前项目的列表视图。

Viewpager和FragmentPagerAdapter:页面视图删除

我正在使用Viewpager和FragmentPagerAdapter来允许添加和删除页面。 每个页面显示从互联网上获得的数据。 当新页面被添加时,新的片段与该页面相关联。 数据通过AsyncTask获取并显示在Fragment中。 当用户select删除一个页面,这个想法是销毁页面和关联的片段。 一般来说,这一切运作良好。 我看到的问题如下: 你有三个页面的数据: [第1页] [第2页] [第3页] 你删除了最后一页以外的任何页面,比如第2页; 第2页消失如所愿: [第1页] [第3页] 你添加一个新的页面; 而不是空白的新页面,新页面显示页面3中的数据(视图)。 [第1页] [第3页] [第4页,但是显示第3页的视图/数据应该是空白] 我的活动页面删除代码如下: // Destroy fragment for this page DataListFragment curFrag = getFragmentByName(currentPage); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction().remove(curFrag).commit(); fm.executePendingTransactions(); curFrag = null; // Remove page and update adapter mPageTitles.remove(position); mAdapter.notifyDataSetChanged(); 使用debugging器,它显示在执行executePendingTransactions()调用之后,片段将从FragmentManager移除。 但在FrampePagerAdapters调用mAdapter.notifyDataSetChanged() ,片段被重新添加,然后在创build新页面时显示。 我尝试使用FrameStatePagerAdapter,因为这应该允许销毁碎片​​,但它不起作用。 在我的FragmentPagerAdapter的getItemPosition()方法中,我使用return FragmentAdapter.POSITION_NONE; 正如我在另一篇文章中指出的那样。 […]

在ActivityGroup中的Activity中,使用Pull来刷新viewpager中的gridview会导致ClassCastException

我正在尝试使用ViewPager的PullToRefresh GridView导致崩溃给ClassCastException。 这是例外。 FATAL EXCEPTION: main java.lang.ClassCastException: android.support.v4.view.ViewPager$LayoutParams at android.widget.LinearLayout.measureVertical(LinearLayout.java:360) at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) at android.view.View.measure(View.java:8313) at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381) at android.view.View.measure(View.java:8313) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) at android.view.View.measure(View.java:8313) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) at android.view.View.measure(View.java:8313) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) at android.view.View.measure(View.java:8313) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) at android.view.View.measure(View.java:8313) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) at android.view.View.measure(View.java:8313) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365) at […]

带有WebView的ViewPager允许轻扫和禁止滚动WebView

我使用ViewPager和WebView将HTML内容呈现为电子书。 在ViewPager的一些页面上,我允许TouchEvent被WebView处理,在一些页面上,我让ViewPager自己处理TouchEvent ,方法是覆盖onInterceptTouchEvent中的ViewPager方法(有些页面没有WebView第一个TextViews和Buttons和最后一页在这里)。 这里是代码相同的, @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (getCurrentItem() == 0 || getCurrentItem() == getAdapter().getCount() – 1) return false; else { if (ev.getAction() == MotionEvent.ACTION_DOWN) { return false; } return true; } } 我再次禁止通过在WebView使用以下代码设置OnTouchListener进行滚动: contentView.setOnTouchListener((v, event) -> { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_MOVE) { ((BigBeeViewPager) v.getParent().getParent()).onInterceptTouchEvent(event); } return true; }); 我面对的问题是 – 当我试图从页面中间滑动ViewPager它不起作用。 […]

在ViewPager中垂直滚动页面

这可能是显而易见的,也是完全不需要的post,但是我一直在解决在VewPager的页面上允许垂直滚动function的问题,而且在这里甚至有很less的解决scheme。 我发现一些人声称要解决这个问题,但他们似乎被延长和纠结。 所以对于那些可能正在寻找相同问题的人inheritance解决scheme。 有了这个(你会想比我写的更大的string),你将能够垂直滚动内容,并在页面之间滑动。 layout.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/conpageslider" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> 滚动viewpager类 public class ScrollingViewPager extends Activity{ private ViewPager pager; private Context cxt; private CharSequence[] pages = {"stuff", "more stuff", "other stuff"}; private PageSlider ps; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.layout); cxt = this; ps = new PageSlider(); pager = […]