MarketCap implementation & minor fixes

This commit is contained in:
Tanguy Herbron 2018-03-04 18:24:46 +01:00
parent b7c2e57824
commit a306f48c02
18 changed files with 326 additions and 95 deletions

View File

@ -40,7 +40,9 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-jackson:2.2.0' implementation 'com.squareup.retrofit2:converter-jackson:2.2.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
implementation 'org.apache.commons:commons-lang3:3.6' implementation 'org.apache.commons:commons-lang3:3.6'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
implementation 'com.mattprecious.swirl:swirl:1.1.0' implementation 'com.mattprecious.swirl:swirl:1.1.0'
//implementation 'com.github.lecho:hellocharts-library:1.5.8@aar'
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

View File

@ -102,7 +102,7 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
Intent intent = getIntent(); Intent intent = getIntent();
//symbol = intent.getStringExtra("symbol"); //symbol = intent.getStringExtra("symbol");
currency = (Currency) intent.getParcelableExtra("currency"); currency = intent.getParcelableExtra("currency");
databaseManager = new DatabaseManager(this); databaseManager = new DatabaseManager(this);
@ -131,7 +131,7 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
setTitle(currency.getName()); setTitle(currency.getName());
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation_details); BottomNavigationView navigation = findViewById(R.id.navigation_details);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
hasBeenModified = false; hasBeenModified = false;
@ -297,7 +297,7 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
chartView.reset(); chartView.reset();
chartView.setAxisBorderValues((float) valMin, (float) valMax); chartView.setAxisBorderValues(valMin, valMax);
chartView.setYLabels(AxisRenderer.LabelPosition.NONE); chartView.setYLabels(AxisRenderer.LabelPosition.NONE);
chartView.setYAxis(false); chartView.setYAxis(false);
chartView.setXAxis(false); chartView.setXAxis(false);

View File

