Browse Source

Add bottom nav

connman
adityapk00 6 years ago
parent
commit
36d925dd30
  1. 18
      app/src/main/AndroidManifest.xml
  2. 113
      app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt
  3. 2
      app/src/main/res/drawable/layout_bg.xml
  4. 20
      app/src/main/res/drawable/layout_border.xml
  5. 32
      app/src/main/res/layout/activity_main.xml
  6. 46
      app/src/main/res/layout/content_main.xml
  7. 1
      app/src/main/res/menu/menu_main.xml
  8. 13
      app/src/main/res/menu/menu_nav.xml
  9. 3
      app/src/main/res/values/dimens.xml
  10. 4
      app/src/main/res/values/strings.xml

18
app/src/main/AndroidManifest.xml

@ -23,14 +23,6 @@
</activity>
<activity android:name=".QrReaderActivity">
</activity>
<activity
android:name=".QrCodeReaderActivity"
android:label="@string/title_activity_qr_code_reader"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.adityapk.zcash.zqwandroid.SendActivity"/>
</activity>
<activity
android:name=".TxDetailsActivity"
android:label="@string/title_activity_tx_details"
@ -52,16 +44,6 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ScrollingActivity"
android:label="@string/title_activity_scrolling"
android:parentActivityName=".MainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.adityapk.zcash.zqwandroid.MainActivity"/>
</activity>
<activity
android:name=".ReceiveActivity"
android:label="@string/title_activity_receive"

113
app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt

@ -43,28 +43,16 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
// When creating, clear all the data first
setMainStatus("")
fab1.setOnClickListener {view ->
val intent = Intent(this, ReceiveActivity::class.java)
startActivity(intent)
closeFABMenu()
}
fab2.setOnClickListener {
val intent = Intent(this, SendActivity::class.java)
startActivity(intent)
closeFABMenu()
}
fab.setOnClickListener {
if(!isFABOpen){ showFABMenu() } else { closeFABMenu() }
}
btnConnect.setOnClickListener {
val intent = Intent(this, QrReaderActivity::class.java)
intent.putExtra("REQUEST_CODE", QrReaderActivity.REQUEST_CONNDATA)
startActivityForResult(intent, QrReaderActivity.REQUEST_CONNDATA)
}
swiperefresh.setOnRefreshListener {
makeAPICalls()
}
makeConnection()
DataModel.makeAPICalls()
@ -73,6 +61,25 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
.format(DataModel.mainResponseData?.zecprice)}", Toast.LENGTH_LONG).show()
}
bottomNav.setOnNavigationItemSelectedListener {
when(it.itemId) {
R.id.action_send -> {
val intent = Intent(this, SendActivity::class.java)
startActivity(intent)
return@setOnNavigationItemSelectedListener true
}
R.id.action_bal -> true
R.id.action_recieve -> {
val intent = Intent(this, ReceiveActivity::class.java)
startActivity(intent)
return@setOnNavigationItemSelectedListener true
}
else -> {
return@setOnNavigationItemSelectedListener false
}
}
}
updateUI()
}
@ -122,16 +129,24 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
@SuppressLint("SetTextI18n")
private fun updateUI() {
runOnUiThread {
bottomNav.menu.findItem(R.id.action_bal).isChecked = true
when (connStatus) {
ConnectionStatus.DISCONNECTED -> {
setMainStatus("No Connection")
scrollViewTxns.visibility = ScrollView.GONE
layoutConnect.visibility = ConstraintLayout.VISIBLE
swiperefresh.isRefreshing = false
Handler().post {
run {
addPastTransactions(DataModel.transactions)
}
}
}
ConnectionStatus.CONNECTING -> {
setMainStatus("Connecting...")
scrollViewTxns.visibility = ScrollView.VISIBLE
scrollViewTxns.visibility = ScrollView.GONE
layoutConnect.visibility = ConstraintLayout.GONE
swiperefresh.isRefreshing = true
}
ConnectionStatus.CONNECTED -> {
scrollViewTxns.visibility = ScrollView.VISIBLE
@ -148,10 +163,10 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
txtMainBalance.text = "ZEC " + balText.substring(0, balText.length - 4)
balanceSmall.text = balText.substring(balText.length - 4, balText.length)
txtMainBalanceUSD.text = "$ " + DecimalFormat("#,##0.00").format(bal * zPrice)
Handler().post {
run {
addPastTransactions(DataModel.transactions)
}
}
Handler().post {
run {
addPastTransactions(DataModel.transactions)
}
}
}
@ -160,32 +175,24 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
}
private fun addPastTransactions(txns: List<DataModel.TransactionItem>?) {
txList.removeAllViewsInLayout()
val fragTx = supportFragmentManager.beginTransaction()
// If there are no transactions, just return (don't add any headers either)
if (txns.isNullOrEmpty())
return
for (fr in supportFragmentManager.fragments) {
fragTx.remove(fr)
}
// If there are no transactions, make sure to commit the Tx, so existing items are removed, and just return
if (txns.isNullOrEmpty()) {
fragTx.commit()
val addTitle = fun(title: String) {
// Add the "Past Transactions" TextView
val tv = TextView(this)
tv.text = title
val params = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
params.setMargins(16, 16, 16, 16)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f)
tv.layoutParams = params
tv.setTypeface(null, Typeface.BOLD)
txList.addView(tv)
swiperefresh.isRefreshing = false
return
}
// Split all the transactions into confirmations = 0 and confirmations > 0
// Unconfirmed first
val unconfirmed = txns.filter { t -> t.confirmations == 0L }
if (unconfirmed.isNotEmpty()) {
//addTitle("Recent Transactions")
val fragTx = supportFragmentManager.beginTransaction()
for (tx in unconfirmed) {
fragTx.add(
txList.id ,
@ -193,15 +200,11 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
"tag1"
)
}
fragTx.commit()
}
// Add all confirmed transactions
val confirmed = txns.filter { t -> t.confirmations > 0L }
if (confirmed.isNotEmpty()) {
addTitle("Recent Transactions")
val fragTx = supportFragmentManager.beginTransaction()
var oddeven = "odd"
for (tx in confirmed) {
fragTx.add(
@ -211,24 +214,10 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
)
oddeven = if (oddeven == "odd") "even" else "odd"
}
fragTx.commit()
}
}
private var isFABOpen = false
private fun showFABMenu() {
isFABOpen = true
fab1.animate().translationY(-resources.getDimension(R.dimen.standard_55))
fab2.animate().translationY(-resources.getDimension(R.dimen.standard_105))
fab3.animate().translationY(-resources.getDimension(R.dimen.standard_155))
}
fragTx.commit()
private fun closeFABMenu() {
isFABOpen = false
fab1.animate().translationY(0f)
fab2.animate().translationY(0f)
fab3.animate().translationY(0f)
swiperefresh.isRefreshing = false
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@ -247,6 +236,12 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
startActivity(intent)
return true
}
R.id.action_refresh -> {
swiperefresh.isRefreshing = true
makeAPICalls()
return true
}
else -> super.onOptionsItemSelected(item)
}
}

