Сначала я объясню, чего я пытаюсь достичь, а затем объясню свой нынешний подход к его решению. Я благодарен за любой полезный вклад, даже если это означало бы начать с нуля. При необходимости я добавлю больше кода или объяснений.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, а не масштабировался.
Hi @Brad, Можете ли вы поделиться мне своим кодом? У меня такая же реализация, что и в моем запущенном проекте. – Noundla