@ -4,6 +4,8 @@ import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -14,11 +16,14 @@ import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton; import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v4.widget.NestedScrollView;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette; import android.support.v7.graphics.Palette;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.Menu; import android.view.Menu;
@ -27,18 +32,24 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.ViewFlipper; import android.widget.ViewFlipper;
import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.luseen.spacenavigation.SpaceItem; import com.luseen.spacenavigation.SpaceItem;
import com.luseen.spacenavigation.SpaceNavigationView; import com.luseen.spacenavigation.SpaceNavigationView;
import com.luseen.spacenavigation.SpaceOnClickListener; import com.luseen.spacenavigation.SpaceOnClickListener;
import com.nauk.coinfolio.DataManagers.BalanceManager; import com.nauk.coinfolio.DataManagers.BalanceManager;
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency; import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
import com.nauk.coinfolio.DataManagers.MarketCapManager;
import com.nauk.coinfolio.DataManagers.PreferencesManager; import com.nauk.coinfolio.DataManagers.PreferencesManager;
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator; import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
@ -47,6 +58,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
//Use WilliamChart for charts https://github.com/diogobernardino/WilliamChart //Use WilliamChart for charts https://github.com/diogobernardino/WilliamChart
@ -64,9 +76,11 @@ public class HomeActivity extends AppCompatActivity {
private PreferencesManager preferencesManager; private PreferencesManager preferencesManager;
private HomeLayoutGenerator layoutGenerator; private HomeLayoutGenerator layoutGenerator;
private BalanceManager balanceManager; private BalanceManager balanceManager;
private MarketCapManager marketCapManager;
private int coinCounter; private int coinCounter;
private int iconCounter; private int iconCounter;
private int marketCapCounter;
private long lastTimestamp; private long lastTimestamp;
private boolean detailsChecker; private boolean detailsChecker;
private boolean isDetailed; private boolean isDetailed;
@ -117,10 +131,11 @@ public class HomeActivity extends AppCompatActivity {
generateSplash(); generateSplash();
//Objects initializatoin //Objects initialization
preferencesManager = new PreferencesManager(this); preferencesManager = new PreferencesManager(this);
layoutGenerator = new HomeLayoutGenerator(this); layoutGenerator = new HomeLayoutGenerator(this);
balanceManager = new BalanceManager(this); balanceManager = new BalanceManager(this);
marketCapManager = new MarketCapManager(this);
handler = new Handler(); handler = new Handler();
updateRunnable = new Runnable() { updateRunnable = new Runnable() {
@Override @Override
@ -190,7 +205,21 @@ public class HomeActivity extends AppCompatActivity {
new SwipeRefreshLayout.OnRefreshListener() { new SwipeRefreshLayout.OnRefreshListener() {
@Override @Override
public void onRefresh() { public void onRefresh() {
switch (viewFlipper.getDisplayedChild())
{
case 0:
Log.d(getResources().getString(R.string.debug), "Watchlist");
refreshLayout.setRefreshing(false);
break;
case 1:
updateAll(false); updateAll(false);
break;
case 2:
Log.d(getResources().getString(R.string.debug), "Market cap");
refreshLayout.setRefreshing(false);
break;
}
} }
} }
); );
@ -221,7 +250,7 @@ public class HomeActivity extends AppCompatActivity {
private void setupNavBar(Bundle savedInstanceState) private void setupNavBar(Bundle savedInstanceState)
{ {
final SpaceNavigationView spaceNavigationView = (SpaceNavigationView) findViewById(R.id.space); final SpaceNavigationView spaceNavigationView = findViewById(R.id.space);
spaceNavigationView.initWithSaveInstanceState(savedInstanceState); spaceNavigationView.initWithSaveInstanceState(savedInstanceState);
spaceNavigationView.addSpaceItem(new SpaceItem("Charts", R.drawable.ic_show_chart_black_24dp)); spaceNavigationView.addSpaceItem(new SpaceItem("Charts", R.drawable.ic_show_chart_black_24dp));
spaceNavigationView.addSpaceItem(new SpaceItem("Market Cap.", R.drawable.ic_pie_chart_black_24dp)); spaceNavigationView.addSpaceItem(new SpaceItem("Market Cap.", R.drawable.ic_pie_chart_black_24dp));
@ -240,7 +269,7 @@ public class HomeActivity extends AppCompatActivity {
nav.changeCurrentItem(-1); nav.changeCurrentItem(-1);
((NestedScrollView) findViewById(R.id.nestedScrollViewLayout)).setNestedScrollingEnabled(true); findViewById(R.id.nestedScrollViewLayout).setNestedScrollingEnabled(true);
((AppBarLayout) findViewById(R.id.app_bar)).setExpanded(true, true); ((AppBarLayout) findViewById(R.id.app_bar)).setExpanded(true, true);
findViewById(R.id.switch_button).setVisibility(View.VISIBLE); findViewById(R.id.switch_button).setVisibility(View.VISIBLE);
@ -255,8 +284,8 @@ public class HomeActivity extends AppCompatActivity {
//0 : Unknown //0 : Unknown
//1 : Market cap //1 : Market cap
((NestedScrollView) findViewById(R.id.nestedScrollViewLayout)).setNestedScrollingEnabled(false);
((AppBarLayout) findViewById(R.id.app_bar)).setExpanded(false, true); ((AppBarLayout) findViewById(R.id.app_bar)).setExpanded(false, true);
findViewById(R.id.nestedScrollViewLayout).setNestedScrollingEnabled(false);
findViewById(R.id.switch_button).setVisibility(View.GONE); findViewById(R.id.switch_button).setVisibility(View.GONE);
@ -359,8 +388,6 @@ public class HomeActivity extends AppCompatActivity {
updateViewButtonIcon(); updateViewButtonIcon();
} }
private void updateAll(boolean mustUpdate) private void updateAll(boolean mustUpdate)
{ {
if(System.currentTimeMillis()/1000 - lastTimestamp > 60 || mustUpdate) if(System.currentTimeMillis()/1000 - lastTimestamp > 60 || mustUpdate)
@ -470,6 +497,77 @@ public class HomeActivity extends AppCompatActivity {
}); });
} }
private void updateMarketCap()
{
marketCapCounter = 0;
marketCapManager.updateTopCurrencies(new MarketCapManager.VolleyCallBack() {
@Override
public void onSuccess()
{
countCompletedMarketCapRequest();
}
});
marketCapManager.updateMarketCap(new MarketCapManager.VolleyCallBack() {
@Override
public void onSuccess() {
countCompletedMarketCapRequest();
}
});
}
private void countCompletedMarketCapRequest()
{
marketCapCounter++;
if(marketCapCounter == 2)
{
findViewById(R.id.progressBarMarketCap).setVisibility(View.GONE);
List<PieEntry> entries = new ArrayList<>();
PieChart pieChart = findViewById(R.id.marketCapPieChart);
float otherCurrenciesDominance = 0;
for(Iterator i = marketCapManager.getDominance().keySet().iterator(); i.hasNext(); )
{
String key = (String) i.next();
Log.d(getResources().getString(R.string.debug), "Sym : " + key + " " + marketCapManager.getDominance().get(key));
entries.add(new PieEntry(marketCapManager.getDominance().get(key), key));
otherCurrenciesDominance += marketCapManager.getDominance().get(key);
}
entries.add(new PieEntry(100-otherCurrenciesDominance, "Others"));
PieDataSet set = new PieDataSet(entries, "Market Cap Dominance");
PieData data = new PieData(set);
pieChart.setData(data);
pieChart.setDrawSlicesUnderHole(true);
pieChart.setUsePercentValues(true);
pieChart.setTouchEnabled(false);
pieChart.getDescription().setEnabled(false);
pieChart.setCenterText(generateCenterSpannableText());
pieChart.setVisibility(View.VISIBLE);
pieChart.invalidate(); // refresh
}
}
private SpannableString generateCenterSpannableText() {
SpannableString s = new SpannableString("MPAndroidChart\ndeveloped by Philipp Jahoda");
s.setSpan(new RelativeSizeSpan(1.7f), 0, 14, 0);
s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0);
s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
s.setSpan(new RelativeSizeSpan(.8f), 14, s.length() - 15, 0);
s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
return s;
}
private void countCoins(boolean isCoin, boolean isDetails) private void countCoins(boolean isCoin, boolean isDetails)
{ {
if(isCoin) if(isCoin)
@ -486,21 +584,8 @@ public class HomeActivity extends AppCompatActivity {
{ {
if(coinCounter == balanceManager.getTotalBalance().size() && detailsChecker) if(coinCounter == balanceManager.getTotalBalance().size() && detailsChecker)
{ {
for (int i = 0; i < balanceManager.getTotalBalance().size(); i++) IconDownloader iconDownloader = new IconDownloader();
{ iconDownloader.execute();
final Currency localCurrency = balanceManager.getTotalBalance().get(i);
if(balanceManager.getIconUrl(localCurrency.getSymbol()) != null)
{
getBitmapFromURL(balanceManager.getIconUrl(localCurrency.getSymbol()), new IconCallBack() {
@Override
public void onSuccess(Bitmap bitmapIcon) {
localCurrency.setIcon(bitmapIcon);
countIcons();
}
});
}
}
} }
else else
{ {
@ -559,6 +644,49 @@ public class HomeActivity extends AppCompatActivity {
loadingDialog.show(); loadingDialog.show();
} }
private class IconDownloader extends AsyncTask<Void, Integer, Void>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... params)
{
for (int i = 0; i < balanceManager.getTotalBalance().size(); i++)
{
final Currency localCurrency = balanceManager.getTotalBalance().get(i);
if(balanceManager.getIconUrl(localCurrency.getSymbol()) != null)
{
getBitmapFromURL(balanceManager.getIconUrl(localCurrency.getSymbol()), new IconCallBack() {
@Override
public void onSuccess(Bitmap bitmapIcon) {
localCurrency.setIcon(bitmapIcon);
countIcons();
}
});
}
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
}
}
private class UiHeavyLoadCalculator extends AsyncTask<Void, Integer, Void> private class UiHeavyLoadCalculator extends AsyncTask<Void, Integer, Void>
{ {
@ -765,7 +893,9 @@ public class HomeActivity extends AppCompatActivity {
} }
}); });
balanceManager.updateMarketCap(new BalanceManager.VolleyCallBack() { updateMarketCap();
/*marketCapManager.updateTopCurrencies(new BalanceManager.VolleyCallBack() {
@Override @Override
public void onSuccess() { public void onSuccess() {
@ -774,7 +904,7 @@ public class HomeActivity extends AppCompatActivity {
@Override @Override
public void onError(String error) { public void onError(String error) {
}}); }});*/
return null; return null;
} }

View File

@ -2,8 +2,6 @@ package com.nauk.coinfolio.Activities;
import android.Manifest; import android.Manifest;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.app.KeyguardManager; import android.app.KeyguardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -21,7 +19,6 @@ import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference; import android.preference.RingtonePreference;
import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyPermanentlyInvalidatedException; import android.security.keystore.KeyPermanentlyInvalidatedException;

View File

@ -1,37 +1,26 @@
package com.nauk.coinfolio.DataManagers; package com.nauk.coinfolio.DataManagers;
import android.os.StrictMode; import android.os.StrictMode;
import android.util.Base64;
import android.util.Log; import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Request; import com.android.volley.Request;
import com.android.volley.RequestQueue; import com.android.volley.RequestQueue;
import com.android.volley.Response; import com.android.volley.Response;
import com.android.volley.VolleyError; import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley; import com.android.volley.toolbox.Volley;
import com.binance.api.client.BinanceApiClientFactory;
import com.binance.api.client.BinanceApiRestClient;
import com.binance.api.client.domain.account.Account;
import com.binance.api.client.domain.account.AssetBalance;
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency; import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
import com.nauk.coinfolio.DataManagers.ExchangeManager.BinanceManager; import com.nauk.coinfolio.DataManagers.ExchangeManager.BinanceManager;
import com.nauk.coinfolio.DataManagers.ExchangeManager.HitBtcManager; import com.nauk.coinfolio.DataManagers.ExchangeManager.HitBtcManager;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
@ -296,27 +285,6 @@ public class BalanceManager {
} }
} }
public void updateMarketCap(final VolleyCallBack callBack)
{
StringRequest strRequest = new StringRequest(Request.Method.GET, detailUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.length() > 0) {
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(strRequest);
}
public void updateDetails(final IconCallBack callBack) public void updateDetails(final IconCallBack callBack)
{ {
StringRequest strRequest = new StringRequest(Request.Method.GET, detailUrl, StringRequest strRequest = new StringRequest(Request.Method.GET, detailUrl,

View File

@ -1,8 +1,5 @@
package com.nauk.coinfolio.DataManagers.ExchangeManager; package com.nauk.coinfolio.DataManagers.ExchangeManager;
import android.util.Log;
import com.android.volley.RequestQueue;
import com.binance.api.client.BinanceApiClientFactory; import com.binance.api.client.BinanceApiClientFactory;
import com.binance.api.client.BinanceApiRestClient; import com.binance.api.client.BinanceApiRestClient;
import com.binance.api.client.domain.account.Account; import com.binance.api.client.domain.account.Account;

View File

@ -0,0 +1,139 @@
package com.nauk.coinfolio.DataManagers;
import android.util.Log;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.regex.Pattern;
/**
* Created by Guitoune on 02/03/2018.
*/
public class MarketCapManager {
private static final String topCurrenciesUrl = "https://api.coinmarketcap.com/v1/ticker/?limit=9";
private static final String marketCapUrl = "https://api.coinmarketcap.com/v1/global/";
private android.content.Context context;
private RequestQueue requestQueue;
private String topRequestResult[];
private long marketCap;
public MarketCapManager(android.content.Context context)
{
this.context = context;
requestQueue = Volley.newRequestQueue(context);
}
public void updateTopCurrencies(final VolleyCallBack callBack)
{
StringRequest strRequest = new StringRequest(Request.Method.GET, topCurrenciesUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.length() > 0) {
processTopCurrencies(response);
}
callBack.onSuccess();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(strRequest);
}
public void updateMarketCap(final VolleyCallBack callBack)
{
StringRequest strRequest = new StringRequest(Request.Method.GET, marketCapUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.length() > 0) {
processMarketCapData(response);
}
callBack.onSuccess();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(strRequest);
}
private void processMarketCapData(String response)
{
try {
JSONObject jsonObject = new JSONObject(response);
marketCap = new BigDecimal(jsonObject.getString("total_market_cap_usd")).longValue();
} catch (JSONException e) {
e.printStackTrace();
}
}
public HashMap<String, Float> getDominance()
{
HashMap<String, Float> dominance = new HashMap<>();
for(int i = 0; i < topRequestResult.length; i++)
{
try {
JSONObject jsonObject = new JSONObject(topRequestResult[i]);
dominance.put(jsonObject.getString("symbol"), (Float.parseFloat(jsonObject.getString("market_cap_usd")) / marketCap)*100);
} catch (JSONException e) {
e.printStackTrace();
}
}
return dominance;
}
private void processTopCurrencies(String response)
{
response = response.substring(response.indexOf('[')+1, response.lastIndexOf(']'));
topRequestResult = response.split(Pattern.quote("},"));
for(int i = 0; i < topRequestResult.length; i++)
{
try {
topRequestResult[i] += "}";
JSONObject jsonObject = new JSONObject(topRequestResult[i]);
Log.d("coinfolio", "Symbol : " + jsonObject.getString("symbol") + " " + jsonObject.getString("rank"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public interface VolleyCallBack
{
void onSuccess();
}
}

View File

@ -1,30 +1,15 @@
package com.nauk.coinfolio.FingerprintToolkit; package com.nauk.coinfolio.FingerprintToolkit;
import android.Manifest;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment; import android.app.DialogFragment;
import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.res.ResourcesCompat;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.Button; import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.mattprecious.swirl.SwirlView; import com.mattprecious.swirl.SwirlView;
import com.nauk.coinfolio.Activities.SettingsActivity;
import com.nauk.coinfolio.R; import com.nauk.coinfolio.R;
/** /**
@ -49,7 +34,7 @@ public class FingerprintDialogFragment extends DialogFragment{
//getDialog().getWindow().setLayout(getResources().getDimensionPixelSize(R.dimen.fingerprint_dialog_width), getResources().getDimensionPixelSize(R.dimen.fingerprint_dialog_height)); //getDialog().getWindow().setLayout(getResources().getDimensionPixelSize(R.dimen.fingerprint_dialog_width), getResources().getDimensionPixelSize(R.dimen.fingerprint_dialog_height));
((Button) view.findViewById(R.id.cancelButton)).setOnClickListener(new View.OnClickListener() { view.findViewById(R.id.cancelButton).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
dismiss(); dismiss();

View File

@ -7,8 +7,6 @@ import android.hardware.fingerprint.FingerprintManager;
import android.os.CancellationSignal; import android.os.CancellationSignal;
import android.os.Handler; import android.os.Handler;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.app.DialogFragment;
import android.widget.Toast;
/** /**
* Created by Guitoune on 28/02/2018. * Created by Guitoune on 28/02/2018.

View File

@ -36,8 +36,8 @@ public class CurrencyAdapter extends ArrayAdapter<Currency> {
if (convertView == null) { if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_currency_row, parent, false); convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom_currency_row, parent, false);
} }
TextView currencyName = (TextView) convertView.findViewById(R.id.currencyName); TextView currencyName = convertView.findViewById(R.id.currencyName);
TextView currencySymbol = (TextView) convertView.findViewById(R.id.currencySymbol); TextView currencySymbol = convertView.findViewById(R.id.currencySymbol);
if (currencyName != null) if (currencyName != null)
currencyName.setText(currency.getName()); currencyName.setText(currency.getName());
if(currencySymbol != null) if(currencySymbol != null)

View File

@ -90,7 +90,7 @@ public class HomeLayoutGenerator {
if(currency.getHistoryMinutes() != null) if(currency.getHistoryMinutes() != null)
{ {
List<Double> borders = getAxisBorders(currency); List<Double> borders = getAxisBorders(currency);
LineChartView chartView = (LineChartView) view.findViewById(R.id.LineChartView); LineChartView chartView = view.findViewById(R.id.LineChartView);
chartView.setAxisBorderValues(borders.get(0).floatValue(), borders.get(1).floatValue()) chartView.setAxisBorderValues(borders.get(0).floatValue(), borders.get(1).floatValue())
.setYLabels(AxisRenderer.LabelPosition.NONE) .setYLabels(AxisRenderer.LabelPosition.NONE)
@ -141,7 +141,7 @@ public class HomeLayoutGenerator {
if(currency.getHistoryMinutes() != null) if(currency.getHistoryMinutes() != null)
{ {
((LineChartView) view.findViewById(R.id.LineChartView)).setVisibility(View.VISIBLE); view.findViewById(R.id.LineChartView).setVisibility(View.VISIBLE);
((LineChartView) view.findViewById(R.id.LineChartView)).show(); ((LineChartView) view.findViewById(R.id.LineChartView)).show();
view.findViewById(R.id.errorTextView).setVisibility(View.GONE); view.findViewById(R.id.errorTextView).setVisibility(View.GONE);
} }

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
</vector>

View File

@ -79,7 +79,8 @@
android:id="@+id/layoutProgressMarketCap" android:id="@+id/layoutProgressMarketCap"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="visible"> android:visibility="visible"
android:orientation="vertical">
<ProgressBar <ProgressBar
android:id="@+id/progressBarMarketCap" android:id="@+id/progressBarMarketCap"
@ -88,6 +89,11 @@
style="?android:attr/progressBarStyleLarge" style="?android:attr/progressBarStyleLarge"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@drawable/circular_progress_bar" /> android:background="@drawable/circular_progress_bar" />
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/marketCapPieChart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
</LinearLayout> </LinearLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -4,7 +4,7 @@
<item <item
android:id="@+id/navigation_home" android:id="@+id/navigation_home"
android:icon="@drawable/ic_show_chart_black_24dp" android:icon="@drawable/ic_show_chart_black_24dp"
android:title="@string/title_charts" /> android:title="@string/title_watchlist" />
<item <item
android:id="@+id/navigation_dashboard" android:id="@+id/navigation_dashboard"

View File

@ -3,8 +3,8 @@
<item <item
android:id="@+id/navigation_something" android:id="@+id/navigation_something"
android:icon="@drawable/ic_show_chart_black_24dp" android:icon="@drawable/ic_remove_red_eye_black_24dp"
android:title="@string/title_charts" /> android:title="@string/title_watchlist" />
<item <item
android:id="@+id/navigation_view_list" android:id="@+id/navigation_view_list"

View File

@ -121,7 +121,7 @@
<string name="activity_add_amount">Amount</string> <string name="activity_add_amount">Amount</string>
<string name="activity_purchased_price">Purchased price</string> <string name="activity_purchased_price">Purchased price</string>
<string name="title_activity_currency_details">CurrencyDetailsActivity</string> <string name="title_activity_currency_details">CurrencyDetailsActivity</string>
<string name="title_charts">Charts</string> <string name="title_watchlist">Watchlist</string>
<string name="title_infos">Infos</string> <string name="title_infos">Infos</string>
<string name="title_transactions">Transactions</string> <string name="title_transactions">Transactions</string>
<string name="title_home">Home</string> <string name="title_home">Home</string>

View File

@ -19,6 +19,7 @@ allprojects {
repositories { repositories {
google() google()
jcenter() jcenter()
maven { url "https://jitpack.io" }
} }
} }