Как рисовать график в Android?

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

Я уже пробовал aChartEngine, но он не работает успешно.

Введите описание изображения здесь

Вы можете создать SurfaceView , в котором вы можете рисовать Canvas в onDraw() . Чтобы нарисовать график, вы можете использовать класс Path , а также методы moveTo() и lineTo() . Чтобы изменить внешний вид линий, используйте класс Paint . Затем используйте метод drawPath() , который принимает объект Path и Paint . Я думаю, с этого немного легче начать, чем OpenGl.

  • SurfaceView
  • холст
  • Дорожка
  • Покрасить

Некоторые учебники

Обновление: я нашел довольно красивую библиотеку, которая выглядит просто: MPAndroidChart

Как насчет того, чтобы попробовать OpenGL ES?

Вы можете создать GraphView, который расширяет GLSurfaceView

Пример кода-

 public class GraphView extends GLSurfaceView { private Renderer renderer; public GraphView(Context context) { super(context); renderer = new GraphRenderer(); setRenderer(renderer); } } 

И ваш GraphRender

 ublic class GraphRenderer implements Renderer { public void onDrawFrame(GL10 gl) { gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 1.0f); gl.glColor4f(1, 0, 0, .5f); } public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); float ratio = (float) width / height; gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glFrustumf(-ratio, ratio, -1, 1, 3, 7); } public void onSurfaceCreated(GL10 gl, EGLConfig config) { } private void drawGraph(GL10 gl) { gl.glLineWidth(1.0f); // put your code here .. } public static int loadShader(int type, String shaderCode) { int shader = GLES20.glCreateShader(type); GLES20.glShaderSource(shader, shaderCode); GLES20.glCompileShader(shader); return shader; } 

}

Вы можете попробовать это.

Intereting Posts
Как добавить представление в начало линейного макета в коде? Список всех установленных сертификатов на Android Jsoup.connect () работает с Java, а не с Android Как включить переднюю камеру в Phonegap Асинхронная загрузка растровых изображений в адаптере с акцентом на Bitmap.recycle () GetActivity (). FindViewById возвращает null, вызывается из фрагмента onActivityCreated Доступ не настроен. Используйте Google Developers Console, чтобы активировать API для своего проекта для списка поиска youtube. Как построить только single buildType с Android Studio и / или Gradle Проект Android разбит на Eclipse после сборки муравьев Производительность Abysmal ListView на Android ICS Почему android: layout_width = "0px" для фрагментов? Android: как использовать более низкую minSdkVersion, чем объявлено в библиотеке (uiautomator-v18) Недостаточно памяти при распределении по 9830416 байт с растровым изображением Android – Размер буфера MediaPlayer в ICS 4.0 Как я могу скопировать содержимое данных / в SDCard / без использования adb?