Hellocharts-android open-source chart Library (I) line chart, hellocharts

Source: Internet
Author: User

Hellocharts-android open-source chart Library (I) line chart, hellocharts
1. 2. source code MainActivity. java public class MainActivity extends AppCompatActivity {public enum ChartType {LINE_CHART, COLUMN_CHART, PIE_CHART, BUBBLE_CHART, charts, PREVIEW_COLUMN_CHART, OTHER} @ Override protected void onCreate (Bundle limit) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); if (savedInstanceState = null) {getSupportFragmentManager (). beginTransaction (). add (R. id. container, new PlaceholderFragment ()). commit () ;}} public static class PlaceholderFragment extends Fragment implements AdapterView. onItemClickListener {private ListView listView; private ChartSamplesAdapter adapter; public Preview () {}@ Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View rootView = inflater. inflate (R. layout. fragment_main, container, false); listView = (ListView) rootView. findViewById (android. r. id. list); adapter = new ChartSamplesAdapter (getActivity (), 0, generateSamplesDescriptions (); listView. setAdapter (adapter); listView. setOnItemClickListener (this); return rootView;} @ Override public void onItemClick (AdapterView Adapter, View view, int position, long id) {Intent intent; switch (position) {case 0: // Line Chart; intent = new Intent (getActivity (), LineChartActivity. class); startActivity (intent); break; case 1: // Column Chart; intent = new Intent (getActivity (), ColumnChartActivity. class); startActivity (intent); break; case 2: // Pie Chart; intent = new Intent (getActivity (), PieChartActivity. class); startActivity (intent); break; default: break;} private List GenerateSamplesDescriptions () {List List = new ArrayList (); List. add (new ChartSampleDescription ("Line Chart", "This is Line Chart", ChartType. LINE_CHART); list. add (new ChartSampleDescription ("Column Chart", "This is Column chart", ChartType. COLUMN_CHART); list. add (new ChartSampleDescription ("Pie Chart", "This is Pie Chart", ChartType. PIE_CHART); return list;} public static class ChartSamplesAdapter extends ArrayAdapter {Public ChartSamplesAdapter (Context context, int resource, List Objects) {super (context, resource, objects) ;}@ Override public View getView (int position, View convertView, ViewGroup parent) {ViewHolder holder; if (convertView = null) {convertView = View. inflate (getContext (), R. layout. list_item_sample, null); holder = new ViewHolder (); holder. text1 = (TextView) convertView. findViewById (R. id. text1); holder. text2 = (TextView) convertView. findViewById (R. id. tex T2); holder. chartLayout = (FrameLayout) convertView. findViewById (R. id. chart_layout); convertView. setTag (holder);} else {holder = (ViewHolder) convertView. getTag ();} ChartSampleDescription item = getItem (position); holder. chartLayout. setVisibility (View. VISIBLE); holder. chartLayout. removeAllViews (); AbstractChartView chart; switch (item. chartType) {case LINE_CHART: chart = new LineChartView (getC Ontext (); holder. chartLayout. addView (chart); break; case COLUMN_CHART: chart = new ColumnChartView (getContext (); holder. chartLayout. addView (chart); break; case PIE_CHART: chart = new PieChartView (getContext (); holder. chartLayout. addView (chart); break; case BUBBLE_CHART: chart = new BubbleChartView (getContext (); holder. chartLayout. addView (chart); break; default: chart = null; holder. chartLayout. SetVisibility (View. GONE); break;} if (null! = Chart) {chart. setInteractive (false); // Disable touch handling for chart on the ListView .} holder. text1.setText (item. text1); holder. text2.setText (item. text2); return convertView;} private class ViewHolder {TextView text1; TextView text2; invalid chartLayout ;}} public static class ChartSampleDescription {String text1; String text2; ChartType chartType; public ChartSampleDescription (Strin G text1, String text2, ChartType chartType) {this. text1 = text1; this. text2 = text2; this. chartType = chartType ;}} LineChartActivity. java public class LineChartActivity extends AppCompatActivity {@ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_line_chart); if (savedInstanceState = null) {getSupportFragmentM Anager (). beginTransaction (). add (R. id. container, new PlaceholderFragment ()). commit () ;}/ *** A fragment containing a line chart. */public static class PlaceholderFragment extends Fragment {private LineChartView chart; private LineChartData data; private int numberOfLines = 1; private int maxNumberOfLines = 4; private int numberOfPoints = 12; float [] [] randomNumbersTab = new float [maxNumberOfLi Nes] [numberOfPoints]; private boolean hasAxes = true; private boolean hasAxesNames = true; private boolean hasLines = true; private boolean hasPoints = true; private ValueShape shape = ValueShape. CIRCLE; private boolean isFilled = false; private boolean hasLabels = false; private boolean isCubic = false; private boolean hasLabelForSelected = false; private boolean pointsHaveDifferentColor; public PlaceholderFragment () {}@ Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {setHasOptionsMenu (true); View rootView = inflater. inflate (R. layout. fragment_line_chart, container, false); chart = (LineChartView) rootView. findViewById (R. id. chart); chart. setOnValueTouchListener (new ValueTouchListener (); // generate some random values. GenerateValues (); generateData (); // Disable View recalculation. For more information, see the togglecubic () method. Chart. setViewportCalculationEnabled (false); resetViewport (); return rootView;} // private void generateValues () {for (int I = 0; I <maxNumberOfLines; ++ I) {for (int j = 0; j <numberOfPoints; ++ j) {// randomNumbersTab [I] [j] = (float) Math. random () * 100f; randomNumbersTab [I] [j] = 5 ;}} private void resetViewport () {// Reset viewport height range to (0,100) final Viewport v = new Viewport (chart. getMaximumViewport (); v. bottom = 0; v. top = 100; v. left = 0; v. right = numberOfPoints-1; chart. setMaximumViewport (v); chart. setCurrentViewport (v);} // generate private void generateData () {List Lines = new ArrayList (); For (int I = 0; I <numberOfLines; ++ I) {List Values = new ArrayList (); For (int j = 0; j <numberOfPoints; ++ j) {values. add (new PointValue (j, randomNumbersTab [I] [j]);} Line line = new Line (values); line. setColor (ChartUtils. COLORS [I]); line. setShape (shape); line. setCubic (isCubic); line. setFilled (isFilled); line. setHasLabels (hasLabels); line. setHasLabelsOnlyForSelected (hasLabelForSelected); line. setHasLines (hasLines); line. setHasPoints (hasPoints); if (pointsHaveDifferentColor) {line. setPointColor (ChartUtils. COLORS [(I + 1) % ChartUtils. COLORS. length]);} lines. add (line);} data = new LineChartData (lines); if (hasAxes) {Axis axisX = new Axis (); Axis axisY = new Axis (). setHasLines (true); if (hasAxesNames) {axisX. setName ("Axis X"); axisY. setName ("Axis Y");} data. setAxisXBottom (axisX); data. setAxisYLeft (axisY);} else {data. setAxisXBottom (null); data. setAxisYLeft (null);} data. setBaseValue (Float. NEGATIVE_INFINITY); chart. setLineChartData (data);} private class ValueTouchListener implements LineChartOnValueSelectListener {@ Override public void onValueSelected (int lineIndex, int pointIndex, PointValue value) {Toast. makeText (getActivity (), "Selected:" + value, Toast. LENGTH_SHORT ). show () ;}@ Override public void onValueDeselected () {// TODO Auto-generated method stub }}}3.xml activity_main.xml Fragment_main.xml Activity_line_chart.xml Fragment_line_chart.xml

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.