浏览代码

chore: Options fragment design and BaseFragment implementation

beautusg 7 年之前
父节点
当前提交
f13b8133a7

+ 35 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/BaseFragment.kt

@@ -0,0 +1,35 @@
+package com.sduduzog.slimlauncher.ui
+
+import android.os.Build
+import android.util.TypedValue
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import com.sduduzog.slimlauncher.R
+
+abstract class BaseFragment: Fragment() {
+
+    abstract fun getFragmentView(): View
+
+
+    override fun onResume() {
+        super.onResume()
+        // When the Fragment resumes, check the theme and set the status bar color accordingly.
+        val settings = context!!.getSharedPreferences(getString(R.string.prefs_settings), AppCompatActivity.MODE_PRIVATE)
+        val active = settings.getInt(getString(R.string.prefs_settings_key_theme), 0)
+
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            when (active) {
+                0, 3, 5 -> {
+                    val flags = activity!!.window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+                    getFragmentView().systemUiVisibility = flags
+                }
+
+            }
+            val value = TypedValue()
+            context!!.theme.resolveAttribute(R.attr.colorPrimary, value, true)
+            activity!!.window.statusBarColor = value.data
+        }
+    }
+}

+ 5 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/MainFragment.kt

@@ -9,14 +9,16 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.core.app.ActivityOptionsCompat
+import androidx.navigation.Navigation
 import com.sduduzog.slimlauncher.MainActivity
 import com.sduduzog.slimlauncher.R
+import com.sduduzog.slimlauncher.ui.BaseFragment
 import kotlinx.android.synthetic.main.main_fragment2.*
 import java.text.SimpleDateFormat
 import java.util.*
 
 
-class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListener {
+class MainFragment : BaseFragment(), MainActivity.OnBackPressedListener {
 
     private lateinit var receiver: BroadcastReceiver
 
@@ -29,6 +31,8 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
         super.onActivityCreated(savedInstanceState)
         main_fragment_list.adapter = HomeAppsAdapter(this)
         setEventListeners()
+
+        main_fragment_options.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_mainFragment_to_optionsFragment))
     }
 
     override fun onStart() {

+ 17 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt

@@ -0,0 +1,17 @@
+package com.sduduzog.slimlauncher.ui.options
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.sduduzog.slimlauncher.R
+import com.sduduzog.slimlauncher.ui.BaseFragment
+import kotlinx.android.synthetic.main.options_fragment.*
+
+class OptionsFragment : BaseFragment() {
+    override fun getFragmentView(): View = options_fragment
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        return inflater.inflate(R.layout.options_fragment, container, false)
+    }
+}

+ 99 - 0
app/src/main/res/layout/options_fragment.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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"
+    android:id="@+id/options_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".ui.options.OptionsFragment">
+
+    <TextView
+        android:id="@+id/textView5"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/_16sdp"
+        android:layout_marginLeft="@dimen/_16sdp"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="@string/main_fragment_options"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_36ssp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/textView6"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginLeft="16dp"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="@string/options_fragment_about_slim"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toTopOf="@+id/textView9"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/textView5"
+        app:layout_constraintVertical_bias="0.17000002"
+        app:layout_constraintVertical_chainStyle="packed" />
+
+    <TextView
+        android:id="@+id/textView9"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="@string/options_fragment_device_settings"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toTopOf="@+id/textView10"
+        app:layout_constraintStart_toStartOf="@+id/textView6"
+        app:layout_constraintTop_toBottomOf="@+id/textView6" />
+
+    <TextView
+        android:id="@+id/textView10"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="@string/options_fragment_change_theme"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toTopOf="@+id/textView11"
+        app:layout_constraintStart_toStartOf="@+id/textView9"
+        app:layout_constraintTop_toBottomOf="@+id/textView9" />
+
+    <TextView
+        android:id="@+id/textView11"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="@string/options_fragment_choose_time_format"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toTopOf="@+id/textView17"
+        app:layout_constraintStart_toStartOf="@+id/textView10"
+        app:layout_constraintTop_toBottomOf="@+id/textView10" />
+
+    <TextView
+        android:id="@+id/textView17"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:text="Hide Status Bar"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toTopOf="@+id/textView19"
+        app:layout_constraintStart_toStartOf="@+id/textView11"
+        app:layout_constraintTop_toBottomOf="@+id/textView11" />
+
+    <TextView
+        android:id="@+id/textView19"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/_32sdp"
+        android:layout_marginBottom="32dp"
+        android:text="@string/options_fragment_customise_apps"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/_24ssp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="@+id/textView17"
+        app:layout_constraintTop_toBottomOf="@+id/textView17" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 8 - 0
app/src/main/res/navigation/nav_graph.xml

@@ -20,6 +20,9 @@
         <action
             android:id="@+id/action_mainFragment_to_aboutFragment"
             app:destination="@id/aboutFragment" />
+        <action
+            android:id="@+id/action_mainFragment_to_optionsFragment"
+            app:destination="@id/optionsFragment" />
     </fragment>
     <fragment
         android:id="@+id/settingsFragment"
@@ -63,5 +66,10 @@
         android:name="com.sduduzog.slimlauncher.ui.main.notes.NoteFragment"
         android:label="note_fragment"
         tools:layout="@layout/note_fragment" />
+    <fragment
+        android:id="@+id/optionsFragment"
+        android:name="com.sduduzog.slimlauncher.ui.options.OptionsFragment"
+        android:label="options_fragment"
+        tools:layout="@layout/options_fragment" />
 
 </navigation>

+ 5 - 0
app/src/main/res/values/strings.xml

@@ -85,6 +85,11 @@
     <string name="main_admin_title">Allow Slim to lock your device</string>
     <string name="main_admin_message">Double tapping on the free space on your home screen locks your device instantly.</string>
     <string name="main_fragment_options">Options</string>
+    <string name="options_fragment_about_slim">About Slim</string>
+    <string name="options_fragment_device_settings">Device Settings</string>
+    <string name="options_fragment_change_theme">Change Theme</string>
+    <string name="options_fragment_choose_time_format">Choose Time Format</string>
+    <string name="options_fragment_customise_apps">Customise Apps</string>
 
 
 </resources>