From 5b1cc3b7b1d3b706b5dd058ffb8c9afe81c43663 Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Fri, 26 Jan 2018 19:18:29 +0100 Subject: [PATCH 01/15] File correction New strings values. Old ones were incorrect (see strings for more) --- .idea/dictionaries/Javier_Alonso_Silva.xml | 9 --------- .idea/modules.xml | 2 +- .idea/vcs.xml | 6 ++++++ app/build.gradle | 2 +- .../main/java/javinator9889/bitcoinpools/BitCoinApp.java | 2 +- .../main/java/javinator9889/bitcoinpools/Constants.java | 4 ++-- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 8 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 .idea/dictionaries/Javier_Alonso_Silva.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/dictionaries/Javier_Alonso_Silva.xml b/.idea/dictionaries/Javier_Alonso_Silva.xml deleted file mode 100644 index 96a142b..0000000 --- a/.idea/dictionaries/Javier_Alonso_Silva.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - bitcoinpools - github - javinator - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index f7e9d99..c325742 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c85720b..078ec6f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { applicationId "javinator9889.bitcoinpools" minSdkVersion 21 targetSdkVersion 27 - versionCode 4 + versionCode 6 versionName "1.12" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/javinator9889/bitcoinpools/BitCoinApp.java b/app/src/main/java/javinator9889/bitcoinpools/BitCoinApp.java index ac59605..72d4249 100644 --- a/app/src/main/java/javinator9889/bitcoinpools/BitCoinApp.java +++ b/app/src/main/java/javinator9889/bitcoinpools/BitCoinApp.java @@ -25,7 +25,7 @@ * Based on: https://github.com/ZonaRMR/SimpleForFacebook/blob/master/app/src/main/java/com/creativetrends/simple/app/activities/SimpleApp.java */ @ReportsCrashes( - mailTo = "YOUR_MAIL", + mailTo = "javialonso007@hotmail.es", mode = ReportingInteractionMode.DIALOG, resDialogText = R.string.crash, logcatArguments = {"-t", "200", "-v", "long"} diff --git a/app/src/main/java/javinator9889/bitcoinpools/Constants.java b/app/src/main/java/javinator9889/bitcoinpools/Constants.java index 8e84298..a1d3970 100644 --- a/app/src/main/java/javinator9889/bitcoinpools/Constants.java +++ b/app/src/main/java/javinator9889/bitcoinpools/Constants.java @@ -25,8 +25,8 @@ public static final class SHARED_PREFERENCES { public static final String CHANNEL_ID = "javinator9889.bitcoinpools.Alerts"; public static final int NOTIFICATION_ID = 1; public static final int REQUEST_CODE = 0; - public static final String GITHUB_USER = "GITHUB_USER"; - public static final String GITHUB_REPO = "GITHUB_REPO"; + public static final String GITHUB_USER = "Javinator9889"; + public static final String GITHUB_REPO = "BitCoinPools"; public static final String STATS_URL = "https://api.blockchain.info/stats"; public static final String MARKET_NAME = "market_price_usd"; public static final String POOLS_URL = "https://api.blockchain.info/pools?timespan="; diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 7b4754e..5b5edf4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -70,7 +70,7 @@ No hay conexión a Internet Esta aplicación necesita conexión a Internet para funcionar. Por favor, activa tu conexión de datos o conéctate a una red WiFi Aceptar - obtén información sobre las últimas pools de BTC y más
Copyright © 2017 - Javinator9889
🛠 Proyecto en GitHub]]>
+ obtén información sobre las últimas pools de BTC y más
Copyright © 2017 - Javinator9889
Proyecto en GitHub]]>
GitHub]]> No Internet connection This app requires Internet connection for working. Please, turn on your mobile data or connect to a WiFi network OK - get information about the latest BTC pools and more
Copyright © 2017 - Javinator9889
🛠 Proyecto en GitHub]]>
+ get information about the latest BTC pools and more
Copyright © 2017 - Javinator9889
GitHub project]]>
GitHub]]> Date: Sat, 27 Jan 2018 12:46:33 +0100 Subject: [PATCH 02/15] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ac59c2f..4003a4e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # BitCoinPools +## Development branch **This is an app for retrieving latest information about BTC pools**. From f9bd99d0f509ddad49d85fcc915454e779c05d98 Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Sat, 27 Jan 2018 12:48:59 +0100 Subject: [PATCH 03/15] Update README.md - development branch --- README.md | 38 ++------------------------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 4003a4e..3d5ac34 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,3 @@ -# BitCoinPools -## Development branch +# BitCoin Pools - development branch -**This is an app for retrieving latest information about BTC pools**. - -[![BitCoinApp - Aptiode](https://img.shields.io/badge/Download%20-Aptoide-green.svg)](https://goo.gl/5sqsNP) -[![BitCoinApp - Releases](https://img.shields.io/badge/Download%20-GitHub%20APK-green.svg)](https://goo.gl/qeaU85) - -## Changelog - -With the latest update, we have just integrated the option to *recieve notifications*: as this app is for getting information about [BitCoin Pools](https://en.wikipedia.org/wiki/Mining_pool) is important to know the value of the **BitCoin**. So now, you can configure notifications and more in the app. - -## What this app exactly does? - -The purpose of this application is *getting information about mining pools* avaiable on Internet [(click here for getting more information)](https://en.wikipedia.org/wiki/Mining_pool), and also giving the user **more information** for the BitCoin (as its current price) - -![Interface](https://github.com/Javinator9889/BitCoinPools/blob/master/screenshots/englishinterface.jpg) -![Buttons](https://github.com/Javinator9889/BitCoinPools/blob/master/screenshots/buttons.jpg) - -**Now, in the latest version** I have included a notifcation system that can be *enabled or disabled* by the user in order to know when the BitCoin **reaches or not** a specific price. - -![Settings](https://github.com/Javinator9889/BitCoinPools/blob/master/screenshots/choosingdays.jpg) - -## Downloading different versions - -Here you have to download the newest version available, on *Aptoide* or directly from *GitHub*: - -[![BitCoinApp - Aptiode](https://img.shields.io/badge/Download%20-Aptoide-green.svg)](https://goo.gl/5sqsNP) -[![BitCoinApp - Releases](https://img.shields.io/badge/Download%20-GitHub%20APK-green.svg)](https://goo.gl/qeaU85) - -## I have used it and I love it. What can I do? - -You can do: -+ **Fork** these project and *develop* your custom version: I will like to see it -+ **Rate**, giving me a star ⭐️ -+ **See my other projects** in which I spent so much time working on them 💻 -+ **And watch 👁** if you would like to recieve new upgardes +*An app for getting the latest information about BTC and BTC pools*. This is the **development branch**: all new features are published here, before commiting to `master` From 6492097550cd1e7da6d6cf30fd24c2d9f59dc82c Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Sat, 27 Jan 2018 17:47:49 +0100 Subject: [PATCH 04/15] First implementation of views with fragment. Created tabs and toolbar --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 2 +- .../bitcoinpools/FragmentViews/PoolsView.java | 262 ++++++++++++++++++ .../bitcoinpools/MainActivity.java | 87 +++++- .../bitcoinpools/OneFragment.java | 27 ++ .../bitcoinpools/TwoFragment.java | 26 ++ .../ic_attach_money_white_24dp.png | Bin 0 -> 397 bytes .../res/drawable-hdpi/ic_poll_white_24dp.png | Bin 0 -> 136 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 256 bytes .../res/drawable-mdpi/ic_poll_white_24dp.png | Bin 0 -> 127 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 448 bytes .../res/drawable-xhdpi/ic_poll_white_24dp.png | Bin 0 -> 171 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 640 bytes .../drawable-xxhdpi/ic_poll_white_24dp.png | Bin 0 -> 232 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 819 bytes .../drawable-xxxhdpi/ic_poll_white_24dp.png | Bin 0 -> 294 bytes app/src/main/res/layout/activity_main.xml | 46 ++- app/src/main/res/layout/fragment_one.xml | 112 ++++++++ app/src/main/res/values/colors.xml | 3 + app/src/main/res/values/styles.xml | 12 + 20 files changed, 557 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/javinator9889/bitcoinpools/FragmentViews/PoolsView.java create mode 100644 app/src/main/java/javinator9889/bitcoinpools/OneFragment.java create mode 100644 app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java create mode 100644 app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_poll_white_24dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_poll_white_24dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_poll_white_24dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_poll_white_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_poll_white_24dp.png create mode 100644 app/src/main/res/layout/fragment_one.xml diff --git a/app/build.gradle b/app/build.gradle index 078ec6f..9dea7d4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,4 +50,5 @@ dependencies { compile 'com.android.support:appcompat-v7:27.0.2' compile 'com.android.support:cardview-v7:27.0.2' compile 'com.android.support:recyclerview-v7:27.0.2' + compile 'com.jpardogo.materialtabstrip:library:1.1.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 23340f3..584fc4b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme" + android:theme="@style/MyMaterialTheme" android:name=".BitCoinApp"> RETRIEVED_DATA = new LinkedHashMap<>(); + private static float MARKET_PRICE_USD; + private static ViewGroup.LayoutParams TABLE_PARAMS; + private FragmentActivity activity; + + public PoolsView() { + //this.activity = getActivity(); + } + + /*public PoolsView setActivity(AppCompatActivity activity) { + this.activity = activity; + return this; + }*/ + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.activity = getActivity();/* + //activity.setContentView(R.layout.fragment_one); + initMPU(); + initRD(); + initT(); + try { + mpuThread.join(); + } catch (InterruptedException e) { + Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); + } finally { + final PieChart chart = (PieChart) activity.findViewById(R.id.chart); + /*final Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar); + toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD);*/ + //activity.setSupportActionBar(toolbar); + + /*Log.d(Constants.LOG.MATAG, Constants.LOG.CREATING_CHART); + createPieChart(chart); + createTable((TableLayout) activity.findViewById(R.id.poolstable)); + }*/ + } + + private void initMPU(View view) { + mpuThread = new Thread() { + public void run() { + Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_MPU); + net market = new net(); + market.execute(Constants.STATS_URL); + try { + MARKET_PRICE_USD = round((float) market.get().getDouble(Constants.MARKET_NAME), 2); + } catch (InterruptedException | ExecutionException | JSONException e) { + Log.e(Constants.LOG.MATAG, Constants.LOG.MARKET_PRICE_ERROR + e.getMessage()); + MARKET_PRICE_USD = 0; + } + } + }; + mpuThread.setName("mpu_thread"); + mpuThread.start(); + } + + private void initRD(View view) { + rdThread = new Thread() { + public void run() { + int days = BitCoinApp.getSharedPreferences().getInt(Constants.SHARED_PREFERENCES.DAYS_TO_CHECK, 1); + Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_RD); + String url = Constants.POOLS_URL + days + "days"; + net httpsResponse = new net(); + httpsResponse.execute(url); + try { + RETRIEVED_DATA = JSONTools.sortByValue(JSONTools.convert2HashMap(httpsResponse.get())); + } catch (InterruptedException | ExecutionException e) { + RETRIEVED_DATA = null; + Log.e(Constants.LOG.MATAG, Constants.LOG.DATA_ERROR + e.getMessage()); + } + } + }; + rdThread.setName("rd_thread"); + rdThread.start(); + } + + private void initT(View view) { + TableRow masterRow = view.findViewById(R.id.masterRow); + TABLE_PARAMS = masterRow.getLayoutParams(); + //TABLE_PARAMS = new TableLayout.LayoutParams(0, 0, 1); + } + + private void createPieChart(final PieChart destinationChart) { + Thread pieChartThread = new Thread() { + public void run() { + Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_CHART); + List values = new ArrayList<>(); + List> entryList = new ArrayList<>(RETRIEVED_DATA.entrySet()); + Map.Entry getEntry; + int count = 0; + for (int i = entryList.size() - 1; (i >= 0) && (count < 10); --i) { + getEntry = entryList.get(i); + Log.i(Constants.LOG.MATAG, "Accessing at: " + i + " | Key: " + getEntry.getKey() + " | Value: " + getEntry.getValue()); + values.add(new PieEntry(getEntry.getValue(), getEntry.getKey())); + ++count; + } + PieDataSet data = new PieDataSet(values, "Latest 24h BTC pools"); + data.setColors(ColorTemplate.MATERIAL_COLORS); + data.setValueTextSize(10f); + + destinationChart.setData(new PieData(data)); + destinationChart.setUsePercentValues(true); + destinationChart.setEntryLabelColor(ColorTemplate.rgb("#000000")); + Description description = new Description(); + description.setText(getString(R.string.porcent)); + destinationChart.setDescription(description); + destinationChart.getLegend().setEnabled(false); + destinationChart.invalidate(); + } + }; + try { + rdThread.join(); + } catch (InterruptedException e) { + Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR + rdThread.getName()); + } finally { + pieChartThread.setName("chart_thread"); + pieChartThread.start(); + } + } + + private void createTable(final TableLayout destinationTable, final View view) { + Thread tableThread = new Thread() { + public void run() { + Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_TABLE); + List> entryList = new ArrayList<>(RETRIEVED_DATA.entrySet()); + Map.Entry getEntry; + int count = 1; + + TableRow fetchTableRow = view.findViewById(R.id.masterRow); + TextView firstPool = new TextView(view.getContext()); + TextView firstBlock = new TextView(view.getContext()); + + getEntry = entryList.get(entryList.size() - 1); + + firstPool.setText(getEntry.getKey()); + firstPool.setTypeface(Typeface.DEFAULT_BOLD); + firstPool.setTextSize(16f); + + firstBlock.setText(String.valueOf(getEntry.getValue())); + firstBlock.setTypeface(Typeface.MONOSPACE); + firstBlock.setTextSize(16f); + + fetchTableRow.addView(firstPool); + fetchTableRow.addView(firstBlock); + for (int i = entryList.size() - 2; (i >= 0) && (count <= 10); --i) { + TextView poolName = new TextView(view.getContext()); + TextView poolBlock = new TextView(view.getContext()); + TableRow tableRow = new TableRow(view.getContext()); + + getEntry = entryList.get(i); + poolName.setText(getEntry.getKey()); + poolBlock.setText(String.valueOf(getEntry.getValue())); + + poolName.setTypeface(Typeface.DEFAULT_BOLD); + poolName.setTextSize(16f); + + poolBlock.setTypeface(Typeface.MONOSPACE); + poolBlock.setTextSize(16f); + + tableRow.setLayoutParams(TABLE_PARAMS); + tableRow.addView(poolName); + tableRow.addView(poolBlock); + + destinationTable.addView(tableRow); + ++count; + } + destinationTable.invalidate(); + } + }; + try { + rdThread.join(); + } catch (InterruptedException e) { + Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR + rdThread.getName()); + } finally { + tableThread.setName("table_thread"); + tableThread.start(); + } + } + + /** + * Based on: https://stackoverflow.com/questions/8911356/whats-the-best-practice-to-round-a-float-to-2-decimals + */ + public static float round(float d, int decimalPlace) { + return BigDecimal.valueOf(d).setScale(decimalPlace, BigDecimal.ROUND_HALF_UP).floatValue(); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_one, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { + initMPU(view); + initRD(view); + initT(view); + try { + mpuThread.join(); + } catch (InterruptedException e) { + Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); + } finally { + final PieChart chart = (PieChart) view.findViewById(R.id.chart); + /*final Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar); + toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD);*/ + //activity.setSupportActionBar(toolbar); + + Log.d(Constants.LOG.MATAG, Constants.LOG.CREATING_CHART); + createPieChart(chart); + createTable((TableLayout) view.findViewById(R.id.poolstable), view); + } + } +} diff --git a/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java b/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java index 4dd5d69..b002c2f 100644 --- a/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java +++ b/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java @@ -8,8 +8,12 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.annotation.UiThread; +import android.support.design.widget.TabLayout; import android.support.v4.app.ActivityCompat; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; @@ -18,6 +22,7 @@ import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; +import android.support.v7.widget.Toolbar; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; @@ -40,6 +45,7 @@ import java.util.concurrent.ExecutionException; import javinator9889.bitcoinpools.AppUpdaterManager.CheckUpdates; +import javinator9889.bitcoinpools.FragmentViews.PoolsView; import javinator9889.bitcoinpools.JSONTools.JSONTools; import javinator9889.bitcoinpools.NetTools.net; @@ -50,6 +56,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private static ViewGroup.LayoutParams TABLE_PARAMS; private Thread rdThread; private Thread mpuThread; + private Toolbar toolbar; + private TabLayout tabLayout; + private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { @@ -84,27 +93,41 @@ protected void onCreate(Bundle savedInstanceState) { Log.d(Constants.LOG.MATAG, Constants.LOG.INIT_VALUES); checkPermissions(); - initMPU(); + /*initMPU(); initRD(); - initT(); + initT();*/ CheckUpdates ck = new CheckUpdates(Constants.GITHUB_USER, Constants.GITHUB_REPO); - try { - mpuThread.join(); + /*try { + //mpuThread.join(); } catch (InterruptedException e) { Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); - } finally { - setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD); + } finally {*/ + //setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD); final FloatingActionsMenu mainButton = (FloatingActionsMenu) findViewById(R.id.menu_fab); final FloatingActionButton licenseButton = (FloatingActionButton) findViewById(R.id.license); final FloatingActionButton closeButton = (FloatingActionButton) findViewById(R.id.close); final FloatingActionButton settingsButton = (FloatingActionButton) findViewById(R.id.settings); final FloatingActionButton refreshButton = (FloatingActionButton) findViewById(R.id.update); - final PieChart chart = (PieChart) findViewById(R.id.chart); + /*final PieChart chart = (PieChart) findViewById(R.id.chart); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD); + setSupportActionBar(toolbar);*/ + //getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + viewPager = (ViewPager) findViewById(R.id.viewpager); + setupViewPager(viewPager); + + tabLayout = (TabLayout) findViewById(R.id.tabs); + tabLayout.setupWithViewPager(viewPager); + setupTabIcons(); + /*final ViewPager pager = (ViewPager) findViewById(R.id.tabs);*/ + + //pager.setAdapter(getSupportFragmentManager()); Log.d(Constants.LOG.MATAG, Constants.LOG.CREATING_CHART); - createPieChart(chart); - createTable((TableLayout) findViewById(R.id.poolstable)); + /*createPieChart(chart); + createTable((TableLayout) findViewById(R.id.poolstable));*/ mainButton.bringToFront(); mainButton.invalidate(); @@ -115,7 +138,7 @@ protected void onCreate(Bundle savedInstanceState) { refreshButton.setOnClickListener(this); ck.checkForUpdates(this, getString(R.string.updateAvailable), getString(R.string.updateDescrip), getString(R.string.updateNow), getString(R.string.updateLater), getString(R.string.updatePage)); - } + //} } else { new MaterialDialog.Builder(this) .title(R.string.noConnectionTitle) @@ -336,5 +359,47 @@ private void checkPermissions() { private void closeApp() { this.onBackPressed(); } + + private void setupViewPager(ViewPager viewPager) { + ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); + adapter.addFragment(new PoolsView(), "ONE"); + adapter.addFragment(new TwoFragment(), "TWO"); + //adapter.addFragment(new ThreeFragment(), "THREE"); + viewPager.setAdapter(adapter); + } + + class ViewPagerAdapter extends FragmentPagerAdapter { + private final List mFragmentList = new ArrayList<>(); + private final List mFragmentTitleList = new ArrayList<>(); + + public ViewPagerAdapter(FragmentManager manager) { + super(manager); + } + + @Override + public Fragment getItem(int position) { + return mFragmentList.get(position); + } + + @Override + public int getCount() { + return mFragmentList.size(); + } + + public void addFragment(Fragment fragment, String title) { + mFragmentList.add(fragment); + mFragmentTitleList.add(title); + } + + @Override + public CharSequence getPageTitle(int position) { + return mFragmentTitleList.get(position); + } + } + + private void setupTabIcons() { + tabLayout.getTabAt(0).setIcon(R.drawable.ic_poll_white_24dp); + tabLayout.getTabAt(1).setIcon(R.drawable.ic_attach_money_white_24dp); + } } diff --git a/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java b/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java new file mode 100644 index 0000000..902dc22 --- /dev/null +++ b/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java @@ -0,0 +1,27 @@ +package javinator9889.bitcoinpools; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by Javinator9889 on 27/01/2018. + * Based on: https://www.androidhive.info/2015/09/android-material-design-working-with-tabs/ + */ + +public class OneFragment extends Fragment { + public OneFragment() {} + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_one, container, false); + } +} diff --git a/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java b/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java new file mode 100644 index 0000000..187881c --- /dev/null +++ b/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java @@ -0,0 +1,26 @@ +package javinator9889.bitcoinpools; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +/** + * Created by Javinator9889 on 27/01/2018. + */ + +public class TwoFragment extends Fragment { + public TwoFragment() {} + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_one, container, false); + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ee833c667ac49d6204cbc7ee1a5939809d98d341 GIT binary patch literal 397 zcmV;80doF{P)~!wssdc#O3D@w zxL&AM9;%5DAuL-YFb=3!5X8u0q}ZU3O8LbE8NR%dz@bcj(8e+OZkeWBe$dG(FMM}K zll-BQezr)G^GJjIqlOutG4>P;t-NB?%La`&I5;$^04o?hvcV+Af(j7F7?lk=Fz%^R z9+olsWP?(!F?I;)6H(r9WvP=L2FbZ(igscQut*AHP4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_poll_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_poll_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d30061fcc8e7edaf524e2d3de1b2202d83f370df GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;zo(01h)3t!Ya4kP6gXT0#Y~R< z6=#@kk=!~rkW1s;^e3OPT)f&C59bTtU09!%&c~`8!drDy;8e@G>f9IG)Lk@$7K&uF j$&{{O|0n1=d6F)x+SA`{-bP0l+XkK#V{-d literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..707d167616765fe8f34d8e637cb2a2a1ba681389 GIT binary patch literal 256 zcmV+b0ssDqP)MI~Oi!Y|DHp>iAVZ!1Rak2|@jTzxi(6 a;b&OLqgP$G=;8^Wi42~uelF{r5}E+cXe}rJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..20efc6cb79e2985663aa98dc445ccf32cffd7e39 GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}cwPFt&TTIEF-UzCCE@F(pyv_{aNC zi=CTYW>1)?crW`5VcO3 z7IMJ1scz{azh_gqUL1M+vBGUim#xw1EZ%)WJ}X2kJiav6MJ_(VR4FP~EUIoj=b^Ow z+fRLtb8-TnasC#`HEf&Ad+u}3eUY^nw6!hrKFl$F^(1tsPIQUkF{z7IsX(0?^&Dum`b85=kfHKF6dK{HEPibm;W}aMg z!aH%T&QjH4v-9V!-~DF)|MRx1mGl0e{ruBoqKAr*rie|>zL-OYpPg34V8~9p)RQ}> zDv3+_smzk;Ic=HCqaG%T-#?MwBGx5pbLvIPs&|6H8#EqsUj8^ih_zFDiT8(TdG9Ve z+yCFNRm&phNZIt= z-M+(j)qImcwepB#8rvMtZFX8$Fy)M0!Nj*`LVjc@?`FAcV&wnukwE>))E?_Anm#(u zHGl3&n0x4m+AhyY-jn!}xP(pTESw(`XBeKCY}i|3=#rMdVgk3w#x^rHk8nHs zzmfG+$Z*}HSB)`?nJ;ThE$WtNo?&*{^p>IN$_pCD(l3=hJ(%dTJhY-F@ly5EgPcC< zp%r%yg{+=a(ULiztN-qdUn>H_auhl6Ch;s?DG_#2`cAs=VIDX+pjW zrdZ_}`K?N0ZPmNfd%=Cq@gtS)O(p9;iio5Mq*t*;EKvybQxCrG-rIEC&u(&j6Za7j zKCjFNmY$n_p0ZpeVkWjhK6;Y!nnfOY4-!8=6_PWH*L#T00LSr`|I&|yH{Eth)CHz2 N22WQ%mvv4FO#qM@Am0E0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_poll_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_poll_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e6193867dfdad3b487918db56a162d0f44a6437a GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw)_b}*hGg7(d()Py*+IbJ;o2{J zAA7pvF3Wp73T4??ZRwbxQzmtP_4J3yH}bp;jW>IggrxCBm25P;c>f_!O~&1G0{8u@ z`3_9iV_TJCdd#6%DxAAHpy}Ax@2?k@}X&LQArClc|(#H%(HF%%qRE3EAheX1C>)NzVxh_le^D|+jNht d@#f{(jc!6FGXE_?3M6S`p_sHP)J+%&hSjD`6m1NG(g?$nAdMEu zNUZ{6k`f{bQG!CsM0BFtWHQ8=@u~HD&Wx{)&F>7npYL{liw7K>TZ&;AhG7_nv0BK$ zS(uc6vlLc$Ccp%k025#W;#f9SQ3DFy9pIq>A0c8HrHyX>19 zW~g>cz<>0x5)sb1A;62DmAfb%kcFT4G|L8b65Sj_+^75R`tb7&XCX@D0xEGfK`TYd zV^b;TIw9$Ou%JSiyY9n+ry%AXR%fy zz>jKB^YSsOdWnF~s7`2JHlpf~2neJ4U-PmQ)u2Q`1XYFh3%{_kml6R#H2#G2ClD}- z>S=NX+{W%?G6mFOXVH{A0UiQ4dBj%P0R6S&%%YcyWC+M&oan~6K&ecC{z?cE+Xrq@ zOP)Z0<|b*xJi1x?a)38usLP^- zN%RG%kq=OpP7OXRbajv>A7Ebr&G=YAM?dKT0b28LkW0M4BDQXs0R4HXr;i1qYmy7l zUv7-2_;=Pz2Iwz?(*$vHRXRX_MT}t=Bu6?xfBC${?x=i#{&o>T)#>g4bpxpU$raFq zYC6#YgQ$w*`exy0q62QCs@1<{AF5EI15Tm3tAEXLRDnbX>_io!Q2V+M)kxx>#P3o0 zNY%P5!$Q@S_<*z6b!oi5-^e@cY7!sd%WXvRr|0gkcG_UO$t zGK{k`QZMEPi0%_ZJm3z!JjBl|(T$NQ6_Cqo;uU1ONfC(@Ge*n6{IDmJ|3g!R+002ovPDHLkV1fXzd(Z#? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_poll_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_poll_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..440b8906ebe9ba618b9c336b5e377d1df7128eb9 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg-g>$?hE&{od&`lp$w0vE;kzS; zB_2gKUT94>JmT!|KxMIfa#mXS<9hwIy*se^6YW!{<3To - + + + + + + + + + + android:id="@+id/settings" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:fab_colorNormal="?attr/colorAccent" + app:fab_icon="@drawable/ic_settings_black_48dp" + app:fab_size="mini" + app:fab_title="@string/settings" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3ab3e9c..647ef51 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,4 +3,7 @@ #3F51B5 #303F9F #FF4081 + #FFFFFF + #FFFFFF + #000000 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3336d98..0f988eb 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,4 +13,16 @@ #FAFAFA + + + + From f2b0f6f8e2e03a3bdc36d1a660f124d863200ebf Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Sun, 28 Jan 2018 17:14:29 +0100 Subject: [PATCH 05/15] Included new views. Need to improve the first tab (PieChart too small) --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 2 +- .../{PoolsView.java => Tab1PoolsChart.java} | 163 +++++------------- .../FragmentViews/Tab2BTCChart.java | 24 +++ .../bitcoinpools/MainActivity.java | 89 +++++++--- .../bitcoinpools/OneFragment.java | 27 --- .../bitcoinpools/TwoFragment.java | 26 --- app/src/main/res/layout/activity_main.xml | 58 +++++-- .../{fragment_one.xml => tab1_poolschart.xml} | 107 ++++++------ app/src/main/res/layout/tab2_btcchart.xml | 36 ++++ app/src/main/res/values/styles.xml | 10 ++ 11 files changed, 288 insertions(+), 256 deletions(-) rename app/src/main/java/javinator9889/bitcoinpools/FragmentViews/{PoolsView.java => Tab1PoolsChart.java} (63%) create mode 100644 app/src/main/java/javinator9889/bitcoinpools/FragmentViews/Tab2BTCChart.java delete mode 100644 app/src/main/java/javinator9889/bitcoinpools/OneFragment.java delete mode 100644 app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java rename app/src/main/res/layout/{fragment_one.xml => tab1_poolschart.xml} (50%) create mode 100644 app/src/main/res/layout/tab2_btcchart.xml diff --git a/app/build.gradle b/app/build.gradle index 9dea7d4..3e496c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { applicationId "javinator9889.bitcoinpools" minSdkVersion 21 targetSdkVersion 27 - versionCode 6 + versionCode 7 versionName "1.12" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 584fc4b..95b7123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/MyMaterialTheme" + android:theme="@style/CustomTheme" android:name=".BitCoinApp"> RETRIEVED_DATA = new LinkedHashMap<>(); - private static float MARKET_PRICE_USD; private static ViewGroup.LayoutParams TABLE_PARAMS; - private FragmentActivity activity; - - public PoolsView() { - //this.activity = getActivity(); - } + private Thread rdThread; + private Thread pieChartThread; + private Thread tableThread; - /*public PoolsView setActivity(AppCompatActivity activity) { - this.activity = activity; - return this; - }*/ + public Tab1PoolsChart() {} @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - this.activity = getActivity();/* - //activity.setContentView(R.layout.fragment_one); - initMPU(); - initRD(); - initT(); - try { - mpuThread.join(); - } catch (InterruptedException e) { - Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); - } finally { - final PieChart chart = (PieChart) activity.findViewById(R.id.chart); - /*final Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar); - toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD);*/ - //activity.setSupportActionBar(toolbar); + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View createdView = inflater.inflate(R.layout.tab1_poolschart, container, false); - /*Log.d(Constants.LOG.MATAG, Constants.LOG.CREATING_CHART); - createPieChart(chart); - createTable((TableLayout) activity.findViewById(R.id.poolstable)); - }*/ - } + final PieChart chart = createdView.findViewById(R.id.chart); + final TableLayout tableLayout = createdView.findViewById(R.id.poolstable); - private void initMPU(View view) { - mpuThread = new Thread() { - public void run() { - Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_MPU); - net market = new net(); - market.execute(Constants.STATS_URL); - try { - MARKET_PRICE_USD = round((float) market.get().getDouble(Constants.MARKET_NAME), 2); - } catch (InterruptedException | ExecutionException | JSONException e) { - Log.e(Constants.LOG.MATAG, Constants.LOG.MARKET_PRICE_ERROR + e.getMessage()); - MARKET_PRICE_USD = 0; - } - } - }; - mpuThread.setName("mpu_thread"); - mpuThread.start(); - } + initRD(); + initT(createdView); - private void initRD(View view) { - rdThread = new Thread() { - public void run() { - int days = BitCoinApp.getSharedPreferences().getInt(Constants.SHARED_PREFERENCES.DAYS_TO_CHECK, 1); - Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_RD); - String url = Constants.POOLS_URL + days + "days"; - net httpsResponse = new net(); - httpsResponse.execute(url); - try { - RETRIEVED_DATA = JSONTools.sortByValue(JSONTools.convert2HashMap(httpsResponse.get())); - } catch (InterruptedException | ExecutionException e) { - RETRIEVED_DATA = null; - Log.e(Constants.LOG.MATAG, Constants.LOG.DATA_ERROR + e.getMessage()); - } - } - }; - rdThread.setName("rd_thread"); - rdThread.start(); - } + createPieChart(chart); + createTable(tableLayout, createdView); - private void initT(View view) { - TableRow masterRow = view.findViewById(R.id.masterRow); - TABLE_PARAMS = masterRow.getLayoutParams(); - //TABLE_PARAMS = new TableLayout.LayoutParams(0, 0, 1); + try { + pieChartThread.join(); + tableThread.join(); + return createdView; + } catch (InterruptedException e) { + e.printStackTrace(); + return null; + } } private void createPieChart(final PieChart destinationChart) { - Thread pieChartThread = new Thread() { + pieChartThread = new Thread() { public void run() { Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_CHART); List values = new ArrayList<>(); @@ -169,7 +108,7 @@ public void run() { } private void createTable(final TableLayout destinationTable, final View view) { - Thread tableThread = new Thread() { + tableThread = new Thread() { public void run() { Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_TABLE); List> entryList = new ArrayList<>(RETRIEVED_DATA.entrySet()); @@ -227,36 +166,28 @@ public void run() { } } - /** - * Based on: https://stackoverflow.com/questions/8911356/whats-the-best-practice-to-round-a-float-to-2-decimals - */ - public static float round(float d, int decimalPlace) { - return BigDecimal.valueOf(d).setScale(decimalPlace, BigDecimal.ROUND_HALF_UP).floatValue(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_one, container, false); + private void initRD() { + rdThread = new Thread() { + public void run() { + int days = BitCoinApp.getSharedPreferences().getInt(Constants.SHARED_PREFERENCES.DAYS_TO_CHECK, 1); + Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_RD); + String url = Constants.POOLS_URL + days + "days"; + net httpsResponse = new net(); + httpsResponse.execute(url); + try { + RETRIEVED_DATA = JSONTools.sortByValue(JSONTools.convert2HashMap(httpsResponse.get())); + } catch (InterruptedException | ExecutionException e) { + RETRIEVED_DATA = null; + Log.e(Constants.LOG.MATAG, Constants.LOG.DATA_ERROR + e.getMessage()); + } + } + }; + rdThread.setName("rd_thread"); + rdThread.start(); } - @Override - public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { - initMPU(view); - initRD(view); - initT(view); - try { - mpuThread.join(); - } catch (InterruptedException e) { - Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); - } finally { - final PieChart chart = (PieChart) view.findViewById(R.id.chart); - /*final Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar); - toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD);*/ - //activity.setSupportActionBar(toolbar); - - Log.d(Constants.LOG.MATAG, Constants.LOG.CREATING_CHART); - createPieChart(chart); - createTable((TableLayout) view.findViewById(R.id.poolstable), view); - } + private void initT(View view) { + TableRow masterRow = (TableRow) view.findViewById(R.id.masterRow); + TABLE_PARAMS = masterRow.getLayoutParams(); } } diff --git a/app/src/main/java/javinator9889/bitcoinpools/FragmentViews/Tab2BTCChart.java b/app/src/main/java/javinator9889/bitcoinpools/FragmentViews/Tab2BTCChart.java new file mode 100644 index 0000000..6936c0b --- /dev/null +++ b/app/src/main/java/javinator9889/bitcoinpools/FragmentViews/Tab2BTCChart.java @@ -0,0 +1,24 @@ +package javinator9889.bitcoinpools.FragmentViews; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import javinator9889.bitcoinpools.R; + +/** + * Created by Javinator9889 on 28/01/2018. + */ + +public class Tab2BTCChart extends Fragment { + public Tab2BTCChart() {} + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.tab2_btcchart, container, false); + } +} diff --git a/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java b/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java index b002c2f..3ab06ff 100644 --- a/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java +++ b/app/src/main/java/javinator9889/bitcoinpools/MainActivity.java @@ -45,7 +45,8 @@ import java.util.concurrent.ExecutionException; import javinator9889.bitcoinpools.AppUpdaterManager.CheckUpdates; -import javinator9889.bitcoinpools.FragmentViews.PoolsView; +import javinator9889.bitcoinpools.FragmentViews.Tab1PoolsChart; +import javinator9889.bitcoinpools.FragmentViews.Tab2BTCChart; import javinator9889.bitcoinpools.JSONTools.JSONTools; import javinator9889.bitcoinpools.NetTools.net; @@ -59,6 +60,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe private Toolbar toolbar; private TabLayout tabLayout; private ViewPager viewPager; + private SectionsPagerAdapter mSectionsPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -93,15 +95,15 @@ protected void onCreate(Bundle savedInstanceState) { Log.d(Constants.LOG.MATAG, Constants.LOG.INIT_VALUES); checkPermissions(); - /*initMPU(); - initRD(); + initMPU(); + /*initRD(); initT();*/ CheckUpdates ck = new CheckUpdates(Constants.GITHUB_USER, Constants.GITHUB_REPO); - /*try { - //mpuThread.join(); + try { + mpuThread.join(); } catch (InterruptedException e) { Log.e(Constants.LOG.MATAG, Constants.LOG.JOIN_ERROR); - } finally {*/ + } finally { //setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD); final FloatingActionsMenu mainButton = (FloatingActionsMenu) findViewById(R.id.menu_fab); @@ -109,18 +111,26 @@ protected void onCreate(Bundle savedInstanceState) { final FloatingActionButton closeButton = (FloatingActionButton) findViewById(R.id.close); final FloatingActionButton settingsButton = (FloatingActionButton) findViewById(R.id.settings); final FloatingActionButton refreshButton = (FloatingActionButton) findViewById(R.id.update); - /*final PieChart chart = (PieChart) findViewById(R.id.chart); + //final PieChart chart = (PieChart) findViewById(R.id.chart); + mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(getString(R.string.BTCP) + MARKET_PRICE_USD); - setSupportActionBar(toolbar);*/ + setSupportActionBar(toolbar); //getSupportActionBar().setDisplayHomeAsUpEnabled(true); - viewPager = (ViewPager) findViewById(R.id.viewpager); - setupViewPager(viewPager); + viewPager = (ViewPager) findViewById(R.id.viewContainer); + viewPager.setAdapter(mSectionsPagerAdapter); + //setupViewPager(viewPager); tabLayout = (TabLayout) findViewById(R.id.tabs); - tabLayout.setupWithViewPager(viewPager); - setupTabIcons(); + setupTabs(tabLayout); + viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); + tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); + //tabLayout.setupWithViewPager(viewPager); + //setupTabIcons(); + + //viewPager.invalidate(); /*final ViewPager pager = (ViewPager) findViewById(R.id.tabs);*/ //pager.setAdapter(getSupportFragmentManager()); @@ -138,7 +148,7 @@ protected void onCreate(Bundle savedInstanceState) { refreshButton.setOnClickListener(this); ck.checkForUpdates(this, getString(R.string.updateAvailable), getString(R.string.updateDescrip), getString(R.string.updateNow), getString(R.string.updateLater), getString(R.string.updatePage)); - //} + } } else { new MaterialDialog.Builder(this) .title(R.string.noConnectionTitle) @@ -201,10 +211,10 @@ public void run() { rdThread.start(); } - private void initT() { + /*private void initT() { TableRow masterRow = (TableRow) findViewById(R.id.masterRow); TABLE_PARAMS = masterRow.getLayoutParams(); - } + }*/ private void createPieChart(final PieChart destinationChart) { Thread pieChartThread = new Thread() { @@ -244,7 +254,7 @@ public void run() { } } - private void createTable(final TableLayout destinationTable) { + /*private void createTable(final TableLayout destinationTable) { Thread tableThread = new Thread() { public void run() { Log.d(Constants.LOG.MATAG, Constants.LOG.LOADING_TABLE); @@ -301,7 +311,7 @@ public void run() { tableThread.setName("table_thread"); tableThread.start(); } - } + }*/ /** * Based on: https://stackoverflow.com/questions/8911356/whats-the-best-practice-to-round-a-float-to-2-decimals @@ -360,15 +370,15 @@ private void closeApp() { this.onBackPressed(); } - private void setupViewPager(ViewPager viewPager) { + /*private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new PoolsView(), "ONE"); adapter.addFragment(new TwoFragment(), "TWO"); //adapter.addFragment(new ThreeFragment(), "THREE"); viewPager.setAdapter(adapter); - } + }*/ - class ViewPagerAdapter extends FragmentPagerAdapter { + /*class ViewPagerAdapter extends FragmentPagerAdapter { private final List mFragmentList = new ArrayList<>(); private final List mFragmentTitleList = new ArrayList<>(); @@ -395,11 +405,48 @@ public void addFragment(Fragment fragment, String title) { public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } - } + }*/ private void setupTabIcons() { tabLayout.getTabAt(0).setIcon(R.drawable.ic_poll_white_24dp); tabLayout.getTabAt(1).setIcon(R.drawable.ic_attach_money_white_24dp); } + + private void setupTabs(TabLayout destinationTab) { + destinationTab.addTab(destinationTab.newTab().setText("Tab 1 - test").setIcon(R.drawable.ic_poll_white_24dp)); + destinationTab.addTab(destinationTab.newTab().setText("Tab 2 - test").setIcon(R.drawable.ic_attach_money_white_24dp)); + } + + /** + * A {@link FragmentPagerAdapter} that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + public class SectionsPagerAdapter extends FragmentPagerAdapter { + + public SectionsPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + // getItem is called to instantiate the fragment for the given page. + // Return a PlaceholderFragment (defined as a static inner class below). + //return PlaceholderFragment.newInstance(position + 1); + switch (position) { + case 0: + return new Tab1PoolsChart(); + case 1: + return new Tab2BTCChart(); + default: + return null; + } + } + + @Override + public int getCount() { + // Show 3 total pages. + return 2; + } + } } diff --git a/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java b/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java deleted file mode 100644 index 902dc22..0000000 --- a/app/src/main/java/javinator9889/bitcoinpools/OneFragment.java +++ /dev/null @@ -1,27 +0,0 @@ -package javinator9889.bitcoinpools; - -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - * Created by Javinator9889 on 27/01/2018. - * Based on: https://www.androidhive.info/2015/09/android-material-design-working-with-tabs/ - */ - -public class OneFragment extends Fragment { - public OneFragment() {} - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_one, container, false); - } -} diff --git a/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java b/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java deleted file mode 100644 index 187881c..0000000 --- a/app/src/main/java/javinator9889/bitcoinpools/TwoFragment.java +++ /dev/null @@ -1,26 +0,0 @@ -package javinator9889.bitcoinpools; - -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - * Created by Javinator9889 on 27/01/2018. - */ - -public class TwoFragment extends Fragment { - public TwoFragment() {} - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_one, container, false); - } -} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 31155fc..2f641ef 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,31 +8,60 @@ android:layout_centerHorizontal="true"> + android:fitsSystemWindows="true" + android:paddingTop="8dp" + android:background="@color/colorPrimary" + app:expanded="false" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + app:title="@string/app_name"> + + + android:background="@color/colorPrimary" + app:tabSelectedTextColor="#FAFAFAFA"> + + + + + android:layout_height="0dp" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/appbar" /> + +