From abd7a44874cfe9d892c4d78888f0455fa20e603e Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Thu, 21 May 2020 07:35:09 +0200 Subject: [PATCH] Create a basic tabbed settings activity Tabs: Apps, Theme, Launcher --- .../finnmglas/launcher/SettingsActivity.kt | 13 +- .../launcher/ui/main/PageViewModel.kt | 19 + .../launcher/ui/main/SectionsPagerAdapter.kt | 32 ++ app/src/main/res/layout/activity_settings.xml | 340 ++---------------- app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/dimens.xml | 8 + app/src/main/res/values/icons.xml | 1 + app/src/main/res/values/strings.xml | 4 + app/src/main/res/values/styles.xml | 8 + 9 files changed, 126 insertions(+), 305 deletions(-) create mode 100644 app/src/main/java/com/finnmglas/launcher/ui/main/PageViewModel.kt create mode 100644 app/src/main/java/com/finnmglas/launcher/ui/main/SectionsPagerAdapter.kt create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt b/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt index 0a2f984..bfcf4a4 100644 --- a/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/SettingsActivity.kt @@ -8,20 +8,27 @@ import android.provider.Settings import android.view.View import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity +import androidx.viewpager.widget.ViewPager +import com.finnmglas.launcher.ui.main.SectionsPagerAdapter +import com.google.android.material.tabs.TabLayout -//TODO Make Settings scrollable as soon as more are added - class SettingsActivity : AppCompatActivity() { /** Activity Lifecycle functions */ + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setContentView(R.layout.activity_settings) window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - setContentView(R.layout.activity_settings) + val sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager) + val viewPager: ViewPager = findViewById(R.id.view_pager) + viewPager.adapter = sectionsPagerAdapter + val tabs: TabLayout = findViewById(R.id.tabs) + tabs.setupWithViewPager(viewPager) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/finnmglas/launcher/ui/main/PageViewModel.kt b/app/src/main/java/com/finnmglas/launcher/ui/main/PageViewModel.kt new file mode 100644 index 0000000..584ab43 --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/ui/main/PageViewModel.kt @@ -0,0 +1,19 @@ +package com.finnmglas.launcher.ui.main + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.Transformations +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider + +class PageViewModel : ViewModel() { + + private val _index = MutableLiveData() + val text: LiveData = Transformations.map(_index) { + "Tab $it" + } + + fun setIndex(index: Int) { + _index.value = index + } +} \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/ui/main/SectionsPagerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/ui/main/SectionsPagerAdapter.kt new file mode 100644 index 0000000..be37cf4 --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/ui/main/SectionsPagerAdapter.kt @@ -0,0 +1,32 @@ +package com.finnmglas.launcher.ui.main + +import android.content.Context +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import com.finnmglas.launcher.* + +private val TAB_TITLES = arrayOf( + R.string.settings_tab_app, + R.string.settings_tab_theme, + R.string.settings_tab_launcher +) + +/** Returns the fragment corresponding to the selected tab.*/ +class SectionsPagerAdapter(private val context: Context, fm: FragmentManager) + : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return when (position){ + else -> Fragment() + } + } + + override fun getPageTitle(position: Int): CharSequence? { + return context.resources.getString(TAB_TITLES[position]) + } + + override fun getCount(): Int { + return 3 + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index e2a5ee8..81ea85d 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,320 +1,56 @@ - + - + android:background="@color/colorPrimaryDark" + android:theme="@style/AppTheme.AppBarOverlay"> - - - - - - - - -