Android 用于自定义画布对象视图的ViewPager
我正在寻找一个解决方案来实现自定义视图的ViewPager。有很多关于ViewPager的教程,可以扩展xml布局,但是我找不到一个自定义视图的示例。 我的自定义视图类在画布上绘制多个对象(周围有文本的圆圈)。 通过实现OnTouchListener,可以移动和缩放对象。 对象是动态生成的(文本来自ArrayList) 在活动中,我用不同的参数实例化了一个新视图:Android 用于自定义画布对象视图的ViewPager,android,android-viewpager,android-canvas,Android,Android Viewpager,Android Canvas,我正在寻找一个解决方案来实现自定义视图的ViewPager。有很多关于ViewPager的教程,可以扩展xml布局,但是我找不到一个自定义视图的示例。 我的自定义视图类在画布上绘制多个对象(周围有文本的圆圈)。 通过实现OnTouchListener,可以移动和缩放对象。 对象是动态生成的(文本来自ArrayList) 在活动中,我用不同的参数实例化了一个新视图: this.mRenderCircleView = new RenderCircleView(this, resultList, sh
this.mRenderCircleView = new RenderCircleView(this, resultList, showDemo);
resultList包含一个ArrayList
,其中包含要在RenderCircView中绘制的圆。
在这种情况下,我想实现ViewPager,如果ArrayList(>5)中有很多圆形项目,并且由于性能问题,以前创建和加载所有视图是不好的。所以我认为最好的选择是碎纸机。这应该是交互式内容的更好解决方案
但我不知道它是怎么工作的。片段的计数将取决于给定ArrayList的大小除以RenderCircView中应绘制的元素的计数。例如,ArrayList大小为20,每个页面上应绘制5个圆形对象,然后我需要4个页面(片段)
在这种情况下,使用ViewPager最简单的方法是什么?如果我理解正确,结果列表中的每个条目都代表一个圆圈。 使用FragmentStatePagerAdapter确实是个好主意 你可以这样解决: 您的活动承载一个带有ViewPager对象的布局。ViewPager承载一个片段列表,我们将其命名为CircleFragment。CircleFragment具有带有RenderView的布局 实例化CircleFragment时,将ArrayList放入Fragment.setArguments(Bundle)中,并在CircleFragment视图膨胀时检索这些参数。(请参见关于放置arraylist的编辑) 在您的活动中:创建所需的圈片段数量,并将它们放入FragmentStatePagerAdapter中,您将用于ViewPager 编辑(关于放置
ArrayList
编辑2(关于使用Fragment.onCreateView()
)
充气机就在那里,以防(!)您需要它。只需让充气机保持原样,实例化渲染视图
(就像您在原始代码中所做的那样)然后在片段中返回它。一旦创建视图
。你可能想在它周围包装一个线性布局
或相对布局
,以便更好地控制你的渲染视图的位置
是的,这正是我想要实现的。我会尝试实现它并将结果发布在这里。我不知道我能做到使用setArguments检索数据。如何放置ArrayList类型的参数,Bundle不支持此类型。好的,谢谢!但是在此上下文中,如何在Fragment
类的onCreateView
中使用充气器呢?充气器参数仅匹配布局xml的id,而不是自定义的id查看rendercreview
。我遵循这一点,充气机就在那里,以防(!)您需要它。只需让充气机保持原样,实例化rendercreview
(就像您在原始代码中所做的那样)然后在片段中返回它。一旦创建视图
。你可能想在它周围包装一个线性布局
或相对布局
,以便更好地控制你的渲染视图
的位置。太棒了……终于可以工作了。非常感谢!我一直在努力让充气机工作……但我想是因为有了ViewPager触摸特定对象时,无法在屏幕上添加弹出对话框!?