2012-06-27 54 views
0

我将首先解释我想要实现的内容,然后解释我目前解决它的方法。我很感激任何有用的输入,即使它意味着从头开始。如果需要,我会添加更多的代码或解释。Android:网络关系图

这将成为更大的Android应用程序的一部分。这部分应该显示先前选择的网络中的所有节点以及节点之间的关系,所有节点都在一个可滚动的视图/布局中。这些关系应该通过节点之间的箭头来描绘,显示每个节点在特定时间间隔内可以“听到”哪些节点。可悲的是节点必须是可点击的,因为您必须能够在该视图中为应用程序的其他部分设置一些选项。实际数据(节点,邻居关系)最终应通过webservice从数据库中返回,但除了节点数量不是静态的这一事实之外,这还不完全相关。

我目前的做法是创建GridView用自定义ButtonAdapter填充它,这样我可以使用非静态数量的自定义(透明)按钮。

GridView gridview = (GridView) findViewById(R.id.gridview); 
gridview.setAdapter(new ButtonAdapter(this)); 

我已经创建了一个可以在一个位图绘制箭头的方法,我也可以很容易地将其转换为可绘制其设置为GridView的背景。

protected Bitmap drawArrow(float startX, float startY, float endX, float endY, Bitmap bitmap) { 
.... 
} 

Drawable d = new BitmapDrawable(bitmap); 
gridview.setBackgroundDrawable(d); 

我的这种做法的问题是,我会需要知道的GridView为位图,或确切大小的按钮的位置或者总高度和宽度,即1个按钮会使用。由于在onCreate中创建了它,所以我没有在这一点上得到实际的大小。有没有解决这个问题的方法?

即使这样做我还不确定我是否可以设置背景,使其与GridView 1:1滚动而不是缩放。

+0

Hi @Brad,你可以分享我的代码吗?我在运行的项目中有相同的实现。 – Noundla

回答

0

使用自定义SurfaceView解决方案利用自定义线程和每个按钮的额外类,这些按钮简单地与它们之间的线条一起绘制在表面上。滚动也必须单独实施。