2
app/src/main/res/drawable/layout_bg.xml

@ -4,4 +4,4 @@
<!-- <stroke android:width="3dp" android:color="#B1BCBE" /> -->
<corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
</shape>

20
app/src/main/res/drawable/layout_border.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#E3E3E3" />
<solid android:color="#FFF" />
</shape>
</item>
<item android:top="1dp">
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFF" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>

32
app/src/main/res/layout/activity_main.xml

@ -23,36 +23,4 @@
<include layout="@layout/content_main"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:srcCompat="@android:drawable/ic_btn_speak_now" app:backgroundTint="@color/colorAccent"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:srcCompat="@android:drawable/ic_menu_camera" app:backgroundTint="@color/colorAccent"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:srcCompat="@android:drawable/arrow_down_float" app:backgroundTint="@color/colorAccent"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_menu_add" app:backgroundTint="@color/colorAccent"/>
</android.support.design.widget.CoordinatorLayout>

46
app/src/main/res/layout/content_main.xml

@ -60,20 +60,35 @@
app:layout_constraintEnd_toEndOf="parent" android:id="@+id/imageView3"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="125dp"/>
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" android:id="@+id/scrollViewTxns"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp"
android:fillViewport="true" android:clipToPadding="false"
android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/imageView3">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txList" android:orientation="vertical"/>
</ScrollView>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView3" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/bottomNav">
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" android:id="@+id/scrollViewTxns"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp"
android:fillViewport="true" android:clipToPadding="false"
android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="parent">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txList" android:orientation="vertical">
<TextView
android:text="Past Transactions"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:id="@+id/textView2" android:textStyle="bold"
android:textSize="18sp" android:padding="16dp"/>
</LinearLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@+id/imageView3"
android:layout_height="364dp" app:layout_constraintTop_toBottomOf="@+id/imageView3"
android:layout_marginBottom="32dp" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="32dp" android:layout_marginStart="8dp" android:layout_marginEnd="8dp"
@ -99,4 +114,11 @@
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/imageView5"/>
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.BottomNavigationView
android:layout_width="match_parent"
android:layout_height="0dp" app:menu="@menu/menu_nav"
android:id="@+id/bottomNav"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintBottom_toBottomOf="parent" android:background="@drawable/layout_border"/>
</android.support.constraint.ConstraintLayout>

1
app/src/main/res/menu/menu_main.xml

@ -6,4 +6,5 @@
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
<item android:title="Refresh" android:id="@+id/action_refresh"/>
</menu>

13
app/src/main/res/menu/menu_nav.xml

@ -0,0 +1,13 @@
<menu 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"
tools:context="com.adityapk.zcash.zqwandroid.MainActivity">
<item android:id="@+id/action_send"
android:title="Send"
android:orderInCategory="300"
app:showAsAction="never" android:icon="@android:drawable/ic_menu_send"/>
<item android:title="Balance" android:id="@+id/action_bal" android:icon="@android:drawable/ic_dialog_dialer"
android:orderInCategory="200"/>
<item android:title="Recieve" android:id="@+id/action_recieve" android:icon="@android:drawable/stat_sys_download"
android:orderInCategory="100"/>
</menu>

3
app/src/main/res/values/dimens.xml

@ -6,4 +6,7 @@
<dimen name="standard_55">65dp</dimen>
<dimen name="standard_105">125dp</dimen>
<dimen name="standard_155">185dp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

4
app/src/main/res/values/strings.xml

@ -83,4 +83,8 @@
<string name="pref_ringtone_silent">Silent</string>
<string name="pref_title_vibrate">Vibrate</string>
<string name="title_activity_main2">Main2Activity</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
<string name="title_notifications">Notifications</string>
</resources>

Loading…
Cancel
Save