Implemented view and functionality for changing position (gravity) of the widget

This commit is contained in:
denizk0461
2023-05-16 10:00:33 +02:00
parent 7b598903ae
commit a1cab07ea9
3 changed files with 173 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\kduez\.android\avd\Pixel_6_A13_.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-05-16T07:07:20.707046500Z" />
</component>
</project>
@@ -2,8 +2,11 @@ package com.denizd.textbasic.fragment
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.ImageButton
import android.widget.TextView import android.widget.TextView
import androidx.annotation.ColorInt
import com.denizd.textbasic.BuildConfig import com.denizd.textbasic.BuildConfig
import com.denizd.textbasic.R import com.denizd.textbasic.R
import com.denizd.textbasic.databinding.FragmentSettingsNewBinding import com.denizd.textbasic.databinding.FragmentSettingsNewBinding
@@ -233,6 +236,23 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
} }
} }
// --- widget position (gravity) --- //
val gravityButtons = listOf(
binding.buttonTopLeft, binding.buttonTopMiddle, binding.buttonTopRight,
binding.buttonMiddleLeft, binding.buttonMiddleMiddle, binding.buttonMiddleRight,
binding.buttonBottomLeft, binding.buttonBottomMiddle, binding.buttonBottomRight
)
setGravityButtons(gravityButtons, storage.getWidgetGravity())
gravityButtons.forEachIndexed { index, button ->
button.setOnClickListener {
storage.setWidgetGravity(index)
setGravityButtons(gravityButtons, index)
updatePreview()
}
}
/* /*
* Display the app's version as set in the build.gradle. Also display if the app is a * Display the app's version as set in the build.gradle. Also display if the app is a
* development version, and if so, display build timestamp. * development version, and if so, display build timestamp.
@@ -244,6 +264,20 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) {
updatePreview() updatePreview()
} }
private fun setGravityButtons(buttons: List<ImageButton>, gravity: Int) {
val transparent = context.getColor(android.R.color.transparent)
buttons.forEach { button ->
button.setBackgroundColor(transparent)
}
val typedValue = TypedValue()
context.theme.resolveAttribute(R.attr.colorSecContainer, typedValue, true)
@ColorInt val colorTertiary = typedValue.data
buttons[gravity].setBackgroundColor(colorTertiary)
}
/** /**
* Retrieves which button to check for the highlight, and sets the visibility of the intensity * Retrieves which button to check for the highlight, and sets the visibility of the intensity
* modifying layout accordingly. * modifying layout accordingly.
@@ -675,6 +675,128 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<!-- widget position -->
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/mono_semibold_italic"
android:text="@string/settings_widget_position_title"
android:textSize="16sp" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/gravity_buttons_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="12dp"
android:layout_gravity="center_horizontal">
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rowCount="3"
android:columnCount="3">
<ImageButton
android:id="@+id/button_top_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_top_left"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_tl"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_top_middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_top"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_tc"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_top_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_top_right"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_tr"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_middle_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_left"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_cl"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_middle_middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dot"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_cc"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_middle_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_right"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_cr"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_bottom_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_bottom_left"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_bl"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_bottom_middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_bottom"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_bc"
android:padding="@dimen/orientation_button_padding"/>
<ImageButton
android:id="@+id/button_bottom_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_bottom_right"
android:background="@android:color/transparent"
android:contentDescription="@string/position_button_content_desc_br"
android:padding="@dimen/orientation_button_padding"/>
</GridLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>