2012-06-27 5 views
0

Сначала я объясню, чего я пытаюсь достичь, а затем объясню свой нынешний подход к его решению. Я благодарен за любой полезный вклад, даже если это означало бы начать с нуля. При необходимости я добавлю больше кода или объяснений.Android: график сетевых отношений

Это будет частью большого приложения для Android. Эта часть должна отображать все узлы в ранее выбранной сети и отношения между узлами в одном прокручиваемом представлении/макете. Соотношения должны быть изображены стрелками между узлами, показывающими, какие узлы каждый узел может «слышать» в течение определенного интервала. Узлы, к сожалению, должны быть интерактивными, потому что вы уже можете установить некоторые параметры для других частей приложения в этом представлении. Фактические данные (узлы, отношения соседства) должны, наконец, быть возвращены через веб-сервис из базы данных, но это еще не совсем важно, кроме того, что количество узлов не является статическим.

Мой нынешний подход к созданию GridView заполняет его с помощью специального ButtonAdapter, таким образом я могу использовать нестатические количества пользовательских (прозрачных) кнопок.

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

Я создал методы, которые могут рисовать стрелки на растр, и я также легко установить его в качестве фона GridView путем преобразования его в Drawable.

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

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

Моя проблема с этим подходом в том, что мне нужно знать точный размер GridView для Bitmap и положение кнопок или, альтернативно, общую высоту и ширину, что 1 кнопка будет использовать. Из-за его создания в onCreate я не получаю фактические размеры на этом этапе. Есть ли решение этой проблемы?

И даже если это сработает, я пока не уверен, смогу ли установить фон таким образом, чтобы он прокручивал 1: 1 с помощью GridView, а не масштабировался.

+0

Hi @Brad, Можете ли вы поделиться мне своим кодом? У меня такая же реализация, что и в моем запущенном проекте. – Noundla

ответ

0

Решается с помощью пользовательского SurfaceView, используя пользовательский поток и дополнительный класс для каждой кнопки, которые просто рисуются вместе с линиями между ними на поверхности. Прокрутка также должна была быть индивидуально реализована.

Смежные вопросы