Details switch, first lines
This commit is contained in:
parent
da984671f8
commit
d6189731f8
@ -2,7 +2,6 @@ package com.nauk.coinfolio.Activities;
|
|||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
@ -19,26 +18,24 @@ import android.view.Gravity;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.ViewFlipper;
|
import android.widget.ViewFlipper;
|
||||||
|
|
||||||
import com.daimajia.swipe.SwipeLayout;
|
import com.daimajia.swipe.SwipeLayout;
|
||||||
import com.db.chart.animation.Animation;
|
|
||||||
import com.db.chart.model.LineSet;
|
import com.db.chart.model.LineSet;
|
||||||
import com.db.chart.renderer.AxisRenderer;
|
|
||||||
import com.db.chart.tooltip.Tooltip;
|
import com.db.chart.tooltip.Tooltip;
|
||||||
import com.db.chart.view.LineChartView;
|
import com.github.mikephil.charting.charts.LineChart;
|
||||||
|
import com.github.mikephil.charting.data.Entry;
|
||||||
|
import com.github.mikephil.charting.data.LineData;
|
||||||
|
import com.github.mikephil.charting.data.LineDataSet;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.Transaction;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.Transaction;
|
||||||
import com.nauk.coinfolio.DataManagers.DatabaseManager;
|
import com.nauk.coinfolio.DataManagers.DatabaseManager;
|
||||||
import com.nauk.coinfolio.R;
|
import com.nauk.coinfolio.R;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -296,7 +293,245 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawChart(int timeUnit, int amount)
|
private void drawChart(int timeUnit, int amout)
|
||||||
|
{
|
||||||
|
LineChart lineChart = findViewById(R.id.chartView);
|
||||||
|
|
||||||
|
lineChart.setDrawGridBackground(false);
|
||||||
|
lineChart.setDrawBorders(false);
|
||||||
|
lineChart.setDrawMarkers(false);
|
||||||
|
lineChart.setDoubleTapToZoomEnabled(true);
|
||||||
|
lineChart.setPinchZoom(true);
|
||||||
|
lineChart.setScaleEnabled(false);
|
||||||
|
lineChart.setDragEnabled(true);
|
||||||
|
lineChart.getDescription().setEnabled(false);
|
||||||
|
lineChart.getAxisLeft().setEnabled(false);
|
||||||
|
lineChart.getAxisRight().setEnabled(false);
|
||||||
|
lineChart.getLegend().setEnabled(false);
|
||||||
|
lineChart.getXAxis().setEnabled(false);
|
||||||
|
lineChart.setViewPortOffsets(0, 0, 0, 0);
|
||||||
|
|
||||||
|
lineChart.setData(generateChartSet(timeUnit, amout));
|
||||||
|
|
||||||
|
updateFluctuation(lineChart.getData());
|
||||||
|
|
||||||
|
findViewById(R.id.chartView).setVisibility(View.VISIBLE);
|
||||||
|
findViewById(R.id.progressLayoutChart).setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LineData generateChartSet(int timeUnit, int amount)
|
||||||
|
{
|
||||||
|
LineDataSet dataSet;
|
||||||
|
List<CurrencyDataChart> dataChartList = new ArrayList<>();
|
||||||
|
ArrayList<Entry> values = new ArrayList<>();
|
||||||
|
|
||||||
|
int counter = 0;
|
||||||
|
Calendar calendar = Calendar.getInstance(Locale.FRANCE);
|
||||||
|
String hour;
|
||||||
|
String minute;
|
||||||
|
String dayName = "";
|
||||||
|
String dayNumber;
|
||||||
|
String monthName = "";
|
||||||
|
String monthNumber;
|
||||||
|
int offset = 10;
|
||||||
|
int pointFormat = HOUR;
|
||||||
|
|
||||||
|
switch (timeUnit)
|
||||||
|
{
|
||||||
|
case HOUR:
|
||||||
|
dataChartList = currency.getHistoryMinutes().subList(currency.getHistoryMinutes().size()-(60*amount), currency.getHistoryMinutes().size());
|
||||||
|
offset = 10 * amount;
|
||||||
|
pointFormat = HOUR;
|
||||||
|
break;
|
||||||
|
case DAY:
|
||||||
|
if(amount == 1)
|
||||||
|
{
|
||||||
|
dataChartList = currency.getHistoryMinutes();
|
||||||
|
offset = 10 * 24;
|
||||||
|
pointFormat = HOUR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dataChartList = currency.getHistoryHours().subList(currency.getHistoryHours().size()-(24*amount), currency.getHistoryHours().size());
|
||||||
|
offset = 24;
|
||||||
|
pointFormat = DAY;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WEEK:
|
||||||
|
dataChartList = currency.getHistoryHours().subList(currency.getHistoryHours().size()-168, currency.getHistoryHours().size());
|
||||||
|
offset = 28;
|
||||||
|
pointFormat = DAY;
|
||||||
|
break;
|
||||||
|
case MONTH:
|
||||||
|
switch (amount)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
dataChartList = currency.getHistoryHours();
|
||||||
|
offset = 124;
|
||||||
|
pointFormat = MONTH;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
dataChartList = currency.getHistoryDays().subList(currency.getHistoryDays().size()-93, currency.getHistoryDays().size());
|
||||||
|
offset = 15;
|
||||||
|
pointFormat = MONTH;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
dataChartList = currency.getHistoryDays().subList(currency.getHistoryDays().size()-186, currency.getHistoryDays().size());
|
||||||
|
offset = 31;
|
||||||
|
pointFormat = MONTH;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case YEAR:
|
||||||
|
dataChartList = currency.getHistoryDays();
|
||||||
|
offset = 30;
|
||||||
|
pointFormat = YEAR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < dataChartList.size(); i++)
|
||||||
|
{
|
||||||
|
/*if(counter == offset)
|
||||||
|
{
|
||||||
|
calendar.setTimeInMillis(dataChartList.get(i).getTimestamp()*1000);
|
||||||
|
|
||||||
|
switch (pointFormat)
|
||||||
|
{
|
||||||
|
case HOUR:
|
||||||
|
hour = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
|
||||||
|
minute = String.valueOf(calendar.get(Calendar.MINUTE));
|
||||||
|
|
||||||
|
if(hour.length() < 2)
|
||||||
|
{
|
||||||
|
hour = "0" + hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(minute.length() < 2)
|
||||||
|
{
|
||||||
|
minute = "0" + minute;
|
||||||
|
}
|
||||||
|
|
||||||
|
lineSet.addPoint(hour + ":" + minute, (float) dataChartList.get(i).getOpen());
|
||||||
|
break;
|
||||||
|
case DAY:
|
||||||
|
int dayIndex = calendar.get(Calendar.DAY_OF_WEEK)+1;
|
||||||
|
|
||||||
|
switch (dayIndex)
|
||||||
|
{
|
||||||
|
case Calendar.MONDAY:
|
||||||
|
dayName = "Mon";
|
||||||
|
break;
|
||||||
|
case Calendar.TUESDAY:
|
||||||
|
dayName = "Tue";
|
||||||
|
break;
|
||||||
|
case Calendar.WEDNESDAY:
|
||||||
|
dayName = "Wed";
|
||||||
|
break;
|
||||||
|
case Calendar.THURSDAY:
|
||||||
|
dayName = "Thu";
|
||||||
|
break;
|
||||||
|
case Calendar.FRIDAY:
|
||||||
|
dayName = "Fri";
|
||||||
|
break;
|
||||||
|
case Calendar.SATURDAY:
|
||||||
|
dayName = "Sat";
|
||||||
|
break;
|
||||||
|
case Calendar.SUNDAY:
|
||||||
|
dayName = "Sun";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
lineSet.addPoint(dayName, (float) dataChartList.get(i).getOpen());
|
||||||
|
break;
|
||||||
|
case MONTH:
|
||||||
|
dayNumber = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)+1);
|
||||||
|
monthNumber = String.valueOf(calendar.get(Calendar.MONTH)+1);
|
||||||
|
|
||||||
|
if(dayNumber.length() < 2)
|
||||||
|
{
|
||||||
|
dayNumber = '0' + dayNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(monthNumber.length() < 2)
|
||||||
|
{
|
||||||
|
monthNumber = '0' + monthNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
lineSet.addPoint(dayNumber + "/" + monthNumber, (float) dataChartList.get(i).getOpen());
|
||||||
|
break;
|
||||||
|
case YEAR:
|
||||||
|
int mb = calendar.get(Calendar.MONTH);
|
||||||
|
|
||||||
|
switch (mb)
|
||||||
|
{
|
||||||
|
case Calendar.JANUARY:
|
||||||
|
monthName = "Jan";
|
||||||
|
break;
|
||||||
|
case Calendar.FEBRUARY:
|
||||||
|
monthName = "Feb";
|
||||||
|
break;
|
||||||
|
case Calendar.MARCH:
|
||||||
|
monthName = "Mar";
|
||||||
|
break;
|
||||||
|
case Calendar.APRIL:
|
||||||
|
monthName = "Apr";
|
||||||
|
break;
|
||||||
|
case Calendar.MAY:
|
||||||
|
monthName = "May";
|
||||||
|
break;
|
||||||
|
case Calendar.JUNE:
|
||||||
|
monthName = "Jun";
|
||||||
|
break;
|
||||||
|
case Calendar.JULY:
|
||||||
|
monthName = "Jul";
|
||||||
|
break;
|
||||||
|
case Calendar.AUGUST:
|
||||||
|
monthName = "Aug";
|
||||||
|
break;
|
||||||
|
case Calendar.SEPTEMBER:
|
||||||
|
monthName = "Sep";
|
||||||
|
break;
|
||||||
|
case Calendar.OCTOBER:
|
||||||
|
monthName = "Oct";
|
||||||
|
break;
|
||||||
|
case Calendar.NOVEMBER:
|
||||||
|
monthName = "Nov";
|
||||||
|
break;
|
||||||
|
case Calendar.DECEMBER:
|
||||||
|
monthName = "Dec";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
lineSet.addPoint(monthName, (float) dataChartList.get(i).getOpen());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
lineSet.addPoint("", (float) dataChartList.get(i).getOpen());
|
||||||
|
}*/
|
||||||
|
values.add(new Entry(i, (float) dataChartList.get(i).getOpen()));
|
||||||
|
}
|
||||||
|
|
||||||
|
dataSet = new LineDataSet(values, "History");
|
||||||
|
dataSet.setDrawIcons(false);
|
||||||
|
dataSet.setColor(currency.getChartColor());
|
||||||
|
dataSet.setLineWidth(1);
|
||||||
|
dataSet.setDrawFilled(true);
|
||||||
|
dataSet.setFillColor(getColorWithAlpha(currency.getChartColor(), 0.5f));
|
||||||
|
dataSet.setFormLineWidth(1);
|
||||||
|
dataSet.setFormSize(15);
|
||||||
|
dataSet.setDrawCircles(false);
|
||||||
|
dataSet.setDrawValues(false);
|
||||||
|
dataSet.setHighlightEnabled(false);
|
||||||
|
|
||||||
|
return new LineData(dataSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*private void drawChart(int timeUnit, int amount)
|
||||||
{
|
{
|
||||||
final LineChartView chartView = findViewById(R.id.chartView);
|
final LineChartView chartView = findViewById(R.id.chartView);
|
||||||
LineSet lineSet = generateChartSet(timeUnit, amount);
|
LineSet lineSet = generateChartSet(timeUnit, amount);
|
||||||
@ -338,7 +573,7 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
//chartView.show(new Animation().fromAlpha(0).withEndAction(launchAction));
|
//chartView.show(new Animation().fromAlpha(0).withEndAction(launchAction));
|
||||||
chartView.show(new Animation().fromAlpha(0));
|
chartView.show(new Animation().fromAlpha(0));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private void updateFluctuation(LineSet lineSet)
|
private void updateFluctuation(LineSet lineSet)
|
||||||
{
|
{
|
||||||
@ -365,7 +600,34 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
((TextView) findViewById(R.id.txtViewPercentage)).setText(percentageFluctuation + "%");
|
((TextView) findViewById(R.id.txtViewPercentage)).setText(percentageFluctuation + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
private LineSet generateChartSet(int timeUnit, int amount)
|
private void updateFluctuation(LineData lineData)
|
||||||
|
{
|
||||||
|
//float fluctuation = lineSet.getEntry(lineSet.size() - 1).getValue() - lineSet.getEntry(0).getValue();
|
||||||
|
float fluctuation = lineData.getDataSetByIndex(lineData.getDataSetCount() - 1).getEntryCount();
|
||||||
|
//float percentageFluctuation = (float) (fluctuation / lineSet.getEntry(0).getValue() * 100);
|
||||||
|
|
||||||
|
ArrayList<Entry> values = new ArrayList<Entry>(lineData.);
|
||||||
|
|
||||||
|
/*dayFluctuation = historyMinutes.get(historyMinutes.size() - 1).getOpen() - historyMinutes.get(0).getOpen();
|
||||||
|
|
||||||
|
dayFluctuationPercentage = (float) (dayFluctuation / historyMinutes.get(0).getOpen() * 100);*/
|
||||||
|
|
||||||
|
|
||||||
|
/*if(percentageFluctuation < 0)
|
||||||
|
{
|
||||||
|
((TextView) findViewById(R.id.txtViewPercentage)).setTextColor(getResources().getColor(R.color.red));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((TextView) findViewById(R.id.txtViewPercentage)).setTextColor(getResources().getColor(R.color.green));
|
||||||
|
}
|
||||||
|
|
||||||
|
((TextView) findViewById(R.id.txtViewPriceStart)).setText("$" + lineSet.getEntry(0).getValue());
|
||||||
|
((TextView) findViewById(R.id.txtViewPriceNow)).setText("$" + lineSet.getEntry(lineSet.size() - 1).getValue());
|
||||||
|
((TextView) findViewById(R.id.txtViewPercentage)).setText(percentageFluctuation + "%");*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/*private LineSet generateChartSet(int timeUnit, int amount)
|
||||||
{
|
{
|
||||||
List<CurrencyDataChart> dataChartList = new ArrayList<>();
|
List<CurrencyDataChart> dataChartList = new ArrayList<>();
|
||||||
LineSet lineSet = new LineSet();
|
LineSet lineSet = new LineSet();
|
||||||
@ -560,13 +822,13 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
lineSet.setSmooth(true);
|
lineSet.setSmooth(true);
|
||||||
lineSet.setThickness(3);
|
lineSet.setThickness(3);
|
||||||
lineSet.setFill(getColorWitchAlpha(currency.getChartColor(), 0.5f));
|
lineSet.setFill(getColorWithAlpha(currency.getChartColor(), 0.5f));
|
||||||
lineSet.setColor(currency.getChartColor());
|
lineSet.setColor(currency.getChartColor());
|
||||||
|
|
||||||
return lineSet;
|
return lineSet;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private int getColorWitchAlpha(int color, float ratio)
|
private int getColorWithAlpha(int color, float ratio)
|
||||||
{
|
{
|
||||||
int transColor;
|
int transColor;
|
||||||
int alpha = Math.round(Color.alpha(color) * ratio);
|
int alpha = Math.round(Color.alpha(color) * ratio);
|
||||||
|
@ -5,6 +5,7 @@ import android.content.Intent;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.PorterDuffColorFilter;
|
import android.graphics.PorterDuffColorFilter;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
@ -94,7 +95,6 @@ public class HomeLayoutGenerator {
|
|||||||
|
|
||||||
if(currency.getHistoryMinutes() != null)
|
if(currency.getHistoryMinutes() != null)
|
||||||
{
|
{
|
||||||
List<Double> borders = getAxisBorders(currency);
|
|
||||||
LineChart lineChart = view.findViewById(R.id.LineChartView);
|
LineChart lineChart = view.findViewById(R.id.LineChartView);
|
||||||
|
|
||||||
lineChart.setDrawGridBackground(false);
|
lineChart.setDrawGridBackground(false);
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<com.db.chart.view.LineChartView
|
<com.github.mikephil.charting.charts.LineChart
|
||||||
android:id="@+id/chartView"
|
android:id="@+id/chartView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="300dp"
|
android:layout_height="300dp"
|
||||||
|
Loading…
Reference in New Issue
Block a user