From 0cc6da7cdd7c9b062798259d4293f48c96c3f3e6 Mon Sep 17 00:00:00 2001 From: Tanguy Herbron <tanguy.herbron@outlook.com> Date: Tue, 3 Apr 2018 19:29:36 +0200 Subject: [PATCH] Synchronize cursor for detail activity --- .../Activities/CurrencyDetailsActivity.java | 58 +++++++++++++++---- .../CurrencyData/CurrencyDataChart.java | 5 ++ .../res/drawable/linear_chart_gradient.xml | 10 ++++ .../res/layout/activity_currency_details.xml | 28 +++++++++ .../res/layout/content_currency_summary.xml | 3 +- 5 files changed, 92 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable/linear_chart_gradient.xml diff --git a/app/src/main/java/com/nauk/coinfolio/Activities/CurrencyDetailsActivity.java b/app/src/main/java/com/nauk/coinfolio/Activities/CurrencyDetailsActivity.java index 1bf561b..d176ff9 100644 --- a/app/src/main/java/com/nauk/coinfolio/Activities/CurrencyDetailsActivity.java +++ b/app/src/main/java/com/nauk/coinfolio/Activities/CurrencyDetailsActivity.java @@ -5,7 +5,9 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; @@ -41,8 +43,10 @@ import com.nauk.coinfolio.DataManagers.CurrencyData.Transaction; import com.nauk.coinfolio.DataManagers.DatabaseManager; import com.nauk.coinfolio.R; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.Locale; @@ -344,6 +348,7 @@ public class CurrencyDetailsActivity extends AppCompatActivity { private void drawPriceChart(int timeUnit, int amout) { final LineChart lineChart = findViewById(R.id.chartPriceView); + final BarChart barChart = findViewById(R.id.chartVolumeView); lineChart.setDrawGridBackground(false); lineChart.setDrawBorders(false); @@ -366,6 +371,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity { @Override public void onValueSelected(Entry e, Highlight h) { updateFluctuation(lineChart.getData().getDataSets().get(0).getEntryForIndex(0).getY(), e.getY()); + int index = lineChart.getData().getDataSets().get(0).getEntryIndex(e); + barChart.highlightValue(barChart.getData().getDataSets().get(0).getEntryForIndex(index).getX(), 0, index); + //((TextView) findViewById(R.id.timestampHightlight)).setText(getDate()); } @Override @@ -379,10 +387,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity { public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction() == MotionEvent.ACTION_UP) { - //lineChart.highlightValue(lineChart.getData().getDataSetCount()-1, 0); lineChart.highlightValue(null); updateFluctuation(lineChart.getData().getDataSets().get(0).getEntryForIndex(0).getY(), lineChart.getData().getDataSets().get(0).getEntryForIndex(lineChart.getData().getDataSets().get(0).getEntryCount() - 1).getY()); - + barChart.highlightValues(null); } return false; } @@ -394,6 +401,18 @@ public class CurrencyDetailsActivity extends AppCompatActivity { findViewById(R.id.progressLayoutChart).setVisibility(View.GONE); } + private String getDate(long timeStamp){ + + try{ + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + Date netDate = (new Date(timeStamp)); + return sdf.format(netDate); + } + catch(Exception ex){ + return "xx"; + } + } + private BarData generateVolumeChartSet(int timeUnit, int amount) { BarDataSet dataSet; @@ -437,13 +456,16 @@ public class CurrencyDetailsActivity extends AppCompatActivity { break; } - int offset = (int) Math.floor(dataChartList.size() / 50); + int offset = (int) Math.floor(dataChartList.size() / 200); - int loopNumber = 0; - for(int i = 0; i < dataChartList.size(); i += offset) + if(offset < 1) { - values.add(new BarEntry(loopNumber, (float) dataChartList.get(i).getVolumeTo())); - loopNumber++; + offset = 1; + } + + for(int i = 0, j = 0; i < dataChartList.size(); i += offset, j++) + { + values.add(new BarEntry(j, (float) dataChartList.get(i).getVolumeFrom())); } dataSet = new BarDataSet(values, "Volume"); @@ -527,8 +549,8 @@ public class CurrencyDetailsActivity extends AppCompatActivity { break; } - for(int i = 0; i < dataChartList.size(); i++) - { + /*for(int i = 0; i < dataChartList.size(); i++) + {*/ /*if(counter == offset) { calendar.setTimeInMillis(dataChartList.get(i).getTimestamp()*1000); @@ -650,7 +672,19 @@ public class CurrencyDetailsActivity extends AppCompatActivity { counter++; lineSet.addPoint("", (float) dataChartList.get(i).getOpen()); }*/ - values.add(new Entry(i, (float) dataChartList.get(i).getOpen())); + /*values.add(new Entry(i, (float) dataChartList.get(i).getOpen())); + }*/ + + int offsetRange = (int) Math.floor(dataChartList.size() / 200); + + if(offsetRange < 1) + { + offsetRange = 1; + } + + for(int i = 0, j = 0; i < dataChartList.size(); i += offsetRange, j++) + { + values.add(new Entry(j, (float) dataChartList.get(i).getOpen())); } dataSet = new LineDataSet(values, "History"); @@ -667,6 +701,10 @@ public class CurrencyDetailsActivity extends AppCompatActivity { dataSet.setDrawHorizontalHighlightIndicator(false); dataSet.setHighLightColor(currency.getChartColor()); + Drawable fillDrawable = ContextCompat.getDrawable(this, R.drawable.linear_chart_gradient); + fillDrawable.setColorFilter(getColorWithAlpha(currency.getChartColor(), 0.5f), PorterDuff.Mode.SRC_ATOP); + //dataSet.setFillDrawable(fillDrawable); + return new LineData(dataSet); } diff --git a/app/src/main/java/com/nauk/coinfolio/DataManagers/CurrencyData/CurrencyDataChart.java b/app/src/main/java/com/nauk/coinfolio/DataManagers/CurrencyData/CurrencyDataChart.java index 8fea2be..1f96930 100644 --- a/app/src/main/java/com/nauk/coinfolio/DataManagers/CurrencyData/CurrencyDataChart.java +++ b/app/src/main/java/com/nauk/coinfolio/DataManagers/CurrencyData/CurrencyDataChart.java @@ -43,6 +43,11 @@ public class CurrencyDataChart implements Parcelable { return volumeTo; } + public double getVolumeFrom() + { + return volumeFrom; + } + public long getTimestamp() { return timestamp; diff --git a/app/src/main/res/drawable/linear_chart_gradient.xml b/app/src/main/res/drawable/linear_chart_gradient.xml new file mode 100644 index 0000000..5222848 --- /dev/null +++ b/app/src/main/res/drawable/linear_chart_gradient.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <gradient + android:angle="90" + android:type="linear" + android:startColor="#00ff0000" + android:centerColor="#00ff0000" + android:endColor="#ffffffff" + android:centerY="1%" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_currency_details.xml b/app/src/main/res/layout/activity_currency_details.xml index 92892ff..3137af2 100644 --- a/app/src/main/res/layout/activity_currency_details.xml +++ b/app/src/main/res/layout/activity_currency_details.xml @@ -42,6 +42,34 @@ android:layout_height="250dp" android:layout_marginTop="15dp" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/timestampHightlight" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="invisible" + android:layout_weight="0.33"/> + + <TextView + android:id="@+id/priceHightlight" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="invisible" + android:layout_weight="0.33" /> + + <TextView + android:id="@+id/volumeHightlight" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="invisible" + android:layout_weight="0.33"/> + + </LinearLayout> + <com.github.mikephil.charting.charts.BarChart android:id="@+id/chartVolumeView" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/content_currency_summary.xml b/app/src/main/res/layout/content_currency_summary.xml index 81a1ad0..6d0a96d 100644 --- a/app/src/main/res/layout/content_currency_summary.xml +++ b/app/src/main/res/layout/content_currency_summary.xml @@ -81,8 +81,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" - android:orientation="vertical" - android:gravity="center_vertical"> + android:orientation="vertical"> <TextView android:id="@+id/marketCapTextView"