Articles of android viewpager

FragmentStatePagerAdapter内存泄漏(带有viewpager的嵌套片段)

我的适配器中有“内存泄漏”(引用将在后面解释)。 我目前正在使用嵌套片段来托管viewpager。 我的设置如下: 1.活动(托管片段A的空活动) 2.片段A – 使用Fragmentstatepageradapter托管viewpager的片段。 每个viewpager页面都托管片段B. 3.片段B – 包含imageview的片段。 除非发生配置更改,否则一切都很顺利。 监视堆,每次旋转时它似乎增长100 kb。 手动GCing不会释放内存。 我尝试过的事情: 1.用空白片段替换片段B – 出现同样的问题,因此不是造成问题的imageview。 2.删除片段A和B并旋转活动。 没有发生内存泄漏,因此它不是活动。 3.在任何方向改变之前使用MAT并且在旋转大约50次之后使用MAT以使堆积起来。 MAT显示了1个主要的嫌疑人,这是我的适配器类。 它显示了7MB的保留堆(非常小的浅堆)观察者,如下所示: array java.util.ArrayList @ 0x42079938 24 7,000,832 .\mObservers android.database.DataSetObservable @ 0x42053508 16 7,000,848 ..\mObservable com.example.main.Adapter@ 0x4205a048 40 7,001,416 为什么我在片段中使用viewpager: 1.我想通过设置setretaininstance(true)来保持适配器的状态和与viewpager相关的其他variables。 2.配置更改后,我不重新创建适配器,而是使用旧的适配器附加到viewpager。 3.如果我不重用旧适配器但在配置更改后创建新适配器,则内存泄漏消失。 4.关闭活动并返回上一个活动后,内存泄漏也消失了。 有任何想法吗? 非常感谢任何帮助。 谢谢,JC

有没有办法在毕加索加载默认图像

由于只有毕加索知道的修道院,我无法从我的绘画加载毕加索的图像,所以当毕加索无法加载我想加载默认图像请帮助 @Override public Object instantiateItem(ViewGroup container, final int position) { final Context context =getApplicationContext(); final ImageView imageView = new ImageView(getApplicationContext()); int padding = context.getResources().getDimensionPixelSize( R.dimen.padding_medium); imageView.setPadding(padding, padding, padding, padding); PicassoTools.clearCache(Picasso.with(context)); ((ViewPager) container).addView(imageView, 0); imageView.setTag(“myview” + position); Picasso.with(context).load(mImages[position]).resize(320,280).centerInside().placeholder(placeholderDrawable) .into(imageView,new Callback() { @Override public void onError() { // TODO Auto-generated method stub imageView.setImageResource(R.drawable.c3); } @Override public void […]

如何更新ViewPager内容?

我有一个星期几的PageAdapter ,对于每个寻呼机,我都有相同的布局。 我的问题是如何在更改日期时更新正确的listView。 当我改变寻呼机创建新寻呼机并删除其他时,发生这种情况时,我的列表视图指向新的寻呼机,但不是当前的。 例如,是wedneyday,我保存listview引用,当我改变星期二时,星期一寻呼机是创建和星期四被删除,我的参考点到最后一页创建(星期一)但我在星期二。 我的页面适配器: 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始终指向当前项目的listview。

FragmentPagerAdapter的问题

我正在尝试使用viewpager和片段制作幻灯片,这样我就可以为每个片段加载不同的布局,并为每个页面提供不同的function。 我按照教程来完成这个。 将public Fragment getItem(int arg0)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 […]

向ViewPager添加标题

我已经为可滑动的标签设置了ViewPager,现在我想在页面顶部添加标题以指示正在显示的片段。 这是到目前为止的代码: activity_main.xml中 MainActivity.java public class MainActivity extends FragmentActivity { private PagerAdapter mPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); this.initialisePaging(); } private void initialisePaging() { List fragments = new Vector(); // Add fragments here fragments.add(Fragment.instantiate(this, PickerFragment.class.getName())); fragments.add(Fragment.instantiate(this, DisplayFragment.class.getName())); this.mPagerAdapter = new PageAdapter(super.getSupportFragmentManager(), fragments); ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager); pager.setAdapter(this.mPagerAdapter); } } PageAdapter.java public class […]

使用后台时Android ViewPager性能问题

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

Android ViewPager滞后

您好我有一个包含多个页面的viewpager(使用片段状态寻呼机),以及一些png作为这些页面的背景。 我已经按照Ui中的显示位图( http://developer.android.com/training/displaying-bitmaps/display-bitmap.html )进行操作,因此我已经在后台线程中缓存并设置了可绘制的图像。 但是,当浏览页面的页面时,我仍然会遇到一些延迟。 在每个片段上,我只在onCreateView()方法上膨胀视图,所以我不知道可能导致这种延迟的原因。 我该怎么做才能消除这种滞后/波涛汹涌的影响?

页面curl与视图寻呼机

我必须使用Viewpager实现页面curl ,以便在用户滑动时添加到视图寻呼机的布局具有页面curl效果。 我已经下载了github.com/harism/android_page_curl,但它似乎只适用于大多数其他实现的图像..任何人都可以告诉我一个解决方法,以便我可以执行页面curl与我的观点添加到视图寻呼机? 谢谢。

在ViewPager中具有垂直滚动页面

这可能是显而易见的,也是一个完全不需要的post,但我在解决一种允许在VewPager页面上实现垂直滚动function的方法时遇到了相当大的问题,并且谷歌甚至在这里都有很少的分辨率。 我发现有些人声称要解决这个问题,但他们似乎已经延长和复杂了。 因此,对于那些可能正在寻找相同问题的人来说,这是解决方案。 有了这个(并且你想要制作比我在这里写的更大的字符串),你将能够垂直滚动内容并在页面之间滑动。 layout.xml 滚动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 = (ViewPager) findViewById(R.id.conpageslider); pager.setAdapter(ps); } public class PageSlider extends PagerAdapter{ […]

ViewPager从另一个片段背面留空

实际上,我在主视图容器中通过片段在单个活动中使用整个应用程序。 当我点击一个由LoginFragment替换的标题按钮片段时,一个片段包含一个viewPager,并且在返回时我们维护backstack因此包含viewPager的片段将位于顶部,但是我们在viewPager获得了当前项目的空白视图。