diff --git a/app/src/main/java/com/herbron/moodl/Activities/HomeActivityFragments/Summary.java b/app/src/main/java/com/herbron/moodl/Activities/HomeActivityFragments/Summary.java index fce352b..45ae4a0 100644 --- a/app/src/main/java/com/herbron/moodl/Activities/HomeActivityFragments/Summary.java +++ b/app/src/main/java/com/herbron/moodl/Activities/HomeActivityFragments/Summary.java @@ -3,6 +3,7 @@ package com.herbron.moodl.Activities.HomeActivityFragments; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.app.Dialog; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -61,6 +62,7 @@ import java.util.Random; import static com.herbron.moodl.MoodlBox.getColor; import static com.herbron.moodl.MoodlBox.getDrawable; +import static com.herbron.moodl.MoodlBox.getIconDominantColor; import static com.herbron.moodl.MoodlBox.numberConformer; import static java.lang.Math.abs; @@ -206,41 +208,6 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, layoutRefresherRunnable = new Runnable() { @Override public void run() { - final List renderedCurrencies = new ArrayList<>(); - - if (balanceManager.getTotalBalance() != null) - { - for (int i = 0; i < balanceManager.getTotalBalance().size(); i++) { - final Currency currency = balanceManager.getTotalBalance().get(i); - - if ((Math.abs(currency.getBalance() * currency.getValue()) >= preferencesManager.getMinimumAmount())) { - //currencyView.add(layoutGenerator.getInfoLayout(currency, totalValue, preferencesManager.isBalanceHidden())); - renderedCurrencies.add(currency); - } - } - } - - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - currencyLayout.removeAllViews(); - - for(int i = 0; i < renderedCurrencies.size(); i++) - { - //currencyLayout.addView(currencyView.get(i)); - currencyLayout.addView(new CurrencyCardview(getActivity(), renderedCurrencies.get(i), getActivity(), preferencesManager.isBalanceHidden())); - } - - if(loadingDialog.isShowing()) - { - loadingDialog.dismiss(); - } - - updateTitle(); - - handler.removeCallbacks(updateRunnable); - } - }); } }; } @@ -375,9 +342,44 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, iconCounter = 0; } - private void adaptView() + private void adaptView(float totalValue, float totalFluctuation) { - layoutRefresherRunnable.run(); + this.totalValue = totalValue; + this.totalFluctuation = totalFluctuation; + final List renderedCurrencies = new ArrayList<>(); + + if (balanceManager.getTotalBalance() != null) + { + for (int i = 0; i < balanceManager.getTotalBalance().size(); i++) { + final Currency currency = balanceManager.getTotalBalance().get(i); + + if ((Math.abs(currency.getBalance() * currency.getValue()) >= preferencesManager.getMinimumAmount())) { + //currencyView.add(layoutGenerator.getInfoLayout(currency, totalValue, preferencesManager.isBalanceHidden())); + renderedCurrencies.add(currency); + } + } + } + + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + currencyLayout.removeAllViews(); + + for(int i = 0; i < renderedCurrencies.size(); i++) + { + currencyLayout.addView(new CurrencyCardview(getActivity(), renderedCurrencies.get(i), getActivity(), preferencesManager.isBalanceHidden())); + } + + if(loadingDialog.isShowing()) + { + loadingDialog.dismiss(); + } + + updateTitle(); + + handler.removeCallbacks(updateRunnable); + } + }); } private void countCoins(boolean isCoin, boolean isDetails, boolean isTickers) @@ -401,46 +403,22 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, { if(balanceManager.getTotalBalance().size() == 0) { - countIcons(); + updateNoBalance(); } else { if(coinCounter >= balanceManager.getTotalBalance().size() && detailsChecker && tickersChecker) - { - IconDownloader iconDownloader = new IconDownloader(); - iconDownloader.execute(); - } - - } - } - } - - private void countIcons() - { - int offset = 0; - - for(int i = 0; i < balanceManager.getTotalBalance().size(); i++) - { - if(balanceManager.getTotalBalance().get(i).getSymbol().equals("USD")) - { - offset++; - } - } - - iconCounter++; - - if(balanceManager.getTotalBalance() != null) - { - if(balanceManager.getTotalBalance().size() == 0) - { - updateNoBalance(); - } - else - { - if(iconCounter == balanceManager.getTotalBalance().size() - offset) { UiHeavyLoadCalculator uiHeavyLoadCalculator = new UiHeavyLoadCalculator(); - uiHeavyLoadCalculator.execute(); + uiHeavyLoadCalculator.setOnUiEndListener(new UiHeavyLoadCalculator.OnUiEndListener() { + @Override + public void onEnd(float totalValue, float totalFluctuation) { + refreshLayout.setRefreshing(false); + + adaptView(totalValue, totalFluctuation); + } + }); + uiHeavyLoadCalculator.execute(getActivity().getBaseContext(), balanceManager, coinmarketCapAPIManager); } } } @@ -467,23 +445,11 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, private void computeTotalValue() { - totalValue = 0; - totalFluctuation = 0; - for(int i = 0; i < currencyLayout.getChildCount(); i++) { if(currencyLayout.getChildAt(i) instanceof CurrencyCardview) { - totalValue += ((CurrencyCardview) currencyLayout.getChildAt(i)).getOwnedValue(); - totalFluctuation += ((CurrencyCardview) currencyLayout.getChildAt(i)).getFluctuation(); - } - } - - for(int i = 0; i < currencyLayout.getChildCount(); i++) - { - if(currencyLayout.getChildAt(i) instanceof CurrencyCardview) - { - ((CurrencyCardview) currencyLayout.getChildAt(i)).updateCardViewInfos(totalValue, preferencesManager.isBalanceHidden()); + ((CurrencyCardview) currencyLayout.getChildAt(i)).updateOwnedValues(totalValue, preferencesManager.isBalanceHidden()); } } } @@ -690,9 +656,22 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, countCoins(false, false, true); } - private class UiHeavyLoadCalculator extends AsyncTask + private static class UiHeavyLoadCalculator extends AsyncTask { + private float totalValue = 0; + private float totalFluctuation = 0; + + private BalanceManager balanceManager; + private CoinmarketCapAPIManager coinmarketCapAPIManager; + + private OnUiEndListener onUiEndListener; + + public void setOnUiEndListener(OnUiEndListener onUiEndListener) + { + this.onUiEndListener = onUiEndListener; + } + @Override protected void onPreExecute() { @@ -709,13 +688,18 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, } @Override - protected Void doInBackground(Void... params) + protected Void doInBackground(Object... params) { if(Looper.myLooper() == null) { Looper.prepare(); } + Context baseContext = (Context) params[0]; + + balanceManager = (BalanceManager) params[1]; + coinmarketCapAPIManager = (CoinmarketCapAPIManager) params[2]; + balanceManager.sortCoins(); for(int i = 0; i < balanceManager.getTotalBalance().size(); i++) @@ -728,29 +712,30 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, loadCurrency(localCurrency); + totalValue += localCurrency.getValue() * localCurrency.getBalance(); + totalFluctuation += localCurrency.getValue() * localCurrency.getBalance() * (localCurrency.getDayFluctuationPercentage() / 100); + balanceManager.getTotalBalance().set(i, localCurrency); } return null; } + private void loadCurrency(Currency currency) + { + currency.setName(balanceManager.getCurrencyName(currency.getSymbol())); + currency.setId(balanceManager.getCurrencyId(currency.getSymbol())); + } + @Override protected void onPostExecute(Void result) { - refreshLayout.setRefreshing(false); - new AsyncTask() { + onUiEndListener.onEnd(totalValue, totalFluctuation); + } - @Override - protected Void doInBackground(Void... voids) { - if(Looper.myLooper() == null) - { - Looper.prepare(); - } - - adaptView(); - return null; - } - }.execute(); + public interface OnUiEndListener + { + void onEnd(float totalValue, float totalFluctuation); } } @@ -778,61 +763,6 @@ public class Summary extends Fragment implements BalanceSwitchManagerInterface, } } - private class IconDownloader extends AsyncTask - { - @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); - - String iconUrl = MoodlBox.getIconUrl(localCurrency.getSymbol(), balanceManager.getCryptocompareApiManager()); - - if(iconUrl != null) - { - MoodlBox.getBitmapFromURL(iconUrl, localCurrency.getSymbol(), getResources(), getActivity().getBaseContext(), new MoodlboxNotifierInterface() { - @Override - public void onBitmapDownloaded(Bitmap bitmapIcon) { - localCurrency.setIcon(bitmapIcon); - countIcons(); - } - }); - } - else - { - Drawable drawable = getDrawable(R.drawable.ic_panorama_fish_eye_24dp, getActivity().getBaseContext()); - - Bitmap icon = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - - Canvas canvas = new Canvas(icon); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - - icon = Bitmap.createScaledBitmap(icon, 50, 50, false); - - localCurrency.setIcon(icon); - countIcons(); - } - } - - return null; - } - } - - private class DataUpdater extends AsyncTask { @Override diff --git a/app/src/main/java/com/herbron/moodl/DataManagers/CurrencyData/CurrencyCardview.java b/app/src/main/java/com/herbron/moodl/DataManagers/CurrencyData/CurrencyCardview.java index e84c227..1d38679 100644 --- a/app/src/main/java/com/herbron/moodl/DataManagers/CurrencyData/CurrencyCardview.java +++ b/app/src/main/java/com/herbron/moodl/DataManagers/CurrencyData/CurrencyCardview.java @@ -4,14 +4,19 @@ import android.app.Activity; import android.app.ActivityOptions; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import android.os.Build; +import android.os.Handler; +import android.os.Looper; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.widget.CardView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; @@ -26,7 +31,9 @@ import com.github.mikephil.charting.data.LineDataSet; import com.herbron.moodl.Activities.CurrencyDetailsActivity; import com.herbron.moodl.CurrencyInfoUpdateNotifierInterface; import com.herbron.moodl.DataManagers.DatabaseManager; +import com.herbron.moodl.DataManagers.InfoAPIManagers.CryptocompareApiManager; import com.herbron.moodl.DataManagers.PreferencesManager; +import com.herbron.moodl.DataNotifiers.MoodlboxNotifierInterface; import com.herbron.moodl.MoodlBox; import com.herbron.moodl.Utils.PlaceholderUtils; import com.herbron.moodl.R; @@ -36,6 +43,7 @@ import java.util.List; import static com.herbron.moodl.MoodlBox.collapseH; import static com.herbron.moodl.MoodlBox.expandH; +import static com.herbron.moodl.MoodlBox.getIconDominantColor; import static com.herbron.moodl.MoodlBox.numberConformer; /** @@ -46,6 +54,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti private Currency currency; private Activity parentActivity; + private Context context; private OnClickListener detailsClickListener = new OnClickListener() { @Override @@ -67,6 +76,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti public CurrencyCardview(@NonNull Context context) { super(context); + this.context = context; } public CurrencyCardview(@NonNull final Context context, final Currency currency, final Activity activity) @@ -77,6 +87,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti this.currency = currency; this.parentActivity = activity; + this.context = context; LayoutInflater.from(context).inflate(R.layout.cardview_watchlist, this, true); @@ -84,32 +95,9 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti setupCardView(); - setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(final View view) { - PreferencesManager preferencesManager = new PreferencesManager(context); + setOnClickListeners(); - if (view.findViewById(R.id.collapsableLayout).getVisibility() == View.VISIBLE) { - collapseH(view.findViewById(R.id.collapsableLayout)); - } else { - view.findViewById(R.id.linearLayoutSubCharts).setVisibility(View.GONE); - view.findViewById(R.id.progressBarLinechartWatchlist).setVisibility(View.VISIBLE); - expandH(view.findViewById(R.id.collapsableLayout)); - - if (currency.getHistoryMinutes() == null) { - currency.updateHistoryMinutes(context, preferencesManager.getDefaultCurrency()); - } - else - { - expandH(view.findViewById(R.id.collapsableLayout)); - view.findViewById(R.id.progressBarLinechartWatchlist).setVisibility(View.GONE); - view.findViewById(R.id.linearLayoutSubCharts).setVisibility(View.VISIBLE); - } - } - } - }); - - updateCardViewInfos(currency); + updateCardviewInfos(); findViewById(R.id.deleteCardWatchlist).setOnClickListener(new OnClickListener() { @Override @@ -120,10 +108,9 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti } }); - findViewById(R.id.linearLayoutSubCharts).setOnClickListener(detailsClickListener); - findViewById(R.id.LineChartView).setOnClickListener(detailsClickListener); + updateColor(); - updateColor(currency); + startIconUpdater(); } public CurrencyCardview(@NonNull final Context context, final Currency currency, Activity activity, boolean isBalanceHidden) @@ -134,6 +121,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti this.currency = currency; this.parentActivity = activity; + this.context = context; LayoutInflater.from(context).inflate(R.layout.cardview_currency, this, true); @@ -141,6 +129,68 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti setupCardView(); + setOnClickListeners(); + + updateCardviewInfos(); + + updateColor(); + + startIconUpdater(); + } + + private void startIconUpdater() + { + IconDownloader iconDownloader = new IconDownloader(); + iconDownloader.execute(context, currency); + iconDownloader.setOnBitmapDownloadedListener(new IconDownloader.OnBitmapDownloadedListener() { + @Override + public void onDownloaded(Bitmap icon) { + currency.setIcon(icon); + currency.setChartColor(getIconDominantColor(context, icon)); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + updateCurrencyColorRelatedLayouts(); + } + }); + } + }); + } + + private void updateCurrencyColorRelatedLayouts() + { + ((ImageView) findViewById(R.id.currencyIcon)).setImageBitmap(currency.getIcon()); + + Drawable arrowDrawable = ((ImageView) findViewById(R.id.detailsArrow)).getDrawable(); + arrowDrawable.mutate(); + arrowDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); + arrowDrawable.invalidateSelf(); + + Drawable progressDrawable = ((ProgressBar) findViewById(R.id.progressBarLinechart)).getIndeterminateDrawable(); + progressDrawable.mutate(); + progressDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); + progressDrawable.invalidateSelf(); + + if(findViewById(R.id.currencyPortfolioDominance) != null) + { + Drawable progressBarDrawable = ((ProgressBar) findViewById(R.id.currencyPortfolioDominance)).getProgressDrawable(); + progressBarDrawable.mutate(); + progressBarDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); + progressBarDrawable.invalidateSelf(); + } + + LineChart lineChart = findViewById(R.id.LineChartView); + + if(currency.getHistoryMinutes() != null) + { + lineChart.setData(generateData()); + lineChart.invalidate(); + } + } + + private void setOnClickListeners() + { setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { @@ -150,7 +200,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti collapseH(view.findViewById(R.id.collapsableLayout)); } else { view.findViewById(R.id.linearLayoutSubCharts).setVisibility(View.GONE); - view.findViewById(R.id.progressBarLinechartSummary).setVisibility(View.VISIBLE); + view.findViewById(R.id.progressBarLinechart).setVisibility(View.VISIBLE); expandH(view.findViewById(R.id.collapsableLayout)); if (currency.getHistoryMinutes() == null) { @@ -159,7 +209,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti else { expandH(view.findViewById(R.id.collapsableLayout)); - view.findViewById(R.id.progressBarLinechartSummary).setVisibility(View.GONE); + view.findViewById(R.id.progressBarLinechart).setVisibility(View.GONE); view.findViewById(R.id.linearLayoutSubCharts).setVisibility(View.VISIBLE); } } @@ -169,7 +219,6 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti findViewById(R.id.linearLayoutSubCharts).setOnClickListener(detailsClickListener); findViewById(R.id.LineChartView).setOnClickListener(detailsClickListener); - updateColor(currency); } public Currency getCurrency() @@ -210,81 +259,33 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti lineChart.getLegend().setEnabled(false); lineChart.getXAxis().setEnabled(false); lineChart.setViewPortOffsets(0, 0, 0, 0); - lineChart.setData(generateData(currency)); + lineChart.setData(generateData()); } - private void updateCardViewInfos(Currency currency) + private void updateCardviewInfos() { ((TextView) findViewById(R.id.currencyFluctuationTextView)) .setText(PlaceholderUtils.getValueParenthesisString(numberConformer(currency.getDayFluctuation()), getContext())); ((TextView) findViewById(R.id.currencyValueTextView)) .setText(PlaceholderUtils.getValueString(numberConformer(currency.getValue()), getContext())); - ((ImageView) findViewById(R.id.currencyIcon)) - .setImageBitmap(currency.getIcon()); ((TextView) findViewById(R.id.currencyNameTextView)) .setText(currency.getName()); ((TextView) findViewById(R.id.currencySymbolTextView)) .setText(PlaceholderUtils.getSymbolString(currency.getSymbol(), getContext())); ((TextView) findViewById(R.id.currencyFluctuationPercentageTextView)) .setText(PlaceholderUtils.getPercentageString(numberConformer(currency.getDayFluctuationPercentage()), getContext())); - - Drawable arrowDrawable = ((ImageView) findViewById(R.id.detailsArrow)).getDrawable(); - - if(arrowDrawable != null) - { - arrowDrawable.mutate(); - arrowDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); - arrowDrawable.invalidateSelf(); - } - - Drawable progressDrawable = ((ProgressBar) findViewById(R.id.progressBarLinechartWatchlist)).getIndeterminateDrawable(); - - if(progressDrawable != null) - { - progressDrawable.mutate(); - progressDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); - progressDrawable.invalidateSelf(); - } } - public void updateCardViewInfos(float totalValue, boolean isBalanceHidden) + public void updateOwnedValues(float totalValue, boolean isBalanceHidden) { double value = currency.getValue() * currency.getBalance(); double percentage = value / totalValue * 100; ((TextView) findViewById(R.id.currencyValueOwnedTextView)) .setText(PlaceholderUtils.getValueParenthesisString(numberConformer(currency.getValue() * currency.getBalance()), getContext())); - ((TextView) findViewById(R.id.currencyFluctuationTextView)) - .setText(PlaceholderUtils.getValueParenthesisString(numberConformer(currency.getDayFluctuation()), getContext())); - ((TextView) findViewById(R.id.currencyValueTextView)) - .setText(PlaceholderUtils.getValueString(numberConformer(currency.getValue()), getContext())); - - ((ImageView) findViewById(R.id.currencyIcon)) - .setImageBitmap(currency.getIcon()); - ((TextView) findViewById(R.id.currencyNameTextView)) - .setText(currency.getName()); - ((TextView) findViewById(R.id.currencySymbolTextView)) - .setText(PlaceholderUtils.getSymbolString(currency.getSymbol(), getContext())); ((TextView) findViewById(R.id.currencyOwnedTextView)) .setText(PlaceholderUtils.getBalanceString(numberConformer(currency.getBalance()), currency.getSymbol(), getContext())); - ((TextView) findViewById(R.id.currencyFluctuationPercentageTextView)) - .setText(PlaceholderUtils.getPercentageString(numberConformer(currency.getDayFluctuationPercentage()), getContext())); - - Drawable arrowDrawable = ((ImageView) findViewById(R.id.detailsArrow)).getDrawable(); - arrowDrawable.mutate(); - arrowDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); - arrowDrawable.invalidateSelf(); - - Drawable progressDrawable = ((ProgressBar) findViewById(R.id.progressBarLinechartSummary)).getIndeterminateDrawable(); - progressDrawable.mutate(); - progressDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); - progressDrawable.invalidateSelf(); - - Drawable progressBarDrawable = ((ProgressBar) findViewById(R.id.currencyPortfolioDominance)).getProgressDrawable(); - progressBarDrawable.mutate(); - progressBarDrawable.setColorFilter(new PorterDuffColorFilter(currency.getChartColor(), PorterDuff.Mode.SRC_IN)); - progressBarDrawable.invalidateSelf(); ((ProgressBar) findViewById(R.id.currencyPortfolioDominance)).setProgress((int) Math.round(percentage)); ((TextView) findViewById(R.id.percentageOwnedTextView)).setText(PlaceholderUtils.getPercentageString(numberConformer(percentage), getContext())); @@ -313,7 +314,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti return getOwnedValue() * (currency.getDayFluctuationPercentage() / 100); } - private LineData generateData(Currency currency) + private LineData generateData() { LineDataSet dataSet; List dataChartList = currency.getHistoryMinutes(); @@ -340,7 +341,7 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti return new LineData(dataSet); } - private void updateColor(Currency currency) + private void updateColor() { if(currency.getDayFluctuationPercentage() >= 0) { @@ -379,18 +380,9 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti @Override public void onHistoryDataUpdated() { - View progressWatchlistView = findViewById(R.id.progressBarLinechartWatchlist); - View progressSummaryView = findViewById(R.id.progressBarLinechartSummary); + View progressView = findViewById(R.id.progressBarLinechart); - if(progressWatchlistView != null) - { - progressWatchlistView.setVisibility(View.GONE); - } - - if(progressSummaryView != null) - { - progressSummaryView.setVisibility(View.GONE); - } + progressView.setVisibility(View.GONE); findViewById(R.id.linearLayoutSubCharts).setVisibility(View.VISIBLE); @@ -404,4 +396,46 @@ public class CurrencyCardview extends CardView implements CurrencyInfoUpdateNoti public void onPriceUpdated(Currency currency) { } + + private static class IconDownloader extends AsyncTask implements MoodlboxNotifierInterface + { + private Bitmap icon = null; + private OnBitmapDownloadedListener onBitmapDownloadedListener; + + public Bitmap getIcon() + { + return icon; + } + + public void setOnBitmapDownloadedListener(OnBitmapDownloadedListener onBitmapDownloadedListener) { + this.onBitmapDownloadedListener = onBitmapDownloadedListener; + } + + @Override + protected Void doInBackground(Object... objects) { + Context context = (Context) objects[0]; + Currency currency = (Currency) objects[1]; + + CryptocompareApiManager cryptocompareApiManager = CryptocompareApiManager.getInstance(context); + + String iconUrl = MoodlBox.getIconUrl(currency.getSymbol(), cryptocompareApiManager); + + if(iconUrl != null) + { + MoodlBox.getBitmapFromURL(iconUrl, currency.getSymbol(), context.getResources(), context, this); + } + + return null; + } + + @Override + public void onBitmapDownloaded(Bitmap bitmap) { + icon = bitmap; + onBitmapDownloadedListener.onDownloaded(bitmap); + } + + public interface OnBitmapDownloadedListener { + void onDownloaded(Bitmap icon); + } + } } diff --git a/app/src/main/res/layout-v21/cardview_currency.xml b/app/src/main/res/layout-v21/cardview_currency.xml index f7ccc19..51dde10 100644 --- a/app/src/main/res/layout-v21/cardview_currency.xml +++ b/app/src/main/res/layout-v21/cardview_currency.xml @@ -165,7 +165,7 @@ android:focusable="true">