PixelDroid-App-Android/app/src/main/java/com/h/pixeldroid/MainActivity.kt

106 lines
3.5 KiB
Kotlin
Raw Normal View History

2020-02-28 17:08:54 +01:00
package com.h.pixeldroid
import android.content.Intent
2020-02-28 17:08:54 +01:00
import android.os.Bundle
import android.view.MenuItem
import android.widget.Button
import android.widget.ImageButton
import android.widget.LinearLayout
import androidx.annotation.NonNull
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.Fragment
import com.google.android.material.navigation.NavigationView
import com.h.pixeldroid.fragments.HomeFragment
import com.h.pixeldroid.fragments.ProfileFragment
import com.h.pixeldroid.motions.OnSwipeListener
2020-02-28 17:08:54 +01:00
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
private lateinit var drawerLayout: DrawerLayout
2020-02-28 17:08:54 +01:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mainLinearLayout : LinearLayout = findViewById(R.id.main_linear_layout)
val homepageButton : ImageButton = findViewById(R.id.activity_main_home_btn)
val accountButton : ImageButton = findViewById(R.id.activity_main_account_btn)
homepageButton.setOnClickListener {
launchFragment(HomeFragment())
}
accountButton.setOnClickListener {
launchFragment(ProfileFragment())
}
// Setup the drawer
drawerLayout = findViewById(R.id.drawer_layout)
val navigationView: NavigationView = findViewById(R.id.nav_view)
navigationView.setNavigationItemSelectedListener(this)
val onSwipeListener = object: OnSwipeListener(this) {
override fun onSwipeRight() = swipeRight()
override fun onSwipeLeft() = swipeLeft()
}
mainLinearLayout.setOnTouchListener(onSwipeListener)
// default fragment that displays when we open the app
launchFragment(HomeFragment())
}
private fun swipeRight() {
// TODO: correctly switch between tabs
drawerLayout.openDrawer(GravityCompat.START)
}
private fun swipeLeft() {
// TODO: correctly switch between tabs
supportFragmentManager.beginTransaction()
.setCustomAnimations(R.anim.slide_from_right, R.anim.slide_to_left)
.replace(R.id.fragment_container, ProfileFragment()).commit()
}
/*
Launches the given fragment and put it as the current "activity"
*/
private fun launchFragment(fragment: Fragment) {
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit()
}
/*
When clicking in the drawer menu, go to the corresponding activity
*/
override fun onNavigationItemSelected(@NonNull item: MenuItem): Boolean {
when (item.itemId){
R.id.nav_settings -> launchActivity(SettingsActivity())
R.id.nav_account -> launchFragment(ProfileFragment())
}
drawerLayout.closeDrawer(GravityCompat.START)
return true
}
/*
2020-03-08 20:41:01 +01:00
Launches the given activity and put it as the current one
*/
private fun launchActivity(activity: AppCompatActivity) {
val intent = Intent(this, activity::class.java)
startActivity(intent)
}
/*
2020-03-08 20:41:01 +01:00
Closes the drawer if we are clicking behind it
*/
override fun onBackPressed() {
if(drawerLayout.isDrawerOpen(GravityCompat.START)){
drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
2020-02-28 17:08:54 +01:00
}
2020-02-28 17:08:54 +01:00
}