Graphstream (Android) - 无法在片段中显示图形
Graphstream (Android) - not able to display graph in fragment
我是 Android 开发的初学者。我正在尝试研究在 android 应用程序中使用 Graphstream (https://graphstream-project.org)。我创建了一个基本的 activity 抽屉布局,其中包括我打算在其中显示图形的导航视图和框架布局。
我尝试使用此处的代码示例 - https://github.com/graphstream/gs-ui-android-test/blob/master/app/src/main/java/ui/graphstream/org/gs_ui_androidtest/Activity_withXML.java
这是我的代码:-
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
Graph graph = new SingleGraph("Tutorial 1");
graph.setAttribute("ui.stylesheet", "" +
"graph { padding: 0px; fill-color: #EEE; }"+
"edge { text-size: 48; size: 5;}"+
"node { text-size: 48; fill-color: white; size: 40px, 40px; padding: 15px, 15px; stroke-mode: plain; stroke-color: #555; shape: box; }"
+ "node#B {shape: circle;}"
);
graph.setAttribute("ui.antialias");
graph.setStrict(false);
graph.setAutoCreate( true );
Edge e = graph.addEdge( "AB", "B", "A", true);
e.setAttribute("weight", 5.0);
e = graph.addEdge( "BC", "B", "C", true);
Node b = graph.getNode("B");
b.setAttribute("label", "B");
e.setAttribute("weight", 1.0);
e = graph.addEdge( "CA", "C", "A", true);
e.setAttribute("weight", 2.0);
e = graph.addEdge( "BF", "F", "B", true);
e.setAttribute("weight", 1.0);
e = graph.addEdge( "CE", "E", "C", true);
e.setAttribute("weight", 8.0);
e = graph.addEdge( "EF", "E", "F", true);
e.setAttribute("weight", 1.0);
for(int i = 0 ; i < graph.getNodeCount() ; i++){
graph.getNode(i).setAttribute("ui.label", graph.getNode(i).getId());
}
for(int i = 0 ; i < graph.getEdgeCount() ; i++){
graph.getEdge(i).setAttribute("ui.label", "Poids = "+(graph.getEdge(i).getAttribute("weight")));
}
display(savedInstanceState, graph, true);
}
public void display(Bundle savedInstanceState, Graph graph, boolean autoLayout) {
if (savedInstanceState == null) {
FragmentManager fm = getSupportFragmentManager();
DefaultFragment fragment = (DefaultFragment) fm.findFragmentByTag("fragment_tag");
if (null == fragment) {
fragment = new DefaultFragment();
fragment.init(graph, autoLayout);
}
FragmentTransaction ft = fm.beginTransaction() ;
ft.add(R.id.content_frame, fragment).commit();
}
}
但是,我在框架中只看到一个空白的白色屏幕。该应用程序没有崩溃。有人可以解释我做错了什么吗?
这是我在 Android Studio 中看到的 logcat 错误(红线):-
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onAttach
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreate
11928-11928/com.testapp.graphstream.myflavor E/Debug: Tutorial 1
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreateView
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onAttach
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreate
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreateView
我也不确定我是否遗漏了实施 Graphstream 的一些完整步骤。 github 上的一些示例显示了 'algorithm generator' 的使用,其他一些示例显示了在 protected void onStart() 下使用 'viewerpipe' - 就像本页上的代码 -> https://github.com/graphstream/gs-ui-android-test/blob/master/app/src/main/java/ui/graphstream/org/gs_ui_androidtestFull/Activity_LayoutTest.java
我对他们的用例感到困惑。
因此,如果有人还可以指出任何资源,其中有专门针对 android 的 graphstream 的详细教程,我将不胜感激。 github上的网站和代码示例对android相关方面的描述不多(或者原谅我是菜鸟)。
谢谢
。
我猜你的布局文件是原因。
您可以使用我使用 GraphView here
的示例代码
我是 Android 开发的初学者。我正在尝试研究在 android 应用程序中使用 Graphstream (https://graphstream-project.org)。我创建了一个基本的 activity 抽屉布局,其中包括我打算在其中显示图形的导航视图和框架布局。
我尝试使用此处的代码示例 - https://github.com/graphstream/gs-ui-android-test/blob/master/app/src/main/java/ui/graphstream/org/gs_ui_androidtest/Activity_withXML.java
这是我的代码:-
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
Graph graph = new SingleGraph("Tutorial 1");
graph.setAttribute("ui.stylesheet", "" +
"graph { padding: 0px; fill-color: #EEE; }"+
"edge { text-size: 48; size: 5;}"+
"node { text-size: 48; fill-color: white; size: 40px, 40px; padding: 15px, 15px; stroke-mode: plain; stroke-color: #555; shape: box; }"
+ "node#B {shape: circle;}"
);
graph.setAttribute("ui.antialias");
graph.setStrict(false);
graph.setAutoCreate( true );
Edge e = graph.addEdge( "AB", "B", "A", true);
e.setAttribute("weight", 5.0);
e = graph.addEdge( "BC", "B", "C", true);
Node b = graph.getNode("B");
b.setAttribute("label", "B");
e.setAttribute("weight", 1.0);
e = graph.addEdge( "CA", "C", "A", true);
e.setAttribute("weight", 2.0);
e = graph.addEdge( "BF", "F", "B", true);
e.setAttribute("weight", 1.0);
e = graph.addEdge( "CE", "E", "C", true);
e.setAttribute("weight", 8.0);
e = graph.addEdge( "EF", "E", "F", true);
e.setAttribute("weight", 1.0);
for(int i = 0 ; i < graph.getNodeCount() ; i++){
graph.getNode(i).setAttribute("ui.label", graph.getNode(i).getId());
}
for(int i = 0 ; i < graph.getEdgeCount() ; i++){
graph.getEdge(i).setAttribute("ui.label", "Poids = "+(graph.getEdge(i).getAttribute("weight")));
}
display(savedInstanceState, graph, true);
}
public void display(Bundle savedInstanceState, Graph graph, boolean autoLayout) {
if (savedInstanceState == null) {
FragmentManager fm = getSupportFragmentManager();
DefaultFragment fragment = (DefaultFragment) fm.findFragmentByTag("fragment_tag");
if (null == fragment) {
fragment = new DefaultFragment();
fragment.init(graph, autoLayout);
}
FragmentTransaction ft = fm.beginTransaction() ;
ft.add(R.id.content_frame, fragment).commit();
}
}
但是,我在框架中只看到一个空白的白色屏幕。该应用程序没有崩溃。有人可以解释我做错了什么吗?
这是我在 Android Studio 中看到的 logcat 错误(红线):-
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onAttach
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreate
11928-11928/com.testapp.graphstream.myflavor E/Debug: Tutorial 1
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreateView
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onAttach
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreate
11928-11928/com.testapp.graphstream.myflavor E/Debug: DefaultFragment : onCreateView
我也不确定我是否遗漏了实施 Graphstream 的一些完整步骤。 github 上的一些示例显示了 'algorithm generator' 的使用,其他一些示例显示了在 protected void onStart() 下使用 'viewerpipe' - 就像本页上的代码 -> https://github.com/graphstream/gs-ui-android-test/blob/master/app/src/main/java/ui/graphstream/org/gs_ui_androidtestFull/Activity_LayoutTest.java
我对他们的用例感到困惑。
因此,如果有人还可以指出任何资源,其中有专门针对 android 的 graphstream 的详细教程,我将不胜感激。 github上的网站和代码示例对android相关方面的描述不多(或者原谅我是菜鸟)。
谢谢