├── .gitignore ├── .gitmodules ├── .idea ├── caches │ └── build_file_checksums.ser ├── codeStyles │ └── Project.xml ├── encodings.xml ├── gradle.xml ├── markdown-navigator.xml ├── markdown-navigator │ └── profiles_settings.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── GraphView-Demos.iml ├── README.md ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── manifest-merger-release-report.txt ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── jjoe64 │ │ └── graphview_demos │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── jjoe64 │ │ └── graphview_demos │ │ ├── FullscreenActivity.java │ │ ├── FullscreenExample.java │ │ ├── ItemDetailActivity.java │ │ ├── ItemDetailFragment.java │ │ ├── ItemListActivity.java │ │ ├── MenuContent.java │ │ ├── categories │ │ ├── BarGraphFragment.java │ │ ├── HelloWorldFragment.java │ │ ├── LineGraphFragment.java │ │ ├── OthersFragment.java │ │ ├── PointsGraphFragment.java │ │ ├── RealtimeFragment.java │ │ ├── SecondScaleAndLabelsFragment.java │ │ ├── StylingExamplesFragment.java │ │ ├── TapListenerGraphFragment.java │ │ ├── TimeAndDatesFragment.java │ │ └── ZoomingAndScrollingFragment.java │ │ └── examples │ │ ├── AddSeriesAtRuntime.java │ │ ├── AdvancedBarGraph.java │ │ ├── AdvancedLineGraph.java │ │ ├── BaseExample.java │ │ ├── CustomLabelsGraph.java │ │ ├── Dates.java │ │ ├── FixedFrame.java │ │ ├── HelloWorld.java │ │ ├── MultipleBarGraph.java │ │ ├── NoLabelsGraph.java │ │ ├── RealtimeScrolling.java │ │ ├── ScalingX.java │ │ ├── ScalingXY.java │ │ ├── ScrollingX.java │ │ ├── SecondScaleGraph.java │ │ ├── SimpleBarGraph.java │ │ ├── SimpleLineGraph.java │ │ ├── SimplePointsGraph.java │ │ ├── SnapshotShareGraph.java │ │ ├── StaticLabelsGraph.java │ │ ├── StylingColors.java │ │ ├── StylingLabels.java │ │ ├── TapListenerGraph.java │ │ ├── TitlesExample.java │ │ └── UniqueLegendLineGraph.java │ └── res │ ├── drawable-xxhdpi │ ├── fullscreen.png │ ├── ic_public_white_24dp.png │ ├── preview.png │ └── source.png │ ├── layout │ ├── activity_item_detail.xml │ ├── activity_item_list.xml │ ├── bar_graph_content.xml │ ├── fullscreen_example_add_series.xml │ ├── fullscreen_example_simple.xml │ ├── hello_world_content.xml │ ├── item_detail.xml │ ├── item_list.xml │ ├── item_list_content.xml │ ├── item_list_twopane.xml │ ├── line_graph_content.xml │ ├── others_content.xml │ ├── points_graph_content.xml │ ├── realtime_content.xml │ ├── second_scale_and_labels_content.xml │ ├── styling_examples_content.xml │ ├── tap_listener_graph_content.xml │ ├── time_and_dates_content.xml │ └── zooming_and_scrolling_content.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w900dp │ └── refs.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── captures └── Allocations_2015.03.26_18.59.43.alloc ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── license.txt └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | .DS_Store 6 | /build 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "GraphView"] 2 | path = GraphView 3 | url = https://github.com/jjoe64/GraphView 4 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjoe64/GraphView-Demos/708bcdfa6ee421c6675faca5ae526a0aeca4881e/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/markdown-navigator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 36 | 37 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /GraphView-Demos.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Chart and Graph Library for Android 2 | ==================================== 3 | 4 | ### GraphView - open source graph plotting library for Android 5 | 6 | GraphView is a library for Android to programmatically create 7 | flexible and nice-looking diagrams. 8 | It is easy to understand, to integrate and to customize. 9 | 10 | Create Line Graphs, Bar Graphs, Point Graphs 11 | or implement your own custom types. 12 | 13 | 14 | 15 | 16 | 17 | ## Try the Demo app at Play Store 18 | 19 | [https://play.google.com/store/apps/details?id=com.jjoe64.graphview_demos] 20 | 21 | ## Visit the project homepage 22 | 23 | [http://www.android-graphview.org/] 24 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion '27.0.3' 6 | 7 | defaultConfig { 8 | applicationId "com.jjoe64.graphview_demos" 9 | minSdkVersion 14 10 | targetSdkVersion 27 11 | versionCode 12 12 | versionName "4.2-2" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(dir: 'libs', include: ['*.jar']) 23 | implementation 'com.android.support:appcompat-v7:27.1.1' 24 | implementation 'com.android.support:support-v4:27.1.1' 25 | implementation 'com.android.support:cardview-v7:27.1.1' 26 | implementation 'com.android.support:recyclerview-v7:27.1.1' 27 | implementation 'com.android.support:design:27.1.1' 28 | 29 | // graphview 30 | //implementation project(':GraphView') 31 | implementation 'com.jjoe64:graphview:4.2.2' 32 | } 33 | -------------------------------------------------------------------------------- /app/manifest-merger-release-report.txt: -------------------------------------------------------------------------------- 1 | -- Merging decision tree log --- 2 | manifest 3 | ADDED from AndroidManifest.xml:2:1 4 | package 5 | ADDED from AndroidManifest.xml:3:5 6 | INJECTED from AndroidManifest.xml:0:0 7 | INJECTED from AndroidManifest.xml:0:0 8 | android:versionName 9 | INJECTED from AndroidManifest.xml:0:0 10 | INJECTED from AndroidManifest.xml:0:0 11 | xmlns:android 12 | ADDED from AndroidManifest.xml:2:11 13 | android:versionCode 14 | INJECTED from AndroidManifest.xml:0:0 15 | INJECTED from AndroidManifest.xml:0:0 16 | application 17 | ADDED from AndroidManifest.xml:5:5 18 | MERGED from com.android.support:appcompat-v7:20.0.0:17:5 19 | MERGED from com.android.support:support-v4:20.0.0:17:5 20 | MERGED from com.jjoe64:GraphView:4.0.0:11:5 21 | MERGED from com.android.support:appcompat-v7:20.0.0:17:5 22 | MERGED from com.android.support:support-v4:20.0.0:17:5 23 | android:label 24 | ADDED from AndroidManifest.xml:8:9 25 | android:allowBackup 26 | ADDED from AndroidManifest.xml:6:9 27 | android:icon 28 | ADDED from AndroidManifest.xml:7:9 29 | android:theme 30 | ADDED from AndroidManifest.xml:9:9 31 | activity#com.jjoe64.graphview_demos.MainActivity 32 | ADDED from AndroidManifest.xml:10:9 33 | android:label 34 | ADDED from AndroidManifest.xml:12:13 35 | android:name 36 | ADDED from AndroidManifest.xml:11:13 37 | intent-filter#android.intent.action.MAIN+android.intent.category.LAUNCHER 38 | ADDED from AndroidManifest.xml:13:13 39 | action#android.intent.action.MAIN 40 | ADDED from AndroidManifest.xml:14:17 41 | android:name 42 | ADDED from AndroidManifest.xml:14:25 43 | category#android.intent.category.LAUNCHER 44 | ADDED from AndroidManifest.xml:16:17 45 | android:name 46 | ADDED from AndroidManifest.xml:16:27 47 | uses-sdk 48 | INJECTED from AndroidManifest.xml:0:0 reason: use-sdk injection requested 49 | MERGED from com.android.support:appcompat-v7:20.0.0:16:5 50 | MERGED from com.android.support:support-v4:20.0.0:16:5 51 | MERGED from com.jjoe64:GraphView:4.0.0:7:5 52 | MERGED from com.android.support:appcompat-v7:20.0.0:16:5 53 | MERGED from com.android.support:support-v4:20.0.0:16:5 54 | android:targetSdkVersion 55 | INJECTED from AndroidManifest.xml:0:0 56 | INJECTED from AndroidManifest.xml:0:0 57 | android:minSdkVersion 58 | INJECTED from AndroidManifest.xml:0:0 59 | INJECTED from AndroidManifest.xml:0:0 60 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/jonas/android-sdk/android-sdk-macosx/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/jjoe64/graphview_demos/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 28 | 31 | 32 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/FullscreenActivity.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.content.pm.PackageManager; 4 | import android.os.Bundle; 5 | import android.support.annotation.Nullable; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.widget.Toast; 8 | 9 | import com.jjoe64.graphview_demos.examples.BaseExample; 10 | import com.jjoe64.graphview_demos.examples.SnapshotShareGraph; 11 | 12 | /** 13 | * Created by jonas on 10.09.16. 14 | */ 15 | public class FullscreenActivity extends AppCompatActivity { 16 | private BaseExample mLogic; 17 | 18 | @Override 19 | public void onCreate(@Nullable Bundle savedInstanceState) { 20 | super.onCreate(savedInstanceState); 21 | 22 | String name = getIntent().getStringExtra(FullscreenExample.ARG_ID); 23 | FullscreenExample example = FullscreenExample.valueOf(name); 24 | 25 | setContentView(example.contentView); 26 | try { 27 | mLogic = example.exampleClass.newInstance(); 28 | mLogic.onCreate(this); 29 | } catch (InstantiationException e) { 30 | e.printStackTrace(); 31 | } catch (IllegalAccessException e) { 32 | e.printStackTrace(); 33 | } 34 | } 35 | 36 | @Override 37 | protected void onResume() { 38 | super.onResume(); 39 | mLogic.onResume(); 40 | } 41 | 42 | @Override 43 | protected void onPause() { 44 | mLogic.onPause(); 45 | super.onPause(); 46 | } 47 | 48 | @Override 49 | public void onRequestPermissionsResult(int requestCode, 50 | String permissions[], int[] grantResults) { 51 | switch (requestCode) { 52 | case SnapshotShareGraph.REQUEST_CODE_PERMISSION: { 53 | // If request is cancelled, the result arrays are empty. 54 | if (grantResults.length > 0 55 | && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 56 | 57 | SnapshotShareGraph example = (SnapshotShareGraph) mLogic; 58 | example.snapshot(); 59 | 60 | } else { 61 | Toast.makeText(this, "Permission denied. Not possible to show example.", Toast.LENGTH_SHORT).show(); 62 | } 63 | return; 64 | } 65 | } 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/FullscreenExample.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.support.annotation.LayoutRes; 4 | 5 | import com.jjoe64.graphview_demos.examples.AddSeriesAtRuntime; 6 | import com.jjoe64.graphview_demos.examples.AdvancedBarGraph; 7 | import com.jjoe64.graphview_demos.examples.AdvancedLineGraph; 8 | import com.jjoe64.graphview_demos.examples.BaseExample; 9 | import com.jjoe64.graphview_demos.examples.CustomLabelsGraph; 10 | import com.jjoe64.graphview_demos.examples.Dates; 11 | import com.jjoe64.graphview_demos.examples.FixedFrame; 12 | import com.jjoe64.graphview_demos.examples.HelloWorld; 13 | import com.jjoe64.graphview_demos.examples.MultipleBarGraph; 14 | import com.jjoe64.graphview_demos.examples.NoLabelsGraph; 15 | import com.jjoe64.graphview_demos.examples.RealtimeScrolling; 16 | import com.jjoe64.graphview_demos.examples.ScalingX; 17 | import com.jjoe64.graphview_demos.examples.ScalingXY; 18 | import com.jjoe64.graphview_demos.examples.ScrollingX; 19 | import com.jjoe64.graphview_demos.examples.SecondScaleGraph; 20 | import com.jjoe64.graphview_demos.examples.SimpleBarGraph; 21 | import com.jjoe64.graphview_demos.examples.SimpleLineGraph; 22 | import com.jjoe64.graphview_demos.examples.SimplePointsGraph; 23 | import com.jjoe64.graphview_demos.examples.SnapshotShareGraph; 24 | import com.jjoe64.graphview_demos.examples.StaticLabelsGraph; 25 | import com.jjoe64.graphview_demos.examples.StylingColors; 26 | import com.jjoe64.graphview_demos.examples.StylingLabels; 27 | import com.jjoe64.graphview_demos.examples.TapListenerGraph; 28 | import com.jjoe64.graphview_demos.examples.TitlesExample; 29 | import com.jjoe64.graphview_demos.examples.UniqueLegendLineGraph; 30 | 31 | /** 32 | * Created by jonas on 10.09.16. 33 | */ 34 | public enum FullscreenExample { 35 | HELLO_WORLD(R.layout.fullscreen_example_simple, HelloWorld.class), 36 | SCALING_XY(R.layout.fullscreen_example_simple, ScalingXY.class), 37 | SCALING_X(R.layout.fullscreen_example_simple, ScalingX.class), 38 | SCROLLING_X(R.layout.fullscreen_example_simple, ScrollingX.class), 39 | FIXED_FRAME(R.layout.fullscreen_example_simple, FixedFrame.class), 40 | REALTIME_SCROLLING(R.layout.fullscreen_example_simple, RealtimeScrolling.class), 41 | DATES(R.layout.fullscreen_example_simple, Dates.class), 42 | SIMPLE_LINE_GRAPH(R.layout.fullscreen_example_simple, SimpleLineGraph.class), 43 | ADVANCED_LINE_GRAPH(R.layout.fullscreen_example_simple, AdvancedLineGraph.class), 44 | UNIQUE_LEGEND_LINE_GRAPH(R.layout.fullscreen_example_simple, UniqueLegendLineGraph.class), 45 | SIMPLE_BAR_GRAPH(R.layout.fullscreen_example_simple, SimpleBarGraph.class), 46 | ADVANCED_BAR_GRAPH(R.layout.fullscreen_example_simple, AdvancedBarGraph.class), 47 | MULTIPLE_BAR_GRAPH(R.layout.fullscreen_example_simple, MultipleBarGraph.class), 48 | SIMPLE_POINTS_GRAPH(R.layout.fullscreen_example_simple, SimplePointsGraph.class), 49 | SECOND_SCALE_GRAPH(R.layout.fullscreen_example_simple, SecondScaleGraph.class), 50 | CUSTOM_LABELS(R.layout.fullscreen_example_simple, CustomLabelsGraph.class), 51 | NO_LABELS(R.layout.fullscreen_example_simple, NoLabelsGraph.class), 52 | STATIC_LABELS(R.layout.fullscreen_example_simple, StaticLabelsGraph.class), 53 | TAP_LISTENER(R.layout.fullscreen_example_simple, TapListenerGraph.class), 54 | STYLING_LABELS(R.layout.fullscreen_example_simple, StylingLabels.class), 55 | STYLING_COLORS(R.layout.fullscreen_example_simple, StylingColors.class), 56 | ADD_SERIES(R.layout.fullscreen_example_add_series, AddSeriesAtRuntime.class), 57 | TITLES_EXAMPLE(R.layout.fullscreen_example_simple, TitlesExample.class), 58 | SNAPSHOT_SHARE(R.layout.fullscreen_example_add_series, SnapshotShareGraph.class), 59 | ; 60 | 61 | public static final String ARG_ID = "FEID"; 62 | static final String URL_PREFIX = "https://github.com/jjoe64/GraphView-Demos/blob/master/app/src/main/java/com/jjoe64/graphview_demos/examples/"; 63 | 64 | public final @LayoutRes int contentView; 65 | public final Class exampleClass; 66 | public final String url; 67 | 68 | FullscreenExample(@LayoutRes int contentView, Class exampleClass) { 69 | this.contentView = contentView; 70 | this.exampleClass = exampleClass; 71 | this.url = URL_PREFIX+exampleClass.getSimpleName()+".java"; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/ItemDetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.design.widget.Snackbar; 7 | import android.support.v4.app.Fragment; 8 | import android.support.v7.widget.Toolbar; 9 | import android.view.View; 10 | import android.support.v7.app.AppCompatActivity; 11 | import android.support.v7.app.ActionBar; 12 | import android.support.v4.app.NavUtils; 13 | import android.view.MenuItem; 14 | 15 | /** 16 | * An activity representing a single Item detail screen. This 17 | * activity is only used narrow width devices. On tablet-size devices, 18 | * item details are presented side-by-side with a list of items 19 | * in a {@link ItemListActivity}. 20 | */ 21 | public class ItemDetailActivity extends AppCompatActivity { 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | setContentView(R.layout.activity_item_detail); 27 | Toolbar toolbar = (Toolbar) findViewById(R.id.detail_toolbar); 28 | setSupportActionBar(toolbar); 29 | 30 | // Show the Up button in the action bar. 31 | ActionBar actionBar = getSupportActionBar(); 32 | if (actionBar != null) { 33 | actionBar.setDisplayHomeAsUpEnabled(true); 34 | } 35 | 36 | // savedInstanceState is non-null when there is fragment state 37 | // saved from previous configurations of this activity 38 | // (e.g. when rotating the screen from portrait to landscape). 39 | // In this case, the fragment will automatically be re-added 40 | // to its container so we don't need to manually add it. 41 | // For more information, see the Fragments API guide at: 42 | // 43 | // http://developer.android.com/guide/components/fragments.html 44 | // 45 | if (savedInstanceState == null) { 46 | // Create the detail fragment and add it to the activity 47 | // using a fragment transaction. 48 | Bundle arguments = new Bundle(); 49 | arguments.putString(ItemDetailFragment.ARG_ITEM_ID, 50 | getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID)); 51 | MenuContent.MenuItem mItem = MenuContent.ITEM_MAP.get(getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID)); 52 | 53 | try { 54 | Fragment fragment; 55 | fragment = mItem.fragmentClass.newInstance(); 56 | fragment.setArguments(arguments); 57 | getSupportFragmentManager().beginTransaction() 58 | .add(R.id.item_detail_container, fragment) 59 | .commit(); 60 | } catch (InstantiationException e) { 61 | e.printStackTrace(); 62 | } catch (IllegalAccessException e) { 63 | e.printStackTrace(); 64 | } 65 | } 66 | } 67 | 68 | @Override 69 | public boolean onOptionsItemSelected(MenuItem item) { 70 | int id = item.getItemId(); 71 | if (id == android.R.id.home) { 72 | // This ID represents the Home or Up button. In the case of this 73 | // activity, the Up button is shown. Use NavUtils to allow users 74 | // to navigate up one level in the application structure. For 75 | // more details, see the Navigation pattern on Android Design: 76 | // 77 | // http://developer.android.com/design/patterns/navigation.html#up-vs-back 78 | // 79 | NavUtils.navigateUpTo(this, new Intent(this, ItemListActivity.class)); 80 | return true; 81 | } 82 | return super.onOptionsItemSelected(item); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/ItemDetailFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.net.Uri; 6 | import android.support.design.widget.CollapsingToolbarLayout; 7 | import android.os.Bundle; 8 | import android.support.v4.app.Fragment; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.widget.TextView; 13 | import android.widget.Toast; 14 | 15 | import com.jjoe64.graphview_demos.examples.BaseExample; 16 | 17 | /** 18 | * A fragment representing a single Item detail screen. 19 | * This fragment is either contained in a {@link ItemListActivity} 20 | * in two-pane mode (on tablets) or a {@link ItemDetailActivity} 21 | * on handsets. 22 | */ 23 | public abstract class ItemDetailFragment extends Fragment { 24 | /** 25 | * The fragment argument representing the item ID that this fragment 26 | * represents. 27 | */ 28 | public static final String ARG_ITEM_ID = "item_id"; 29 | 30 | /** 31 | * The dummy content this fragment is presenting. 32 | */ 33 | private MenuContent.MenuItem mItem; 34 | 35 | /** 36 | * Mandatory empty constructor for the fragment manager to instantiate the 37 | * fragment (e.g. upon screen orientation changes). 38 | */ 39 | public ItemDetailFragment() { 40 | } 41 | 42 | @Override 43 | public void onCreate(Bundle savedInstanceState) { 44 | super.onCreate(savedInstanceState); 45 | 46 | if (getArguments().containsKey(ARG_ITEM_ID)) { 47 | // Load the dummy content specified by the fragment 48 | // arguments. In a real-world scenario, use a Loader 49 | // to load content from a content provider. 50 | mItem = MenuContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID)); 51 | 52 | Activity activity = this.getActivity(); 53 | CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout); 54 | if (appBarLayout != null) { 55 | appBarLayout.setTitle(mItem.content); 56 | //appBarLayout.setBackgroundResource(mItem.background); 57 | } 58 | } 59 | } 60 | 61 | protected void openFullscreen(FullscreenExample helloWorld) { 62 | Intent intent = new Intent(getActivity(), FullscreenActivity.class); 63 | intent.putExtra(FullscreenExample.ARG_ID, helloWorld.name()); 64 | startActivity(intent); 65 | } 66 | 67 | protected void openSource(FullscreenExample helloWorld) { 68 | Intent i = new Intent("android.intent.action.VIEW"); 69 | i.setData(Uri.parse(helloWorld.url)); 70 | startActivity(i); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/ItemListActivity.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.net.Uri; 6 | import android.os.Bundle; 7 | import android.support.annotation.NonNull; 8 | import android.support.v4.app.Fragment; 9 | import android.support.v7.app.AppCompatActivity; 10 | import android.support.v7.widget.RecyclerView; 11 | import android.support.v7.widget.Toolbar; 12 | import android.support.design.widget.FloatingActionButton; 13 | import android.support.design.widget.Snackbar; 14 | import android.view.LayoutInflater; 15 | import android.view.View; 16 | import android.view.ViewGroup; 17 | import android.widget.TextView; 18 | 19 | 20 | import java.util.List; 21 | 22 | /** 23 | * An activity representing a list of Items. This activity 24 | * has different presentations for handset and tablet-size devices. On 25 | * handsets, the activity presents a list of items, which when touched, 26 | * lead to a {@link ItemDetailActivity} representing 27 | * item details. On tablets, the activity presents the list of items and 28 | * item details side-by-side using two vertical panes. 29 | */ 30 | public class ItemListActivity extends AppCompatActivity { 31 | 32 | /** 33 | * Whether or not the activity is in two-pane mode, i.e. running on a tablet 34 | * device. 35 | */ 36 | private boolean mTwoPane; 37 | 38 | @Override 39 | protected void onCreate(Bundle savedInstanceState) { 40 | super.onCreate(savedInstanceState); 41 | setContentView(R.layout.activity_item_list); 42 | 43 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 44 | setSupportActionBar(toolbar); 45 | toolbar.setTitle(getTitle()); 46 | 47 | FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.visitHP); 48 | fab.setOnClickListener(new View.OnClickListener() { 49 | @Override 50 | public void onClick(View view) { 51 | Intent i = new Intent("android.intent.action.VIEW"); 52 | i.setData(Uri.parse("http://www.android-graphview.org")); 53 | startActivity(i); 54 | } 55 | }); 56 | 57 | View recyclerView = findViewById(R.id.item_list); 58 | assert recyclerView != null; 59 | setupRecyclerView((RecyclerView) recyclerView); 60 | 61 | if (findViewById(R.id.item_detail_container) != null) { 62 | // The detail container view will be present only in the 63 | // large-screen layouts (res/values-w900dp). 64 | // If this view is present, then the 65 | // activity should be in two-pane mode. 66 | mTwoPane = true; 67 | } 68 | } 69 | 70 | private void setupRecyclerView(@NonNull RecyclerView recyclerView) { 71 | recyclerView.setAdapter(new SimpleItemRecyclerViewAdapter(MenuContent.ITEMS)); 72 | } 73 | 74 | public class SimpleItemRecyclerViewAdapter 75 | extends RecyclerView.Adapter { 76 | 77 | private final List mValues; 78 | 79 | public SimpleItemRecyclerViewAdapter(List items) { 80 | mValues = items; 81 | } 82 | 83 | @Override 84 | public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 85 | View view = LayoutInflater.from(parent.getContext()) 86 | .inflate(R.layout.item_list_content, parent, false); 87 | return new ViewHolder(view); 88 | } 89 | 90 | @Override 91 | public void onBindViewHolder(final ViewHolder holder, int position) { 92 | holder.mItem = mValues.get(position); 93 | holder.mIdView.setText(mValues.get(position).id); 94 | holder.mContentView.setText(mValues.get(position).content); 95 | 96 | holder.mView.setOnClickListener(new View.OnClickListener() { 97 | @Override 98 | public void onClick(View v) { 99 | if (mTwoPane) { 100 | Bundle arguments = new Bundle(); 101 | arguments.putString(ItemDetailFragment.ARG_ITEM_ID, holder.mItem.id); 102 | try { 103 | Fragment fragment; 104 | fragment = holder.mItem.fragmentClass.newInstance(); 105 | fragment.setArguments(arguments); 106 | getSupportFragmentManager().beginTransaction() 107 | .replace(R.id.item_detail_container, fragment) 108 | .commit(); 109 | } catch (InstantiationException e) { 110 | e.printStackTrace(); 111 | } catch (IllegalAccessException e) { 112 | e.printStackTrace(); 113 | } 114 | } else { 115 | Context context = v.getContext(); 116 | Intent intent = new Intent(context, ItemDetailActivity.class); 117 | intent.putExtra(ItemDetailFragment.ARG_ITEM_ID, holder.mItem.id); 118 | 119 | context.startActivity(intent); 120 | } 121 | } 122 | }); 123 | } 124 | 125 | @Override 126 | public int getItemCount() { 127 | return mValues.size(); 128 | } 129 | 130 | public class ViewHolder extends RecyclerView.ViewHolder { 131 | public final View mView; 132 | public final TextView mIdView; 133 | public final TextView mContentView; 134 | public MenuContent.MenuItem mItem; 135 | 136 | public ViewHolder(View view) { 137 | super(view); 138 | mView = view; 139 | mIdView = (TextView) view.findViewById(R.id.id); 140 | mContentView = (TextView) view.findViewById(R.id.content); 141 | } 142 | 143 | @Override 144 | public String toString() { 145 | return super.toString() + " '" + mContentView.getText() + "'"; 146 | } 147 | } 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/MenuContent.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos; 2 | 3 | import android.support.annotation.DrawableRes; 4 | import android.support.v4.app.Fragment; 5 | 6 | import com.jjoe64.graphview_demos.categories.BarGraphFragment; 7 | import com.jjoe64.graphview_demos.categories.HelloWorldFragment; 8 | import com.jjoe64.graphview_demos.categories.OthersFragment; 9 | import com.jjoe64.graphview_demos.categories.PointsGraphFragment; 10 | import com.jjoe64.graphview_demos.categories.RealtimeFragment; 11 | import com.jjoe64.graphview_demos.categories.LineGraphFragment; 12 | import com.jjoe64.graphview_demos.categories.SecondScaleAndLabelsFragment; 13 | import com.jjoe64.graphview_demos.categories.StylingExamplesFragment; 14 | import com.jjoe64.graphview_demos.categories.TapListenerGraphFragment; 15 | import com.jjoe64.graphview_demos.categories.TimeAndDatesFragment; 16 | import com.jjoe64.graphview_demos.categories.ZoomingAndScrollingFragment; 17 | 18 | import java.util.ArrayList; 19 | import java.util.HashMap; 20 | import java.util.List; 21 | import java.util.Map; 22 | 23 | /** 24 | * Helper class for providing sample content for user interfaces created by 25 | * Android template wizards. 26 | */ 27 | public class MenuContent { 28 | 29 | /** 30 | * An array of sample (dummy) items. 31 | */ 32 | public static final List ITEMS = new ArrayList(); 33 | 34 | /** 35 | * A map of sample (dummy) items, by ID. 36 | */ 37 | public static final Map ITEM_MAP = new HashMap(); 38 | 39 | static { 40 | addItem(new MenuItem("1", "Hello world graph", HelloWorldFragment.class)); 41 | addItem(new MenuItem("2", "Zooming and scrolling", ZoomingAndScrollingFragment.class)); 42 | addItem(new MenuItem("3", "Realtime plotting", RealtimeFragment.class)); 43 | addItem(new MenuItem("4", "Time and dates", TimeAndDatesFragment.class)); 44 | addItem(new MenuItem("5", "Second scale and labels", SecondScaleAndLabelsFragment.class)); 45 | addItem(new MenuItem("6", "Line graph", LineGraphFragment.class)); 46 | addItem(new MenuItem("7", "Bar graph", BarGraphFragment.class)); 47 | addItem(new MenuItem("8", "Points graph", PointsGraphFragment.class)); 48 | addItem(new MenuItem("9", "On tap listener", TapListenerGraphFragment.class)); 49 | addItem(new MenuItem("10", "Styling examples", StylingExamplesFragment.class)); 50 | addItem(new MenuItem("11", "Other examples", OthersFragment.class)); 51 | } 52 | 53 | private static void addItem(MenuItem item) { 54 | ITEMS.add(item); 55 | ITEM_MAP.put(item.id, item); 56 | } 57 | 58 | /** 59 | * A item representing a piece of content. 60 | */ 61 | public static class MenuItem { 62 | public final String id; 63 | public final String content; 64 | public final Class fragmentClass; 65 | 66 | //@DrawableRes 67 | //public final int background; 68 | 69 | public MenuItem(String id, 70 | String content, 71 | Class fragmentClass) { 72 | this.id = id; 73 | this.content = content; 74 | this.fragmentClass = fragmentClass; 75 | //this.background = background; 76 | } 77 | 78 | @Override 79 | public String toString() { 80 | return content; 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/BarGraphFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.AdvancedBarGraph; 13 | import com.jjoe64.graphview_demos.examples.AdvancedLineGraph; 14 | import com.jjoe64.graphview_demos.examples.MultipleBarGraph; 15 | import com.jjoe64.graphview_demos.examples.SimpleBarGraph; 16 | import com.jjoe64.graphview_demos.examples.SimpleLineGraph; 17 | 18 | /** 19 | * Created by jonas on 07.09.16. 20 | */ 21 | public class BarGraphFragment extends ItemDetailFragment { 22 | @Override 23 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 24 | Bundle savedInstanceState) { 25 | View rootView = inflater.inflate(R.layout.bar_graph_content, container, false); 26 | 27 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 28 | new SimpleBarGraph().initGraph(graph); 29 | rootView.findViewById(R.id.cardSimpleBarGraph).setOnClickListener(new View.OnClickListener() { 30 | @Override 31 | public void onClick(View view) { 32 | openFullscreen(FullscreenExample.SIMPLE_BAR_GRAPH); 33 | } 34 | }); 35 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 36 | @Override 37 | public void onClick(View view) { 38 | openFullscreen(FullscreenExample.SIMPLE_BAR_GRAPH); 39 | } 40 | }); 41 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 42 | @Override 43 | public void onClick(View view) { 44 | openSource(FullscreenExample.SIMPLE_BAR_GRAPH); 45 | } 46 | }); 47 | 48 | graph = (GraphView) rootView.findViewById(R.id.graph2); 49 | new AdvancedBarGraph().initGraph(graph); 50 | rootView.findViewById(R.id.cardAdvancedBarGraph).setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View view) { 53 | openFullscreen(FullscreenExample.ADVANCED_BAR_GRAPH); 54 | } 55 | }); 56 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 57 | @Override 58 | public void onClick(View view) { 59 | openFullscreen(FullscreenExample.ADVANCED_LINE_GRAPH); 60 | } 61 | }); 62 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 63 | @Override 64 | public void onClick(View view) { 65 | openSource(FullscreenExample.ADVANCED_LINE_GRAPH); 66 | } 67 | }); 68 | 69 | graph = (GraphView) rootView.findViewById(R.id.graph3); 70 | new MultipleBarGraph().initGraph(graph); 71 | rootView.findViewById(R.id.cardMultipleBarGraph).setOnClickListener(new View.OnClickListener() { 72 | @Override 73 | public void onClick(View view) { 74 | openFullscreen(FullscreenExample.MULTIPLE_BAR_GRAPH); 75 | } 76 | }); 77 | rootView.findViewById(R.id.imgFullscreen3).setOnClickListener(new View.OnClickListener() { 78 | @Override 79 | public void onClick(View view) { 80 | openFullscreen(FullscreenExample.MULTIPLE_BAR_GRAPH); 81 | } 82 | }); 83 | rootView.findViewById(R.id.imgSource3).setOnClickListener(new View.OnClickListener() { 84 | @Override 85 | public void onClick(View view) { 86 | openSource(FullscreenExample.MULTIPLE_BAR_GRAPH); 87 | } 88 | }); 89 | 90 | return rootView; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/HelloWorldFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.HelloWorld; 13 | 14 | /** 15 | * Created by jonas on 07.09.16. 16 | */ 17 | public class HelloWorldFragment extends ItemDetailFragment { 18 | @Override 19 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 20 | Bundle savedInstanceState) { 21 | View rootView = inflater.inflate(R.layout.hello_world_content, container, false); 22 | 23 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 24 | new HelloWorld().initGraph(graph); 25 | 26 | rootView.findViewById(R.id.cardHelloWorldGraph).setOnClickListener(new View.OnClickListener() { 27 | @Override 28 | public void onClick(View view) { 29 | openFullscreen(FullscreenExample.HELLO_WORLD); 30 | } 31 | }); 32 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View view) { 35 | openFullscreen(FullscreenExample.HELLO_WORLD); 36 | } 37 | }); 38 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 39 | @Override 40 | public void onClick(View view) { 41 | openSource(FullscreenExample.HELLO_WORLD); 42 | } 43 | }); 44 | 45 | return rootView; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/LineGraphFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.AdvancedLineGraph; 13 | import com.jjoe64.graphview_demos.examples.SimpleLineGraph; 14 | import com.jjoe64.graphview_demos.examples.UniqueLegendLineGraph; 15 | 16 | /** 17 | * Created by jonas on 07.09.16. 18 | */ 19 | public class LineGraphFragment extends ItemDetailFragment { 20 | @Override 21 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 22 | Bundle savedInstanceState) { 23 | View rootView = inflater.inflate(R.layout.line_graph_content, container, false); 24 | 25 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 26 | new SimpleLineGraph().initGraph(graph); 27 | rootView.findViewById(R.id.cardSimpleLineGraph).setOnClickListener(new View.OnClickListener() { 28 | @Override 29 | public void onClick(View view) { 30 | openFullscreen(FullscreenExample.SIMPLE_LINE_GRAPH); 31 | } 32 | }); 33 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 34 | @Override 35 | public void onClick(View view) { 36 | openFullscreen(FullscreenExample.SIMPLE_LINE_GRAPH); 37 | } 38 | }); 39 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 40 | @Override 41 | public void onClick(View view) { 42 | openSource(FullscreenExample.SIMPLE_LINE_GRAPH); 43 | } 44 | }); 45 | 46 | graph = (GraphView) rootView.findViewById(R.id.graph2); 47 | new AdvancedLineGraph().initGraph(graph); 48 | rootView.findViewById(R.id.cardAdvancedLineGraph).setOnClickListener(new View.OnClickListener() { 49 | @Override 50 | public void onClick(View view) { 51 | openFullscreen(FullscreenExample.ADVANCED_LINE_GRAPH); 52 | } 53 | }); 54 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 55 | @Override 56 | public void onClick(View view) { 57 | openFullscreen(FullscreenExample.ADVANCED_LINE_GRAPH); 58 | } 59 | }); 60 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 61 | @Override 62 | public void onClick(View view) { 63 | openSource(FullscreenExample.ADVANCED_LINE_GRAPH); 64 | } 65 | }); 66 | 67 | graph = (GraphView) rootView.findViewById(R.id.graph4); 68 | new UniqueLegendLineGraph().initGraph(graph); 69 | rootView.findViewById(R.id.cardUniqueLegendLineGraph).setOnClickListener(new View.OnClickListener() { 70 | @Override 71 | public void onClick(View view) { 72 | openFullscreen(FullscreenExample.UNIQUE_LEGEND_LINE_GRAPH); 73 | } 74 | }); 75 | rootView.findViewById(R.id.imgFullscreen4).setOnClickListener(new View.OnClickListener() { 76 | @Override 77 | public void onClick(View view) { 78 | openFullscreen(FullscreenExample.UNIQUE_LEGEND_LINE_GRAPH); 79 | } 80 | }); 81 | rootView.findViewById(R.id.imgSource4).setOnClickListener(new View.OnClickListener() { 82 | @Override 83 | public void onClick(View view) { 84 | openSource(FullscreenExample.UNIQUE_LEGEND_LINE_GRAPH); 85 | } 86 | }); 87 | 88 | return rootView; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/OthersFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview_demos.FullscreenExample; 9 | import com.jjoe64.graphview_demos.ItemDetailFragment; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by jonas on 07.09.16. 14 | */ 15 | public class OthersFragment extends ItemDetailFragment { 16 | @Override 17 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 18 | Bundle savedInstanceState) { 19 | View rootView = inflater.inflate(R.layout.others_content, container, false); 20 | 21 | rootView.findViewById(R.id.cardSnapshotGraph).setOnClickListener(new View.OnClickListener() { 22 | @Override 23 | public void onClick(View view) { 24 | openFullscreen(FullscreenExample.SNAPSHOT_SHARE); 25 | } 26 | }); 27 | rootView.findViewById(R.id.imgFullscreen1).setOnClickListener(new View.OnClickListener() { 28 | @Override 29 | public void onClick(View view) { 30 | openFullscreen(FullscreenExample.SNAPSHOT_SHARE); 31 | } 32 | }); 33 | rootView.findViewById(R.id.imgSource1).setOnClickListener(new View.OnClickListener() { 34 | @Override 35 | public void onClick(View view) { 36 | openSource(FullscreenExample.SNAPSHOT_SHARE); 37 | } 38 | }); 39 | 40 | return rootView; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/PointsGraphFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.AdvancedBarGraph; 13 | import com.jjoe64.graphview_demos.examples.MultipleBarGraph; 14 | import com.jjoe64.graphview_demos.examples.SimpleBarGraph; 15 | import com.jjoe64.graphview_demos.examples.SimplePointsGraph; 16 | 17 | /** 18 | * Created by jonas on 07.09.16. 19 | */ 20 | public class PointsGraphFragment extends ItemDetailFragment { 21 | @Override 22 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 23 | Bundle savedInstanceState) { 24 | View rootView = inflater.inflate(R.layout.points_graph_content, container, false); 25 | 26 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 27 | new SimplePointsGraph().initGraph(graph); 28 | rootView.findViewById(R.id.cardSimplePointsGraph).setOnClickListener(new View.OnClickListener() { 29 | @Override 30 | public void onClick(View view) { 31 | openFullscreen(FullscreenExample.SIMPLE_POINTS_GRAPH); 32 | } 33 | }); 34 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 35 | @Override 36 | public void onClick(View view) { 37 | openFullscreen(FullscreenExample.SIMPLE_POINTS_GRAPH); 38 | } 39 | }); 40 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 41 | @Override 42 | public void onClick(View view) { 43 | openSource(FullscreenExample.SIMPLE_POINTS_GRAPH); 44 | } 45 | }); 46 | 47 | return rootView; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/RealtimeFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.AddSeriesAtRuntime; 13 | import com.jjoe64.graphview_demos.examples.BaseExample; 14 | import com.jjoe64.graphview_demos.examples.FixedFrame; 15 | import com.jjoe64.graphview_demos.examples.RealtimeScrolling; 16 | 17 | /** 18 | * Created by jonas on 07.09.16. 19 | */ 20 | public class RealtimeFragment extends ItemDetailFragment { 21 | private BaseExample mLogicFixedFrame; 22 | private BaseExample mLogicRealtimeScrolling; 23 | 24 | @Override 25 | public void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | mLogicFixedFrame = new FixedFrame(); 28 | mLogicRealtimeScrolling = new RealtimeScrolling(); 29 | } 30 | 31 | @Override 32 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 33 | Bundle savedInstanceState) { 34 | View rootView = inflater.inflate(R.layout.realtime_content, container, false); 35 | 36 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 37 | mLogicFixedFrame.initGraph(graph); 38 | rootView.findViewById(R.id.cardFixedFrame).setOnClickListener(new View.OnClickListener() { 39 | @Override 40 | public void onClick(View view) { 41 | openFullscreen(FullscreenExample.FIXED_FRAME); 42 | } 43 | }); 44 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 45 | @Override 46 | public void onClick(View view) { 47 | openFullscreen(FullscreenExample.FIXED_FRAME); 48 | } 49 | }); 50 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View view) { 53 | openSource(FullscreenExample.FIXED_FRAME); 54 | } 55 | }); 56 | 57 | graph = (GraphView) rootView.findViewById(R.id.graph2); 58 | mLogicRealtimeScrolling.initGraph(graph); 59 | rootView.findViewById(R.id.cardScrolling).setOnClickListener(new View.OnClickListener() { 60 | @Override 61 | public void onClick(View view) { 62 | openFullscreen(FullscreenExample.REALTIME_SCROLLING); 63 | } 64 | }); 65 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 66 | @Override 67 | public void onClick(View view) { 68 | openFullscreen(FullscreenExample.REALTIME_SCROLLING); 69 | } 70 | }); 71 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 72 | @Override 73 | public void onClick(View view) { 74 | openSource(FullscreenExample.REALTIME_SCROLLING); 75 | } 76 | }); 77 | 78 | rootView.findViewById(R.id.cardAddSeriesAtRuntime).setOnClickListener(new View.OnClickListener() { 79 | @Override 80 | public void onClick(View view) { 81 | openFullscreen(FullscreenExample.ADD_SERIES); 82 | } 83 | }); 84 | rootView.findViewById(R.id.imgFullscreen3).setOnClickListener(new View.OnClickListener() { 85 | @Override 86 | public void onClick(View view) { 87 | openFullscreen(FullscreenExample.ADD_SERIES); 88 | } 89 | }); 90 | rootView.findViewById(R.id.imgSource3).setOnClickListener(new View.OnClickListener() { 91 | @Override 92 | public void onClick(View view) { 93 | openSource(FullscreenExample.ADD_SERIES); 94 | } 95 | }); 96 | 97 | return rootView; 98 | } 99 | 100 | @Override 101 | public void onResume() { 102 | super.onResume(); 103 | mLogicFixedFrame.onResume(); 104 | mLogicRealtimeScrolling.onResume(); 105 | } 106 | 107 | @Override 108 | public void onPause() { 109 | mLogicFixedFrame.onPause(); 110 | mLogicRealtimeScrolling.onPause(); 111 | super.onPause(); 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/SecondScaleAndLabelsFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.CustomLabelsGraph; 13 | import com.jjoe64.graphview_demos.examples.NoLabelsGraph; 14 | import com.jjoe64.graphview_demos.examples.SecondScaleGraph; 15 | import com.jjoe64.graphview_demos.examples.SimplePointsGraph; 16 | import com.jjoe64.graphview_demos.examples.StaticLabelsGraph; 17 | 18 | /** 19 | * Created by jonas on 07.09.16. 20 | */ 21 | public class SecondScaleAndLabelsFragment extends ItemDetailFragment { 22 | @Override 23 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 24 | Bundle savedInstanceState) { 25 | View rootView = inflater.inflate(R.layout.second_scale_and_labels_content, container, false); 26 | 27 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 28 | new SecondScaleGraph().initGraph(graph); 29 | rootView.findViewById(R.id.cardSecondScaleGraph).setOnClickListener(new View.OnClickListener() { 30 | @Override 31 | public void onClick(View view) { 32 | openFullscreen(FullscreenExample.SECOND_SCALE_GRAPH); 33 | } 34 | }); 35 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 36 | @Override 37 | public void onClick(View view) { 38 | openFullscreen(FullscreenExample.SECOND_SCALE_GRAPH); 39 | } 40 | }); 41 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 42 | @Override 43 | public void onClick(View view) { 44 | openSource(FullscreenExample.SECOND_SCALE_GRAPH); 45 | } 46 | }); 47 | 48 | graph = (GraphView) rootView.findViewById(R.id.graph2); 49 | new CustomLabelsGraph().initGraph(graph); 50 | rootView.findViewById(R.id.cardCustomLabelsGraph).setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View view) { 53 | openFullscreen(FullscreenExample.CUSTOM_LABELS); 54 | } 55 | }); 56 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 57 | @Override 58 | public void onClick(View view) { 59 | openFullscreen(FullscreenExample.CUSTOM_LABELS); 60 | } 61 | }); 62 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 63 | @Override 64 | public void onClick(View view) { 65 | openSource(FullscreenExample.CUSTOM_LABELS); 66 | } 67 | }); 68 | 69 | graph = (GraphView) rootView.findViewById(R.id.graph3); 70 | new NoLabelsGraph().initGraph(graph); 71 | rootView.findViewById(R.id.cardNoLabelsGraph).setOnClickListener(new View.OnClickListener() { 72 | @Override 73 | public void onClick(View view) { 74 | openFullscreen(FullscreenExample.NO_LABELS); 75 | } 76 | }); 77 | rootView.findViewById(R.id.imgFullscreen3).setOnClickListener(new View.OnClickListener() { 78 | @Override 79 | public void onClick(View view) { 80 | openFullscreen(FullscreenExample.NO_LABELS); 81 | } 82 | }); 83 | rootView.findViewById(R.id.imgSource3).setOnClickListener(new View.OnClickListener() { 84 | @Override 85 | public void onClick(View view) { 86 | openSource(FullscreenExample.NO_LABELS); 87 | } 88 | }); 89 | 90 | graph = (GraphView) rootView.findViewById(R.id.graph4); 91 | new StaticLabelsGraph().initGraph(graph); 92 | rootView.findViewById(R.id.cardStaticLabelsGraph).setOnClickListener(new View.OnClickListener() { 93 | @Override 94 | public void onClick(View view) { 95 | openFullscreen(FullscreenExample.STATIC_LABELS); 96 | } 97 | }); 98 | rootView.findViewById(R.id.imgFullscreen4).setOnClickListener(new View.OnClickListener() { 99 | @Override 100 | public void onClick(View view) { 101 | openFullscreen(FullscreenExample.STATIC_LABELS); 102 | } 103 | }); 104 | rootView.findViewById(R.id.imgSource4).setOnClickListener(new View.OnClickListener() { 105 | @Override 106 | public void onClick(View view) { 107 | openSource(FullscreenExample.STATIC_LABELS); 108 | } 109 | }); 110 | 111 | return rootView; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/StylingExamplesFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.StylingColors; 13 | import com.jjoe64.graphview_demos.examples.StylingLabels; 14 | import com.jjoe64.graphview_demos.examples.TitlesExample; 15 | 16 | /** 17 | * Created by jonas on 07.09.16. 18 | */ 19 | public class StylingExamplesFragment extends ItemDetailFragment { 20 | @Override 21 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 22 | Bundle savedInstanceState) { 23 | View rootView = inflater.inflate(R.layout.styling_examples_content, container, false); 24 | 25 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 26 | new StylingLabels().initGraph(graph); 27 | rootView.findViewById(R.id.cardStylingLabelsGraph).setOnClickListener(new View.OnClickListener() { 28 | @Override 29 | public void onClick(View view) { 30 | openFullscreen(FullscreenExample.STYLING_LABELS); 31 | } 32 | }); 33 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 34 | @Override 35 | public void onClick(View view) { 36 | openFullscreen(FullscreenExample.STYLING_LABELS); 37 | } 38 | }); 39 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 40 | @Override 41 | public void onClick(View view) { 42 | openSource(FullscreenExample.STYLING_LABELS); 43 | } 44 | }); 45 | 46 | graph = (GraphView) rootView.findViewById(R.id.graph2); 47 | new StylingColors().initGraph(graph); 48 | rootView.findViewById(R.id.cardStylingColorsGraph).setOnClickListener(new View.OnClickListener() { 49 | @Override 50 | public void onClick(View view) { 51 | openFullscreen(FullscreenExample.STYLING_COLORS); 52 | } 53 | }); 54 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 55 | @Override 56 | public void onClick(View view) { 57 | openFullscreen(FullscreenExample.STYLING_COLORS); 58 | } 59 | }); 60 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 61 | @Override 62 | public void onClick(View view) { 63 | openSource(FullscreenExample.STYLING_COLORS); 64 | } 65 | }); 66 | 67 | graph = (GraphView) rootView.findViewById(R.id.graph3); 68 | new TitlesExample().initGraph(graph); 69 | rootView.findViewById(R.id.cardTitlesGraph).setOnClickListener(new View.OnClickListener() { 70 | @Override 71 | public void onClick(View view) { 72 | openFullscreen(FullscreenExample.TITLES_EXAMPLE); 73 | } 74 | }); 75 | rootView.findViewById(R.id.imgFullscreen3).setOnClickListener(new View.OnClickListener() { 76 | @Override 77 | public void onClick(View view) { 78 | openFullscreen(FullscreenExample.TITLES_EXAMPLE); 79 | } 80 | }); 81 | rootView.findViewById(R.id.imgSource3).setOnClickListener(new View.OnClickListener() { 82 | @Override 83 | public void onClick(View view) { 84 | openSource(FullscreenExample.TITLES_EXAMPLE); 85 | } 86 | }); 87 | 88 | return rootView; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/TapListenerGraphFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.SimplePointsGraph; 13 | import com.jjoe64.graphview_demos.examples.TapListenerGraph; 14 | 15 | /** 16 | * Created by jonas on 07.09.16. 17 | */ 18 | public class TapListenerGraphFragment extends ItemDetailFragment { 19 | @Override 20 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 21 | Bundle savedInstanceState) { 22 | View rootView = inflater.inflate(R.layout.tap_listener_graph_content, container, false); 23 | 24 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 25 | new TapListenerGraph().initGraph(graph); 26 | rootView.findViewById(R.id.cardTapListenerGraph).setOnClickListener(new View.OnClickListener() { 27 | @Override 28 | public void onClick(View view) { 29 | openFullscreen(FullscreenExample.TAP_LISTENER); 30 | } 31 | }); 32 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View view) { 35 | openFullscreen(FullscreenExample.TAP_LISTENER); 36 | } 37 | }); 38 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 39 | @Override 40 | public void onClick(View view) { 41 | openSource(FullscreenExample.TAP_LISTENER); 42 | } 43 | }); 44 | 45 | return rootView; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/TimeAndDatesFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview.GraphView; 9 | import com.jjoe64.graphview_demos.FullscreenExample; 10 | import com.jjoe64.graphview_demos.ItemDetailFragment; 11 | import com.jjoe64.graphview_demos.R; 12 | import com.jjoe64.graphview_demos.examples.Dates; 13 | import com.jjoe64.graphview_demos.examples.HelloWorld; 14 | 15 | /** 16 | * Created by jonas on 07.09.16. 17 | */ 18 | public class TimeAndDatesFragment extends ItemDetailFragment { 19 | @Override 20 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 21 | Bundle savedInstanceState) { 22 | View rootView = inflater.inflate(R.layout.time_and_dates_content, container, false); 23 | 24 | GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 25 | new Dates(2).initGraph(graph); 26 | 27 | rootView.findViewById(R.id.cardDatesGraph).setOnClickListener(new View.OnClickListener() { 28 | @Override 29 | public void onClick(View view) { 30 | openFullscreen(FullscreenExample.DATES); 31 | } 32 | }); 33 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 34 | @Override 35 | public void onClick(View view) { 36 | openFullscreen(FullscreenExample.DATES); 37 | } 38 | }); 39 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 40 | @Override 41 | public void onClick(View view) { 42 | openSource(FullscreenExample.DATES); 43 | } 44 | }); 45 | 46 | return rootView; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/categories/ZoomingAndScrollingFragment.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.categories; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.jjoe64.graphview_demos.FullscreenExample; 9 | import com.jjoe64.graphview_demos.ItemDetailFragment; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by jonas on 07.09.16. 14 | */ 15 | public class ZoomingAndScrollingFragment extends ItemDetailFragment { 16 | @Override 17 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 18 | Bundle savedInstanceState) { 19 | View rootView = inflater.inflate(R.layout.zooming_and_scrolling_content, container, false); 20 | 21 | //GraphView graph = (GraphView) rootView.findViewById(R.id.graph); 22 | //new HelloWorld().initGraph(graph); 23 | 24 | rootView.findViewById(R.id.cardZoomXYGraph).setOnClickListener(new View.OnClickListener() { 25 | @Override 26 | public void onClick(View view) { 27 | openFullscreen(FullscreenExample.SCALING_XY); 28 | } 29 | }); 30 | rootView.findViewById(R.id.imgFullscreen).setOnClickListener(new View.OnClickListener() { 31 | @Override 32 | public void onClick(View view) { 33 | openFullscreen(FullscreenExample.SCALING_XY); 34 | } 35 | }); 36 | rootView.findViewById(R.id.imgSource).setOnClickListener(new View.OnClickListener() { 37 | @Override 38 | public void onClick(View view) { 39 | openSource(FullscreenExample.SCALING_XY); 40 | } 41 | }); 42 | 43 | rootView.findViewById(R.id.cardZoomXGraph).setOnClickListener(new View.OnClickListener() { 44 | @Override 45 | public void onClick(View view) { 46 | openFullscreen(FullscreenExample.SCALING_X); 47 | } 48 | }); 49 | rootView.findViewById(R.id.imgFullscreen2).setOnClickListener(new View.OnClickListener() { 50 | @Override 51 | public void onClick(View view) { 52 | openFullscreen(FullscreenExample.SCALING_X); 53 | } 54 | }); 55 | rootView.findViewById(R.id.imgSource2).setOnClickListener(new View.OnClickListener() { 56 | @Override 57 | public void onClick(View view) { 58 | openSource(FullscreenExample.SCALING_X); 59 | } 60 | }); 61 | 62 | rootView.findViewById(R.id.cardScrollXGraph).setOnClickListener(new View.OnClickListener() { 63 | @Override 64 | public void onClick(View view) { 65 | openFullscreen(FullscreenExample.SCROLLING_X); 66 | } 67 | }); 68 | rootView.findViewById(R.id.imgFullscreen3).setOnClickListener(new View.OnClickListener() { 69 | @Override 70 | public void onClick(View view) { 71 | openFullscreen(FullscreenExample.SCROLLING_X); 72 | } 73 | }); 74 | rootView.findViewById(R.id.imgSource3).setOnClickListener(new View.OnClickListener() { 75 | @Override 76 | public void onClick(View view) { 77 | openSource(FullscreenExample.SCROLLING_X); 78 | } 79 | }); 80 | 81 | return rootView; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/AddSeriesAtRuntime.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.app.Activity; 4 | import android.view.View; 5 | import android.widget.Button; 6 | 7 | import com.jjoe64.graphview.GraphView; 8 | import com.jjoe64.graphview.series.DataPoint; 9 | import com.jjoe64.graphview.series.LineGraphSeries; 10 | import com.jjoe64.graphview_demos.FullscreenActivity; 11 | import com.jjoe64.graphview_demos.R; 12 | 13 | import java.util.Random; 14 | 15 | /** 16 | * Created by jonas on 10.09.16. 17 | */ 18 | public class AddSeriesAtRuntime extends BaseExample { 19 | private Activity mActivity; 20 | 21 | @Override 22 | public void onCreate(FullscreenActivity activity) { 23 | mActivity = activity; 24 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 25 | initGraph(graph); 26 | } 27 | 28 | @Override 29 | public void initGraph(final GraphView graph) { 30 | Button btn = (Button) mActivity.findViewById(R.id.btnAddSeries); 31 | btn.setOnClickListener(new View.OnClickListener() { 32 | @Override 33 | public void onClick(View v) { 34 | graph.addSeries(new LineGraphSeries(generateData())); 35 | } 36 | 37 | }); 38 | 39 | btn = (Button) mActivity.findViewById(R.id.btnClear); 40 | btn.setOnClickListener(new View.OnClickListener() { 41 | @Override 42 | public void onClick(View v) { 43 | graph.removeAllSeries(); 44 | } 45 | }); 46 | } 47 | 48 | private DataPoint[] generateData() { 49 | Random rand = new Random(); 50 | int count = 30; 51 | DataPoint[] values = new DataPoint[count]; 52 | for (int i=0; i series = new BarGraphSeries(new DataPoint[] { 26 | new DataPoint(0, -1), 27 | new DataPoint(1, 5), 28 | new DataPoint(2, 3), 29 | new DataPoint(3, 2), 30 | new DataPoint(4, 6) 31 | }); 32 | graph.addSeries(series); 33 | 34 | // styling 35 | series.setValueDependentColor(new ValueDependentColor() { 36 | @Override 37 | public int get(DataPoint data) { 38 | return Color.rgb((int) data.getX()*255/4, (int) Math.abs(data.getY()*255/6), 100); 39 | } 40 | }); 41 | 42 | series.setSpacing(50); 43 | series.setAnimated(true); 44 | 45 | // draw values on top 46 | series.setDrawValuesOnTop(true); 47 | series.setValuesOnTopColor(Color.RED); 48 | //series.setValuesOnTopSize(50); 49 | 50 | // legend 51 | series.setTitle("foo"); 52 | graph.getLegendRenderer().setVisible(true); 53 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/AdvancedLineGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.series.DataPoint; 8 | import com.jjoe64.graphview.series.LineGraphSeries; 9 | import com.jjoe64.graphview_demos.FullscreenActivity; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by jonas on 10.09.16. 14 | */ 15 | public class AdvancedLineGraph extends BaseExample { 16 | @Override 17 | public void onCreate(FullscreenActivity activity) { 18 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 19 | initGraph(graph); 20 | } 21 | 22 | @Override 23 | public void initGraph(GraphView graph) { 24 | // first series 25 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[] { 26 | new DataPoint(0, 1), 27 | new DataPoint(1, 5), 28 | new DataPoint(2, 3), 29 | new DataPoint(3, 2), 30 | new DataPoint(4, 6) 31 | }); 32 | series.setTitle("first line"); 33 | graph.addSeries(series); 34 | 35 | // second series 36 | LineGraphSeries series2 = new LineGraphSeries<>(new DataPoint[] { 37 | new DataPoint(0, 3), 38 | new DataPoint(1, 3), 39 | new DataPoint(2, 6), 40 | new DataPoint(3, 2), 41 | new DataPoint(4, 5) 42 | }); 43 | series2.setTitle("speed"); 44 | series2.setDrawBackground(true); 45 | series2.setColor(Color.argb(255, 255, 60, 60)); 46 | series2.setBackgroundColor(Color.argb(100, 204, 119, 119)); 47 | series2.setDrawDataPoints(true); 48 | graph.addSeries(series2); 49 | 50 | // legend 51 | graph.getLegendRenderer().setVisible(true); 52 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/BaseExample.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview_demos.FullscreenActivity; 5 | 6 | /** 7 | * Created by jonas on 10.09.16. 8 | */ 9 | public abstract class BaseExample { 10 | public abstract void onCreate(FullscreenActivity fullscreenActivity); 11 | public abstract void initGraph(GraphView graph); 12 | 13 | public void onPause() {} 14 | public void onResume() {} 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/CustomLabelsGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.DefaultLabelFormatter; 4 | import com.jjoe64.graphview.GraphView; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class CustomLabelsGraph extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | LineGraphSeries series = new LineGraphSeries(new DataPoint[] { 23 | new DataPoint(0, 1), 24 | new DataPoint(1, 5), 25 | new DataPoint(2, 3), 26 | new DataPoint(3, 2), 27 | new DataPoint(4, 6) 28 | }); 29 | graph.addSeries(series); 30 | 31 | // custom label formatter to show currency "EUR" 32 | graph.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter() { 33 | @Override 34 | public String formatLabel(double value, boolean isValueX) { 35 | if (isValueX) { 36 | // show normal x values 37 | return super.formatLabel(value, isValueX); 38 | } else { 39 | // show currency for y values 40 | return super.formatLabel(value, isValueX) + " €"; 41 | } 42 | } 43 | }); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/Dates.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.helper.DateAsXAxisLabelFormatter; 8 | import com.jjoe64.graphview.series.BarGraphSeries; 9 | import com.jjoe64.graphview.series.DataPoint; 10 | import com.jjoe64.graphview.series.LineGraphSeries; 11 | import com.jjoe64.graphview_demos.FullscreenActivity; 12 | import com.jjoe64.graphview_demos.R; 13 | 14 | import java.util.Calendar; 15 | import java.util.Date; 16 | 17 | /** 18 | * Created by jonas on 10.09.16. 19 | */ 20 | public class Dates extends BaseExample { 21 | private int mNumLabels; 22 | 23 | public Dates(int numLabels) { 24 | mNumLabels = numLabels; 25 | } 26 | 27 | public Dates() { 28 | mNumLabels = 4; 29 | } 30 | 31 | @Override 32 | public void onCreate(FullscreenActivity activity) { 33 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 34 | initGraph(graph); 35 | } 36 | 37 | @Override 38 | public void initGraph(GraphView graph) { 39 | // generate Dates 40 | Calendar calendar = Calendar.getInstance(); 41 | Date d1 = calendar.getTime(); 42 | calendar.add(Calendar.DATE, 1); 43 | Date d2 = calendar.getTime(); 44 | calendar.add(Calendar.DATE, 1); 45 | Date d3 = calendar.getTime(); 46 | 47 | // you can directly pass Date objects to DataPoint-Constructor 48 | // this will convert the Date to double via Date#getTime() 49 | LineGraphSeries series = new LineGraphSeries(new DataPoint[] { 50 | new DataPoint(d1, 1), 51 | new DataPoint(d2, 5), 52 | new DataPoint(d3, 3) 53 | }); 54 | graph.addSeries(series); 55 | 56 | // set date label formatter 57 | graph.getGridLabelRenderer().setLabelFormatter(new DateAsXAxisLabelFormatter(graph.getContext())); 58 | graph.getGridLabelRenderer().setNumHorizontalLabels(mNumLabels); 59 | 60 | // set manual x bounds to have nice steps 61 | graph.getViewport().setMinX(d1.getTime()); 62 | graph.getViewport().setMaxX(d3.getTime()); 63 | graph.getViewport().setXAxisBoundsManual(true); 64 | 65 | // as we use dates as labels, the human rounding to nice readable numbers 66 | // is not nessecary 67 | graph.getGridLabelRenderer().setHumanRounding(false); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/FixedFrame.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.os.Handler; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.series.DataPoint; 7 | import com.jjoe64.graphview.series.LineGraphSeries; 8 | import com.jjoe64.graphview_demos.FullscreenActivity; 9 | import com.jjoe64.graphview_demos.R; 10 | 11 | import java.util.Random; 12 | 13 | /** 14 | * Created by jonas on 10.09.16. 15 | */ 16 | public class FixedFrame extends BaseExample { 17 | private final Handler mHandler = new Handler(); 18 | private Runnable mTimer; 19 | private double graphLastXValue = 5d; 20 | private LineGraphSeries mSeries; 21 | 22 | @Override 23 | public void onCreate(FullscreenActivity activity) { 24 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 25 | initGraph(graph); 26 | } 27 | 28 | @Override 29 | public void initGraph(GraphView graph) { 30 | graph.getViewport().setXAxisBoundsManual(true); 31 | graph.getViewport().setMinX(0); 32 | graph.getViewport().setMaxX(40); 33 | 34 | graph.getViewport().setYAxisBoundsManual(true); 35 | graph.getViewport().setMinY(-100); 36 | graph.getViewport().setMaxY(100); 37 | 38 | // first mSeries is a line 39 | mSeries = new LineGraphSeries<>(); 40 | graph.addSeries(mSeries); 41 | } 42 | 43 | public void onResume() { 44 | mTimer = new Runnable() { 45 | @Override 46 | public void run() { 47 | if (graphLastXValue == 40) { 48 | graphLastXValue = 0; 49 | mSeries.resetData(new DataPoint[] { 50 | new DataPoint(graphLastXValue, getRandom()) 51 | }); 52 | } 53 | graphLastXValue += 1d; 54 | mSeries.appendData(new DataPoint(graphLastXValue, getRandom()), false, 40); 55 | mHandler.postDelayed(this, 50); 56 | } 57 | }; 58 | mHandler.postDelayed(mTimer, 700); 59 | } 60 | 61 | public void onPause() { 62 | mHandler.removeCallbacks(mTimer); 63 | } 64 | 65 | double mLastRandom = 2; 66 | private double getRandom() { 67 | mLastRandom++; 68 | return Math.sin(mLastRandom*0.5) * 10 * (Math.random() * 10 + 1); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/HelloWorld.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | import android.util.Log; 5 | 6 | import com.jjoe64.graphview.GraphView; 7 | import com.jjoe64.graphview.LegendRenderer; 8 | import com.jjoe64.graphview.series.BarGraphSeries; 9 | import com.jjoe64.graphview.series.DataPoint; 10 | import com.jjoe64.graphview.series.LineGraphSeries; 11 | import com.jjoe64.graphview_demos.FullscreenActivity; 12 | import com.jjoe64.graphview_demos.R; 13 | 14 | /** 15 | * Created by jonas on 10.09.16. 16 | */ 17 | public class HelloWorld extends BaseExample { 18 | @Override 19 | public void onCreate(FullscreenActivity activity) { 20 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 21 | initGraph(graph); 22 | } 23 | 24 | @Override 25 | public void initGraph(GraphView graph) { 26 | // first series is a line 27 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[] { 28 | new DataPoint(0, 1), 29 | new DataPoint(1, 5), 30 | new DataPoint(2, 3), 31 | new DataPoint(3, 2), 32 | new DataPoint(4, 6) 33 | }); 34 | series.setDrawBackground(true); 35 | series.setAnimated(true); 36 | series.setDrawDataPoints(true); 37 | series.setTitle("People"); 38 | 39 | graph.addSeries(series); 40 | 41 | BarGraphSeries series2 = new BarGraphSeries<>(new DataPoint[] { 42 | new DataPoint(1, 4), 43 | new DataPoint(3, 5), 44 | }); 45 | series2.setDataWidth(1d); 46 | series2.setSpacing(50); 47 | series2.setAnimated(true); 48 | series2.setDrawValuesOnTop(true); 49 | series2.setTitle("Children"); 50 | series2.setColor(Color.argb(255, 60, 200, 128)); 51 | 52 | graph.addSeries(series2); 53 | 54 | graph.getLegendRenderer().setVisible(true); 55 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/MultipleBarGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.series.BarGraphSeries; 8 | import com.jjoe64.graphview.series.DataPoint; 9 | import com.jjoe64.graphview_demos.FullscreenActivity; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by jonas on 10.09.16. 14 | */ 15 | public class MultipleBarGraph extends BaseExample { 16 | @Override 17 | public void onCreate(FullscreenActivity activity) { 18 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 19 | initGraph(graph); 20 | } 21 | 22 | @Override 23 | public void initGraph(GraphView graph) { 24 | BarGraphSeries series = new BarGraphSeries<>(new DataPoint[] { 25 | new DataPoint(0, -2), 26 | new DataPoint(1, 5), 27 | new DataPoint(2, 3), 28 | new DataPoint(3, 2), 29 | new DataPoint(4, 6) 30 | }); 31 | series.setSpacing(30); 32 | series.setAnimated(true); 33 | graph.addSeries(series); 34 | 35 | BarGraphSeries series2 = new BarGraphSeries<>(new DataPoint[] { 36 | new DataPoint(0, -5), 37 | new DataPoint(1, 3), 38 | new DataPoint(2, 4), 39 | new DataPoint(3, 4), 40 | new DataPoint(4, 1) 41 | }); 42 | series2.setColor(Color.RED); 43 | series2.setSpacing(30); 44 | series2.setAnimated(true); 45 | graph.addSeries(series2); 46 | 47 | graph.getViewport().setXAxisBoundsManual(true); 48 | graph.getViewport().setMinX(-2); 49 | graph.getViewport().setMaxX(6); 50 | 51 | // legend 52 | series.setTitle("foo"); 53 | series2.setTitle("bar"); 54 | graph.getLegendRenderer().setVisible(true); 55 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/NoLabelsGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview.LegendRenderer; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class NoLabelsGraph extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | LineGraphSeries series = new LineGraphSeries(new DataPoint[] { 23 | new DataPoint(0, 1), 24 | new DataPoint(1, 5), 25 | new DataPoint(2, 3), 26 | new DataPoint(3, 2), 27 | new DataPoint(4, 6) 28 | }); 29 | graph.addSeries(series); 30 | 31 | LineGraphSeries series2 = new LineGraphSeries(new DataPoint[] { 32 | new DataPoint(0, 3), 33 | new DataPoint(1, 3), 34 | new DataPoint(2, 6), 35 | new DataPoint(3, 2), 36 | new DataPoint(4, 5) 37 | }); 38 | graph.addSeries(series2); 39 | 40 | // hide labels and title 41 | graph.getGridLabelRenderer().setVerticalLabelsVisible(false); 42 | graph.getGridLabelRenderer().setHorizontalLabelsVisible(false); 43 | graph.setTitle(null); // this is default 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/RealtimeScrolling.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.os.Handler; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.series.DataPoint; 7 | import com.jjoe64.graphview.series.LineGraphSeries; 8 | import com.jjoe64.graphview_demos.FullscreenActivity; 9 | import com.jjoe64.graphview_demos.R; 10 | 11 | import java.util.Random; 12 | 13 | /** 14 | * Created by jonas on 10.09.16. 15 | */ 16 | public class RealtimeScrolling extends BaseExample { 17 | private final Handler mHandler = new Handler(); 18 | private Runnable mTimer; 19 | private double graphLastXValue = 5d; 20 | private LineGraphSeries mSeries; 21 | 22 | @Override 23 | public void onCreate(FullscreenActivity activity) { 24 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 25 | initGraph(graph); 26 | } 27 | 28 | @Override 29 | public void initGraph(GraphView graph) { 30 | graph.getViewport().setXAxisBoundsManual(true); 31 | graph.getViewport().setMinX(0); 32 | graph.getViewport().setMaxX(4); 33 | 34 | graph.getGridLabelRenderer().setLabelVerticalWidth(100); 35 | 36 | // first mSeries is a line 37 | mSeries = new LineGraphSeries<>(); 38 | mSeries.setDrawDataPoints(true); 39 | mSeries.setDrawBackground(true); 40 | graph.addSeries(mSeries); 41 | } 42 | 43 | public void onResume() { 44 | mTimer = new Runnable() { 45 | @Override 46 | public void run() { 47 | graphLastXValue += 0.25d; 48 | mSeries.appendData(new DataPoint(graphLastXValue, getRandom()), true, 22); 49 | mHandler.postDelayed(this, 330); 50 | } 51 | }; 52 | mHandler.postDelayed(mTimer, 1500); 53 | } 54 | 55 | public void onPause() { 56 | mHandler.removeCallbacks(mTimer); 57 | } 58 | 59 | double mLastRandom = 2; 60 | Random mRand = new Random(); 61 | private double getRandom() { 62 | return mLastRandom += mRand.nextDouble()*0.5 - 0.25; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/ScalingX.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview.LegendRenderer; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class ScalingX extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | // first series is a line 23 | DataPoint[] points = new DataPoint[100]; 24 | for (int i = 0; i < points.length; i++) { 25 | points[i] = new DataPoint(i, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 26 | } 27 | LineGraphSeries series = new LineGraphSeries<>(points); 28 | 29 | // set manual X bounds 30 | graph.getViewport().setYAxisBoundsManual(true); 31 | graph.getViewport().setMinY(-200); 32 | graph.getViewport().setMaxY(200); 33 | 34 | graph.getViewport().setXAxisBoundsManual(true); 35 | graph.getViewport().setMinX(4); 36 | graph.getViewport().setMaxX(80); 37 | 38 | // enable scaling 39 | graph.getViewport().setScalable(true); 40 | 41 | series.setTitle("Random Curve"); 42 | 43 | graph.addSeries(series); 44 | 45 | graph.getLegendRenderer().setVisible(true); 46 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/ScalingXY.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.series.BarGraphSeries; 8 | import com.jjoe64.graphview.series.DataPoint; 9 | import com.jjoe64.graphview.series.LineGraphSeries; 10 | import com.jjoe64.graphview_demos.FullscreenActivity; 11 | import com.jjoe64.graphview_demos.R; 12 | 13 | /** 14 | * Created by jonas on 10.09.16. 15 | */ 16 | public class ScalingXY extends BaseExample { 17 | @Override 18 | public void onCreate(FullscreenActivity activity) { 19 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 20 | initGraph(graph); 21 | } 22 | 23 | @Override 24 | public void initGraph(GraphView graph) { 25 | // first series is a line 26 | DataPoint[] points = new DataPoint[100]; 27 | for (int i = 0; i < points.length; i++) { 28 | points[i] = new DataPoint(i, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 29 | } 30 | LineGraphSeries series = new LineGraphSeries<>(points); 31 | 32 | // set manual X bounds 33 | graph.getViewport().setYAxisBoundsManual(true); 34 | graph.getViewport().setMinY(-150); 35 | graph.getViewport().setMaxY(150); 36 | 37 | graph.getViewport().setXAxisBoundsManual(true); 38 | graph.getViewport().setMinX(4); 39 | graph.getViewport().setMaxX(80); 40 | 41 | // enable scaling 42 | graph.getViewport().setScalable(true); 43 | graph.getViewport().setScalableY(true); 44 | 45 | series.setTitle("Random Curve"); 46 | 47 | graph.addSeries(series); 48 | 49 | graph.getLegendRenderer().setVisible(true); 50 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/ScrollingX.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview.LegendRenderer; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class ScrollingX extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | // first series is a line 23 | DataPoint[] points = new DataPoint[50]; 24 | for (int i = 0; i < 50; i++) { 25 | points[i] = new DataPoint(i, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 26 | } 27 | LineGraphSeries series = new LineGraphSeries<>(points); 28 | 29 | // set manual X bounds 30 | graph.getViewport().setXAxisBoundsManual(true); 31 | graph.getViewport().setMinX(0); 32 | graph.getViewport().setMaxX(10); 33 | 34 | // enable scrolling 35 | graph.getViewport().setScrollable(true); 36 | 37 | series.setTitle("Random Curve"); 38 | 39 | graph.addSeries(series); 40 | 41 | graph.getLegendRenderer().setVisible(true); 42 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/SecondScaleGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.series.DataPoint; 8 | import com.jjoe64.graphview.series.LineGraphSeries; 9 | import com.jjoe64.graphview_demos.FullscreenActivity; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by jonas on 10.09.16. 14 | */ 15 | public class SecondScaleGraph extends BaseExample { 16 | @Override 17 | public void onCreate(FullscreenActivity activity) { 18 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 19 | initGraph(graph); 20 | } 21 | 22 | @Override 23 | public void initGraph(GraphView graph) { 24 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[]{ 25 | new DataPoint(0, 1), 26 | new DataPoint(1, 5), 27 | new DataPoint(2, 3), 28 | new DataPoint(3, 2), 29 | new DataPoint(4, 6) 30 | }); 31 | graph.addSeries(series); 32 | 33 | LineGraphSeries series2 = new LineGraphSeries<>(new DataPoint[]{ 34 | new DataPoint(0, 30), 35 | new DataPoint(1, 30), 36 | new DataPoint(2, 60), 37 | new DataPoint(3, 20), 38 | new DataPoint(4, 50) 39 | }); 40 | 41 | // set second scale 42 | graph.getSecondScale().addSeries(series2); 43 | // the y bounds are always manual for second scale 44 | graph.getSecondScale().setMinY(0); 45 | graph.getSecondScale().setMaxY(100); 46 | series2.setColor(Color.RED); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/SimpleBarGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview.series.BarGraphSeries; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class SimpleBarGraph extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | BarGraphSeries series = new BarGraphSeries<>(new DataPoint[] { 23 | new DataPoint(1, 5), 24 | new DataPoint(2, -3), 25 | new DataPoint(3, 2) 26 | }); 27 | series.setSpacing(50); // 50% spacing between bars 28 | series.setAnimated(true); 29 | graph.addSeries(series); 30 | 31 | // set the viewport wider than the data, to have a nice view 32 | graph.getViewport().setMinX(0d); 33 | graph.getViewport().setMaxX(4d); 34 | graph.getViewport().setXAxisBoundsManual(true); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/SimpleLineGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.LegendRenderer; 7 | import com.jjoe64.graphview.series.BarGraphSeries; 8 | import com.jjoe64.graphview.series.DataPoint; 9 | import com.jjoe64.graphview.series.LineGraphSeries; 10 | import com.jjoe64.graphview_demos.FullscreenActivity; 11 | import com.jjoe64.graphview_demos.R; 12 | 13 | /** 14 | * Created by jonas on 10.09.16. 15 | */ 16 | public class SimpleLineGraph extends BaseExample { 17 | @Override 18 | public void onCreate(FullscreenActivity activity) { 19 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 20 | initGraph(graph); 21 | } 22 | 23 | @Override 24 | public void initGraph(GraphView graph) { 25 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[] { 26 | new DataPoint(0, 1), 27 | new DataPoint(1, 5), 28 | new DataPoint(2, 3), 29 | new DataPoint(3, 2), 30 | new DataPoint(4, 6) 31 | }); 32 | graph.addSeries(series); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/SimplePointsGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Color; 5 | import android.graphics.Paint; 6 | 7 | import com.jjoe64.graphview.GraphView; 8 | import com.jjoe64.graphview.series.DataPoint; 9 | import com.jjoe64.graphview.series.DataPointInterface; 10 | import com.jjoe64.graphview.series.LineGraphSeries; 11 | import com.jjoe64.graphview.series.PointsGraphSeries; 12 | import com.jjoe64.graphview_demos.FullscreenActivity; 13 | import com.jjoe64.graphview_demos.R; 14 | 15 | /** 16 | * Created by jonas on 10.09.16. 17 | */ 18 | public class SimplePointsGraph extends BaseExample { 19 | private int mSize = 10; 20 | 21 | @Override 22 | public void onCreate(FullscreenActivity activity) { 23 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 24 | initGraph(graph); 25 | } 26 | 27 | @Override 28 | public void initGraph(GraphView graph) { 29 | PointsGraphSeries series = new PointsGraphSeries<>(new DataPoint[] { 30 | new DataPoint(0, -2), 31 | new DataPoint(1, 5), 32 | new DataPoint(2, 3), 33 | new DataPoint(3, 2), 34 | new DataPoint(4, 6) 35 | }); 36 | graph.addSeries(series); 37 | series.setShape(PointsGraphSeries.Shape.POINT); 38 | series.setSize(mSize); 39 | 40 | PointsGraphSeries series2 = new PointsGraphSeries(new DataPoint[] { 41 | new DataPoint(0, -1), 42 | new DataPoint(1, 4), 43 | new DataPoint(2, 2), 44 | new DataPoint(3, 1), 45 | new DataPoint(4, 5) 46 | }); 47 | graph.addSeries(series2); 48 | series2.setShape(PointsGraphSeries.Shape.RECTANGLE); 49 | series2.setColor(Color.RED); 50 | series2.setSize(mSize); 51 | 52 | PointsGraphSeries series3 = new PointsGraphSeries(new DataPoint[] { 53 | new DataPoint(0, 0), 54 | new DataPoint(1, 3), 55 | new DataPoint(2, 1), 56 | new DataPoint(3, 0), 57 | new DataPoint(4, 4) 58 | }); 59 | graph.addSeries(series3); 60 | series3.setShape(PointsGraphSeries.Shape.TRIANGLE); 61 | series3.setColor(Color.YELLOW); 62 | series3.setSize(mSize); 63 | 64 | PointsGraphSeries series4 = new PointsGraphSeries(new DataPoint[] { 65 | new DataPoint(0, 1), 66 | new DataPoint(1, 2), 67 | new DataPoint(2, 0), 68 | new DataPoint(3, -1), 69 | new DataPoint(4, 3) 70 | }); 71 | graph.addSeries(series4); 72 | series4.setColor(Color.GREEN); 73 | series4.setCustomShape(new PointsGraphSeries.CustomShape() { 74 | @Override 75 | public void draw(Canvas canvas, Paint paint, float x, float y, DataPointInterface dataPoint) { 76 | paint.setStrokeWidth(5); 77 | canvas.drawLine(x-10, y-10, x+10, y+10, paint); 78 | canvas.drawLine(x+10, y-10, x-10, y+10, paint); 79 | } 80 | }); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/SnapshotShareGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.Manifest; 4 | import android.app.Activity; 5 | import android.content.pm.PackageManager; 6 | import android.graphics.Color; 7 | import android.support.v4.app.ActivityCompat; 8 | import android.support.v4.content.ContextCompat; 9 | import android.view.View; 10 | import android.widget.Button; 11 | import android.widget.Toast; 12 | 13 | import com.jjoe64.graphview.GraphView; 14 | import com.jjoe64.graphview.LegendRenderer; 15 | import com.jjoe64.graphview.series.BarGraphSeries; 16 | import com.jjoe64.graphview.series.DataPoint; 17 | import com.jjoe64.graphview.series.LineGraphSeries; 18 | import com.jjoe64.graphview_demos.FullscreenActivity; 19 | import com.jjoe64.graphview_demos.R; 20 | 21 | import java.util.Random; 22 | 23 | /** 24 | * Created by jonas on 10.09.16. 25 | */ 26 | public class SnapshotShareGraph extends BaseExample { 27 | public static final int REQUEST_CODE_PERMISSION = 1; 28 | 29 | private Activity mActivity; 30 | private GraphView graph; 31 | 32 | @Override 33 | public void onCreate(FullscreenActivity activity) { 34 | mActivity = activity; 35 | graph = activity.findViewById(R.id.graph); 36 | initGraph(graph); 37 | } 38 | 39 | @Override 40 | public void initGraph(final GraphView graph) { 41 | // example code from HelloWorld fragment: 42 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[] { 43 | new DataPoint(0, 1), 44 | new DataPoint(1, 5), 45 | new DataPoint(2, 3), 46 | new DataPoint(3, 2), 47 | new DataPoint(4, 6) 48 | }); 49 | series.setDrawBackground(true); 50 | series.setAnimated(true); 51 | series.setDrawDataPoints(true); 52 | series.setTitle("People"); 53 | 54 | graph.addSeries(series); 55 | 56 | BarGraphSeries series2 = new BarGraphSeries<>(new DataPoint[] { 57 | new DataPoint(1, 4), 58 | new DataPoint(3, 5), 59 | }); 60 | series2.setDataWidth(1d); 61 | series2.setSpacing(50); 62 | series2.setAnimated(true); 63 | series2.setDrawValuesOnTop(true); 64 | series2.setTitle("Children"); 65 | series2.setColor(Color.argb(255, 60, 200, 128)); 66 | 67 | graph.addSeries(series2); 68 | 69 | graph.getLegendRenderer().setVisible(true); 70 | graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 71 | 72 | // snapshot call 73 | Button btn = mActivity.findViewById(R.id.btnAddSeries); 74 | btn.setText("Take snapshot and share"); 75 | btn.setOnClickListener(new View.OnClickListener() { 76 | @Override 77 | public void onClick(View v) { 78 | if (checkPermission()) { 79 | snapshot(); 80 | } 81 | } 82 | }); 83 | 84 | btn = mActivity.findViewById(R.id.btnClear); 85 | btn.setVisibility(View.GONE); 86 | } 87 | 88 | public void snapshot() { 89 | try { 90 | graph.takeSnapshotAndShare(mActivity, "exampleGraph", "GraphViewSnapshot"); 91 | } catch (SecurityException e) { 92 | e.printStackTrace(); 93 | Toast.makeText(mActivity, "Permission problem. See log " + e.toString(), Toast.LENGTH_SHORT).show(); 94 | } 95 | } 96 | 97 | private boolean checkPermission() { 98 | // Here, thisActivity is the current activity 99 | if (ContextCompat.checkSelfPermission(mActivity, 100 | Manifest.permission.WRITE_EXTERNAL_STORAGE) 101 | != PackageManager.PERMISSION_GRANTED) { 102 | 103 | ActivityCompat.requestPermissions(mActivity, 104 | new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 105 | REQUEST_CODE_PERMISSION); 106 | 107 | return false; 108 | } else { 109 | return true; 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/StaticLabelsGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import com.jjoe64.graphview.GraphView; 4 | import com.jjoe64.graphview.helper.StaticLabelsFormatter; 5 | import com.jjoe64.graphview.series.DataPoint; 6 | import com.jjoe64.graphview.series.LineGraphSeries; 7 | import com.jjoe64.graphview_demos.FullscreenActivity; 8 | import com.jjoe64.graphview_demos.R; 9 | 10 | /** 11 | * Created by jonas on 10.09.16. 12 | */ 13 | public class StaticLabelsGraph extends BaseExample { 14 | @Override 15 | public void onCreate(FullscreenActivity activity) { 16 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 17 | initGraph(graph); 18 | } 19 | 20 | @Override 21 | public void initGraph(GraphView graph) { 22 | LineGraphSeries series = new LineGraphSeries(new DataPoint[] { 23 | new DataPoint(0, 1), 24 | new DataPoint(1, 5), 25 | new DataPoint(2, 3), 26 | new DataPoint(3, 2), 27 | new DataPoint(4, 6) 28 | }); 29 | graph.addSeries(series); 30 | 31 | // use static labels for horizontal and vertical labels 32 | StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graph); 33 | staticLabelsFormatter.setHorizontalLabels(new String[] {"old", "middle", "new"}); 34 | staticLabelsFormatter.setVerticalLabels(new String[] {"low", "middle", "high"}); 35 | graph.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/StylingColors.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | import android.graphics.DashPathEffect; 5 | import android.graphics.Paint; 6 | 7 | import com.jjoe64.graphview.GraphView; 8 | import com.jjoe64.graphview.GridLabelRenderer; 9 | import com.jjoe64.graphview.series.DataPoint; 10 | import com.jjoe64.graphview.series.LineGraphSeries; 11 | import com.jjoe64.graphview_demos.FullscreenActivity; 12 | import com.jjoe64.graphview_demos.R; 13 | 14 | /** 15 | * Created by jonas on 10.09.16. 16 | */ 17 | public class StylingColors extends BaseExample { 18 | @Override 19 | public void onCreate(FullscreenActivity activity) { 20 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 21 | initGraph(graph); 22 | } 23 | 24 | @Override 25 | public void initGraph(GraphView graph) { 26 | DataPoint[] points = new DataPoint[30]; 27 | for (int i = 0; i < 30; i++) { 28 | points[i] = new DataPoint(i, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 29 | } 30 | LineGraphSeries series = new LineGraphSeries<>(points); 31 | 32 | points = new DataPoint[15]; 33 | for (int i = 0; i < 15; i++) { 34 | points[i] = new DataPoint(i*2, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 35 | } 36 | LineGraphSeries series2 = new LineGraphSeries<>(points); 37 | 38 | // styling grid/labels 39 | graph.getGridLabelRenderer().setGridColor(Color.RED); 40 | graph.getGridLabelRenderer().setHighlightZeroLines(false); 41 | graph.getGridLabelRenderer().setHorizontalLabelsColor(Color.GREEN); 42 | graph.getGridLabelRenderer().setVerticalLabelsColor(Color.RED); 43 | graph.getGridLabelRenderer().setVerticalLabelsVAlign(GridLabelRenderer.VerticalLabelsVAlign.ABOVE); 44 | graph.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.HORIZONTAL); 45 | graph.getGridLabelRenderer().reloadStyles(); 46 | 47 | 48 | // styling viewport 49 | graph.getViewport().setBackgroundColor(Color.argb(255, 222, 222, 222)); 50 | graph.getViewport().setDrawBorder(true); 51 | graph.getViewport().setBorderColor(Color.BLUE); 52 | 53 | // styling series 54 | series.setTitle("Random Curve 1"); 55 | series.setColor(Color.GREEN); 56 | series.setDrawDataPoints(true); 57 | series.setDataPointsRadius(10); 58 | series.setThickness(8); 59 | 60 | series2.setTitle("Random Curve 2"); 61 | series2.setDrawBackground(true); 62 | series2.setBackgroundColor(Color.argb(100, 255, 255, 0)); 63 | Paint paint = new Paint(); 64 | paint.setStyle(Paint.Style.STROKE); 65 | paint.setStrokeWidth(10); 66 | paint.setPathEffect(new DashPathEffect(new float[]{8, 5}, 0)); 67 | series2.setDrawAsPath(true); 68 | series2.setCustomPaint(paint); 69 | 70 | // styling legend 71 | graph.getLegendRenderer().setVisible(true); 72 | graph.getLegendRenderer().setTextSize(25); 73 | graph.getLegendRenderer().setBackgroundColor(Color.argb(150, 50, 0, 0)); 74 | graph.getLegendRenderer().setTextColor(Color.WHITE); 75 | //graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP); 76 | //graph.getLegendRenderer().setMargin(30); 77 | graph.getLegendRenderer().setFixedPosition(150, 0); 78 | 79 | graph.addSeries(series); 80 | graph.addSeries(series2); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/StylingLabels.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | import android.graphics.DashPathEffect; 5 | import android.graphics.Paint; 6 | 7 | import com.jjoe64.graphview.GraphView; 8 | import com.jjoe64.graphview.GridLabelRenderer; 9 | import com.jjoe64.graphview.series.DataPoint; 10 | import com.jjoe64.graphview.series.LineGraphSeries; 11 | import com.jjoe64.graphview_demos.FullscreenActivity; 12 | import com.jjoe64.graphview_demos.R; 13 | 14 | /** 15 | * Created by jonas on 10.09.16. 16 | */ 17 | public class StylingLabels extends BaseExample { 18 | @Override 19 | public void onCreate(FullscreenActivity activity) { 20 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 21 | initGraph(graph); 22 | } 23 | 24 | @Override 25 | public void initGraph(GraphView graph) { 26 | DataPoint[] points = new DataPoint[30]; 27 | for (int i = 0; i < 30; i++) { 28 | points[i] = new DataPoint(i, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 29 | } 30 | LineGraphSeries series = new LineGraphSeries<>(points); 31 | 32 | points = new DataPoint[15]; 33 | for (int i = 0; i < 15; i++) { 34 | points[i] = new DataPoint(i*2, Math.sin(i*0.5) * 20*(Math.random()*10+1)); 35 | } 36 | LineGraphSeries series2 = new LineGraphSeries<>(points); 37 | 38 | // styling grid/labels 39 | graph.getGridLabelRenderer().setHighlightZeroLines(false); 40 | graph.getGridLabelRenderer().setVerticalLabelsAlign(Paint.Align.LEFT); 41 | graph.getGridLabelRenderer().setLabelVerticalWidth(100); 42 | graph.getGridLabelRenderer().setTextSize(20); 43 | graph.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.HORIZONTAL); 44 | graph.getGridLabelRenderer().setHorizontalLabelsAngle(120); 45 | graph.getGridLabelRenderer().reloadStyles(); 46 | 47 | // styling series 48 | series.setTitle("Random Curve 1"); 49 | series.setColor(Color.GREEN); 50 | series.setDrawDataPoints(true); 51 | series.setDataPointsRadius(10); 52 | series.setThickness(8); 53 | 54 | graph.addSeries(series); 55 | graph.addSeries(series2); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/TapListenerGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | import android.widget.Toast; 5 | 6 | import com.jjoe64.graphview.GraphView; 7 | import com.jjoe64.graphview.LegendRenderer; 8 | import com.jjoe64.graphview.series.BarGraphSeries; 9 | import com.jjoe64.graphview.series.DataPoint; 10 | import com.jjoe64.graphview.series.DataPointInterface; 11 | import com.jjoe64.graphview.series.LineGraphSeries; 12 | import com.jjoe64.graphview.series.OnDataPointTapListener; 13 | import com.jjoe64.graphview.series.PointsGraphSeries; 14 | import com.jjoe64.graphview.series.Series; 15 | import com.jjoe64.graphview_demos.FullscreenActivity; 16 | import com.jjoe64.graphview_demos.R; 17 | 18 | /** 19 | * Created by jonas on 10.09.16. 20 | */ 21 | public class TapListenerGraph extends BaseExample { 22 | @Override 23 | public void onCreate(FullscreenActivity activity) { 24 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 25 | initGraph(graph); 26 | } 27 | 28 | @Override 29 | public void initGraph(final GraphView graph) { 30 | BarGraphSeries series = new BarGraphSeries<>(new DataPoint[] { 31 | new DataPoint(0, 1), 32 | new DataPoint(1, 3), 33 | new DataPoint(2, 1), 34 | new DataPoint(3, 0), 35 | new DataPoint(4, 3) 36 | }); 37 | series.setColor(Color.rgb(255, 120, 120)); 38 | series.setSpacing(50); 39 | graph.addSeries(series); 40 | 41 | LineGraphSeries series2 = new LineGraphSeries<>(new DataPoint[] { 42 | new DataPoint(0, -1), 43 | new DataPoint(1, 1), 44 | new DataPoint(2, 2), 45 | new DataPoint(3, 1), 46 | new DataPoint(4, 4) 47 | }); 48 | graph.addSeries(series2); 49 | 50 | PointsGraphSeries series3 = new PointsGraphSeries<>(new DataPoint[] { 51 | new DataPoint(0, 3), 52 | new DataPoint(1, 5), 53 | new DataPoint(2, 3), 54 | new DataPoint(3, 2), 55 | new DataPoint(4, 5) 56 | }); 57 | graph.addSeries(series3); 58 | series3.setSize(10); 59 | series3.setColor(Color.RED); 60 | 61 | // register tap on series callback 62 | series.setOnDataPointTapListener(new OnDataPointTapListener() { 63 | @Override 64 | public void onTap(Series series, DataPointInterface dataPoint) { 65 | Toast.makeText(graph.getContext(), "Series1: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show(); 66 | } 67 | }); 68 | 69 | series2.setOnDataPointTapListener(new OnDataPointTapListener() { 70 | @Override 71 | public void onTap(Series series, DataPointInterface dataPoint) { 72 | Toast.makeText(graph.getContext(), "Series2: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show(); 73 | } 74 | }); 75 | 76 | series3.setOnDataPointTapListener(new OnDataPointTapListener() { 77 | @Override 78 | public void onTap(Series series, DataPointInterface dataPoint) { 79 | Toast.makeText(graph.getContext(), "Series3: On Data Point clicked: "+dataPoint, Toast.LENGTH_SHORT).show(); 80 | } 81 | }); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/TitlesExample.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.series.DataPoint; 7 | import com.jjoe64.graphview.series.LineGraphSeries; 8 | import com.jjoe64.graphview_demos.FullscreenActivity; 9 | import com.jjoe64.graphview_demos.R; 10 | 11 | /** 12 | * Created by jonas on 10.09.16. 13 | */ 14 | public class TitlesExample extends BaseExample { 15 | @Override 16 | public void onCreate(FullscreenActivity activity) { 17 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 18 | initGraph(graph); 19 | } 20 | 21 | @Override 22 | public void initGraph(GraphView graph) { 23 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[] { 24 | new DataPoint(0, 1), 25 | new DataPoint(1, 5), 26 | new DataPoint(2, 3), 27 | new DataPoint(3, 2), 28 | new DataPoint(4, 6) 29 | }); 30 | graph.addSeries(series); 31 | 32 | // titles 33 | graph.setTitle("Chart Title"); 34 | graph.getGridLabelRenderer().setVerticalAxisTitle("Vertical Axis"); 35 | graph.getGridLabelRenderer().setHorizontalAxisTitle("Horizontal Axis"); 36 | 37 | // optional styles 38 | //graph.setTitleTextSize(40); 39 | //graph.setTitleColor(Color.BLUE); 40 | //graph.getGridLabelRenderer().setVerticalAxisTitleTextSize(40); 41 | graph.getGridLabelRenderer().setVerticalAxisTitleColor(Color.BLUE); 42 | //graph.getGridLabelRenderer().setHorizontalAxisTitleTextSize(40); 43 | graph.getGridLabelRenderer().setHorizontalAxisTitleColor(Color.BLUE); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/jjoe64/graphview_demos/examples/UniqueLegendLineGraph.java: -------------------------------------------------------------------------------- 1 | package com.jjoe64.graphview_demos.examples; 2 | 3 | import android.graphics.Color; 4 | 5 | import com.jjoe64.graphview.GraphView; 6 | import com.jjoe64.graphview.UniqueLegendRenderer; 7 | import com.jjoe64.graphview.series.DataPoint; 8 | import com.jjoe64.graphview.series.LineGraphSeries; 9 | import com.jjoe64.graphview_demos.FullscreenActivity; 10 | import com.jjoe64.graphview_demos.R; 11 | 12 | /** 13 | * Created by poseidon on 16.03.18. 14 | */ 15 | public class UniqueLegendLineGraph extends BaseExample { 16 | 17 | @Override 18 | public void onCreate(FullscreenActivity activity) { 19 | GraphView graph = (GraphView) activity.findViewById(R.id.graph); 20 | initGraph(graph); 21 | } 22 | 23 | @Override 24 | public void initGraph(GraphView graph) { 25 | { 26 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[]{ 27 | new DataPoint(0.0, 0.0), 28 | new DataPoint(2.0, -51.0), 29 | new DataPoint(2.0, -51.0) 30 | }); 31 | series.setTitle("Air"); 32 | series.setColor(Color.rgb(115,211,230)); 33 | graph.addSeries(series); 34 | } 35 | { 36 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[]{ 37 | new DataPoint(2.0, -51.0), 38 | new DataPoint(5.0, -110.0), 39 | new DataPoint(15.0, -110.0), 40 | new DataPoint(21.0, -51.0), 41 | new DataPoint(21.0, -51.0) 42 | }); 43 | series.setTitle("TMX12/50"); 44 | series.setColor(Color.rgb(115,170,230)); 45 | graph.addSeries(series); 46 | } 47 | { 48 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[]{ 49 | new DataPoint(21.0, -51.0), 50 | new DataPoint(22.0, -51.0), 51 | new DataPoint(22.3, -48.0), 52 | new DataPoint(23.0, -48.0), 53 | new DataPoint(23.3, -45.0), 54 | new DataPoint(24.0, -45.0), 55 | new DataPoint(24.3, -42.0), 56 | new DataPoint(25.0, -42.0), 57 | new DataPoint(25.3, -39.0), 58 | new DataPoint(26.0, -39.0), 59 | new DataPoint(26.3, -36.0), 60 | new DataPoint(27.0, -36.0), 61 | new DataPoint(27.3, -33.0), 62 | new DataPoint(28.0, -33.0), 63 | new DataPoint(28.3, -30.0), 64 | new DataPoint(29.0, -30.0), 65 | new DataPoint(29.3, -27.0), 66 | new DataPoint(31.0, -27.0), 67 | new DataPoint(31.3, -24.0), 68 | new DataPoint(34.0, -24.0), 69 | new DataPoint(34.3, -21.0) 70 | }); 71 | series.setTitle("Air"); 72 | series.setColor(Color.rgb(115,211,230)); 73 | graph.addSeries(series); 74 | } 75 | { 76 | LineGraphSeries series = new LineGraphSeries<>(new DataPoint[]{ 77 | new DataPoint(34.3, -21.0), 78 | new DataPoint(37.0, -21.0), 79 | new DataPoint(37.3, -18.0), 80 | new DataPoint(41.0, -18.0), 81 | new DataPoint(41.3, -15.0), 82 | new DataPoint(46.0, -15.0), 83 | new DataPoint(46.3, -12.0), 84 | new DataPoint(54.0, -12.0), 85 | new DataPoint(54.3, -9.0), 86 | new DataPoint(65.0, -9.0), 87 | new DataPoint(65.3, -6.0), 88 | new DataPoint(84.0, -6.0), 89 | new DataPoint(84.3, -3.0), 90 | new DataPoint(124.0, -3.0), 91 | new DataPoint(124.3, 0.0) 92 | }); 93 | series.setTitle("NTX50"); 94 | series.setColor(Color.rgb(115,230,115)); 95 | graph.addSeries(series); 96 | } 97 | 98 | graph.getViewport().setMinX(0); 99 | graph.getViewport().setMaxX(130); 100 | graph.getViewport().setXAxisBoundsManual(true); 101 | graph.getViewport().setMinY(-115); 102 | graph.getViewport().setMaxY(0); 103 | graph.getViewport().setYAxisBoundsManual(true); 104 | graph.getGridLabelRenderer().setHighlightZeroLines(false); 105 | graph.getGridLabelRenderer().setHorizontalAxisTitle("Minutes"); 106 | graph.getGridLabelRenderer().setVerticalAxisTitle("Meter"); 107 | graph.setLegendRenderer(new UniqueLegendRenderer(graph)); 108 | graph.getLegendRenderer().setVisible(true); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjoe64/GraphView-Demos/708bcdfa6ee421c6675faca5ae526a0aeca4881e/app/src/main/res/drawable-xxhdpi/fullscreen.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_public_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjoe64/GraphView-Demos/708bcdfa6ee421c6675faca5ae526a0aeca4881e/app/src/main/res/drawable-xxhdpi/ic_public_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjoe64/GraphView-Demos/708bcdfa6ee421c6675faca5ae526a0aeca4881e/app/src/main/res/drawable-xxhdpi/preview.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jjoe64/GraphView-Demos/708bcdfa6ee421c6675faca5ae526a0aeca4881e/app/src/main/res/drawable-xxhdpi/source.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_item_detail.xml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 16 | 17 | 25 | 26 | 32 | 33 | 34 | 35 | 36 | 37 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_item_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 33 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/res/layout/bar_graph_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 21 | 22 | 26 | 27 | 39 | 40 | 48 | 49 | 57 | 58 | 66 | 67 | 68 | 69 | 70 | 71 | 78 | 79 | 83 | 84 | 88 | 89 | 101 | 102 | 110 | 111 | 119 | 120 | 128 | 129 | 130 | 131 | 132 | 133 | 140 | 141 | 145 | 146 | 150 | 151 | 163 | 164 | 172 | 173 | 181 | 182 | 190 | 191 | 192 | 193 | 194 | 195 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fullscreen_example_add_series.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 16 | 17 |