2017-05-28 43 views
8

我有一个可滚动的GridView,其中的项目之间有足够的空间。对于网格中的一些对象,我想添加从一个到另一个的箭头图像GridView中的项目之间添加视图

为了参考我的意思,请考虑魔兽世界天赋树(http://calculators.iradei.eu/talents/mage)。你会看到一些人才有箭头从一个项目到下一个项目。

我负责的只是布局包含在FrameLayout里一个GridView,没有别的

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

    <GridView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:numColumns="4" 
     android:scrollbars="none" 
     android:id="@+id/talent_tree_grid_view"> 
    </GridView> 

</FrameLayout> 

我想在代码中添加这些ImageViews,因为我不认为有什么办法,我可以将此逻辑添加到GridView的适配器中。

我试图将其添加为母公司的FrameLayout,基于X和GridView的项目ŸCOORDS的孩子,而这个工作,但滚动的GridView时,箭不还滚动

我我也尝试直接添加它们作为GridView的子元素,但它不支持这种行为(它抛出java.lang.UnsupportedOperationException)

有没有关于如何在gridview项目之间添加这些图像的任何想法?

+0

您可能想要扩展GridLayout并添加自己的图纸 – F43nd1r

+0

您可以做的一件事是您可以将箭头图像添加到GridView项目中,并在某些条件满足时显示它们,但我不这么认为。 –

+0

我已经更新了我的答案,包括一个演示项目。 – Cheticamp

回答

5

这听起来非常类似于Romain Guy的“Shelves”应用程序,其中使用自定义GridView并且书架的背景图像滚动。看看项目here。自定义GridView的源代码可以在源代码中的文件ShelvesView.java中找到。 Guy Romain的快速介绍是here;

对于箭头,您可能需要考虑9-patch drawable


我已经调查了上述方法更多一点,并具有基于 谷歌的Hello GridView example一个示例应用程序。

以这个示例应用程序为例,我构建了一个自定义GridView(DogsGridView.java),并将照片连接到类似于魔兽世界天赋树示例的空白单元格中。我只是使用简单的线条,但可以修改类以使用箭头或其他图形连接单元格。

以下是带连接线的quick video。这里是another 9个补丁箭头。

该项目来源可以找到here

+0

谢谢你的回答Cheticamp!它的工作,但我有滚动的性能问题,因为连接箭头不断重新绘制,我认为?我最终可能会实现一个解决方案,其中涉及绘制网格视图项目中的箭头(我的情况是框架布局)。所以箭头起源的物品会有箭头的第一部分,任何空格之间的空格都会有中间部分,最后一个箭头结束的格子物品会有箭头的终点。我会在这里发布这个答案,如果我得到它正常工作。 – Dportology

+0

@Dportology我不知道你什么时候抽出源代码,但昨天我通过从子检查循环中调用了'dispathDraw'的超级调用来改进性能。之后,我看到了我的模拟器上的重大改进。您可能需要考虑在自定义“GridView”中绘制一次最大图形,然后根据需要进行裁剪和复制,而不是分割图形并将其放入网格视图项目中。 – Cheticamp

+0

@Dportology由于我进行循环的方式,箭头被多次绘制。我已经将搜索更改为追踪列而不是行,所以这应该会更好。每个可见的位置应该只考虑一次。 GitHub有更新。 – Cheticamp

相关问题