diff --git a/app/build.gradle b/app/build.gradle index f9877d8..39c368c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 23 targetSdk 33 versionCode 6 - versionName "1.3.0" + versionName "2.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -52,4 +52,6 @@ dependencies { testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + + implementation "com.github.skydoves:colorpickerview:2.2.4" } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/fragment/BaseFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/BaseFragment.kt index 4d28c80..19cfbb5 100644 --- a/app/src/main/java/com/denizd/textbasic/fragment/BaseFragment.kt +++ b/app/src/main/java/com/denizd/textbasic/fragment/BaseFragment.kt @@ -3,6 +3,7 @@ package com.denizd.textbasic.fragment import android.content.Context import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment +import com.denizd.textbasic.sheet.AppSheet open class BaseFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { @@ -14,4 +15,13 @@ open class BaseFragment(@LayoutRes layoutId: Int) : Fragment(layoutId) { } override fun getContext(): Context = _context + + /** + * Opens a bottom sheet. Sheet must be a subclass of [com.denizd.textbasic.sheet.AppSheet]. + * + * @param sheet element that will be displayed + */ + protected fun openBottomSheet(sheet: AppSheet) { + sheet.show(childFragmentManager, sheet.javaClass.simpleName) + } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/fragment/GuideFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/GuideFragment.kt index adb3b67..1f4d2cf 100644 --- a/app/src/main/java/com/denizd/textbasic/fragment/GuideFragment.kt +++ b/app/src/main/java/com/denizd/textbasic/fragment/GuideFragment.kt @@ -2,17 +2,10 @@ package com.denizd.textbasic.fragment import android.os.Bundle import com.denizd.textbasic.R -import com.google.android.material.transition.MaterialSharedAxis class GuideFragment : BaseFragment(R.layout.fragment_guide) { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - - exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) - - enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/fragment/SettingsFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/SettingsFragment.kt deleted file mode 100644 index 85caad8..0000000 --- a/app/src/main/java/com/denizd/textbasic/fragment/SettingsFragment.kt +++ /dev/null @@ -1,286 +0,0 @@ -package com.denizd.textbasic.fragment - -import android.graphics.Color -import android.os.Bundle -import android.util.TypedValue -import android.view.View -import android.view.ViewGroup -import android.widget.* -import androidx.annotation.ColorInt -import com.denizd.textbasic.util.ColorTransparentUtils -import com.denizd.textbasic.db.QuoteStorage -import com.denizd.textbasic.R -import com.denizd.textbasic.databinding.FragmentSettingsBinding -import com.denizd.textbasic.util.viewBinding -import com.denizd.textbasic.widget.CanvasText -import com.google.android.material.transition.MaterialSharedAxis -import java.lang.reflect.Field -import kotlin.math.abs - - -class SettingsFragment : BaseFragment(R.layout.fragment_settings) { - - private lateinit var storage: QuoteStorage - private lateinit var gravityButtons: Array - - private var widgetGravity = 4 - private var backgroundIndex = 0 - private var typefaceIndex = 0 - private var typefaceStyleIndex = 0 - - private val binding: FragmentSettingsBinding by viewBinding(FragmentSettingsBinding::bind) - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) - - enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - -// binding.animationLl.animateLayoutChanges(true) - - // TODO a lot of the buttons don't at all do what they're supposed to do! - - storage = QuoteStorage.getInstance(context) - - gravityButtons = arrayOf( - binding.buttonTopLeft, binding.buttonTopMiddle, binding.buttonTopRight, - binding.buttonMiddleLeft, binding.buttonMiddleMiddle, binding.buttonMiddleRight, - binding.buttonBottomLeft, binding.buttonBottomMiddle, binding.buttonBottomRight - ) - - widgetGravity = storage.getWidgetGravity() - - binding.textSizePicker.apply { - minValue = 1 - maxValue = 168 - descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS - wrapSelectorWheel = false - value = storage.getTextSize() - - setOnValueChangedListener { _, _, _ -> - updatePreview() - } - } - - binding.textTransparencyPicker.apply { - minValue = 0 - maxValue = 20 - val formatter = NumberPicker.Formatter { value -> - val temp = value * 5 - "" + temp - } - setFormatter(formatter) - descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS - wrapSelectorWheel = false - value = storage.getBackgroundTransparency() - - // Do not touch - fix for value on spinner not showing up until touched - val f: Field = NumberPicker::class.java.getDeclaredField("mInputText") - f.isAccessible = true - val inputText: EditText = f.get(binding.textTransparencyPicker) as EditText - inputText.filters = arrayOfNulls(0) - - setOnValueChangedListener { _, _, _ -> - updatePreview() - } - } - - binding.bgTransparencyPicker.apply { - minValue = 0 - maxValue = 20 - val formatter = NumberPicker.Formatter { value -> - val temp = value * 5 - "" + temp - } - setFormatter(formatter) - descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS - wrapSelectorWheel = false - value = storage.getBackgroundTransparency() - - // Do not touch - fix for value on spinner not showing up until touched - val f: Field = NumberPicker::class.java.getDeclaredField("mInputText") - f.isAccessible = true - val inputText: EditText = f.get(binding.bgTransparencyPicker) as EditText - inputText.filters = arrayOfNulls(0) - - setOnValueChangedListener { _, _, _ -> - updatePreview() - } - } - - binding.outlinePicker.apply { - minValue = 0 - maxValue = 64 - descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS - wrapSelectorWheel = false - value = storage.getOutlineSize().toInt() - - setOnValueChangedListener { _, _, _ -> - updatePreview() - } - } - - //////////////////////////////////////////// - - binding.switchInvert.apply { - isChecked = storage.isInvertedEnabled() - - setOnCheckedChangeListener { _, _ -> - updatePreview() - } - } - - binding.switchRandom.apply { - isChecked = storage.isOrderRandom() - - setOnCheckedChangeListener { _, _ -> - updatePreview() - } - } - - binding.typefaceToggleButton.apply { - typefaceIndex = storage.getTypefaceIndex() - - check(when (typefaceStyleIndex) { - 2 -> R.id.button3_monospace - 1 -> R.id.button2_serif - else -> R.id.button1_sansserif - }) - - addOnButtonCheckedListener { group, checkedId, isChecked -> - typefaceIndex = when (checkedId) { - R.id.button3_monospace -> 2 - R.id.button2_serif -> 1 - else -> 0 - } - updatePreview() - } - } - - binding.typefaceStyleToggleButton.apply { - typefaceStyleIndex = storage.getTypefaceStyle() - - check(when (typefaceStyleIndex) { - 3 -> R.id.button4_bold_italics - 2 -> R.id.button3_italics - 1 -> R.id.button2_bold - else -> R.id.button1_normal - }) - - addOnButtonCheckedListener { group, checkedId, isChecked -> - typefaceStyleIndex = when (checkedId) { - R.id.button4_bold_italics -> 3 - R.id.button3_italics -> 2 - R.id.button2_bold -> 1 - else -> 0 - } - updatePreview() - } - } - - binding.backgroundToggleButton.apply { - backgroundIndex = storage.getBackgroundType() - - check(when (backgroundIndex) { - 2 -> R.id.button3_shadow - 1 -> R.id.button2_outline - else -> R.id.button1_background - }) - - addOnButtonCheckedListener { group, checkedId, isChecked -> - backgroundIndex = when (checkedId) { - R.id.button3_shadow -> 2 - R.id.button2_outline -> 1 - else -> 0 - } - updatePreview() - } - } - - gravityButtons.forEachIndexed { index, button -> - button.setOnClickListener { - widgetGravity = index - setGravityButtons() - updatePreview() - } - } - - setGravityButtons() - updatePreview() - } - - private fun setGravityButtons() { - val transparent = context.getColor(android.R.color.transparent) - - gravityButtons.forEach { button -> - button.setBackgroundColor(transparent) - } - - val typedValue = TypedValue() - context.theme.resolveAttribute(R.attr.colorSecContainer, typedValue, true) - @ColorInt val colorTertiary = typedValue.data - - gravityButtons[widgetGravity].setBackgroundColor(colorTertiary) - } - - private fun updatePreview() { - - save() - - if (backgroundIndex == 0) { - binding.outlineTextview.visibility = View.GONE - binding.outlinePicker.visibility = View.GONE - } else { - binding.outlineTextview.visibility = View.VISIBLE - binding.outlinePicker.visibility = View.VISIBLE - if (backgroundIndex == 1) { - binding.outlineTextview.text = getString(R.string.thickness) - } else { - binding.outlineTextview.text = getString(R.string.intensity) - } - } - - binding.textPreviewBackgroundDark.setBackgroundColor( - Color.parseColor( - ColorTransparentUtils.transparentColor( - context.getColor(R.color.md_theme_dark_background), - if (storage.isInvertedEnabled()) { - abs((storage.getBackgroundTransparency() * 5)) - } else { - abs((storage.getBackgroundTransparency() * 5) - 100) - } - )) - ) - - val bitmap = CanvasText.drawText(context, true) - - binding.textPreview.setImageBitmap(bitmap) - } - - private fun save() { - storage.saveSettings( - textSize = binding.textSizePicker.value, - inverted = binding.switchInvert.isChecked, - textTransparency = binding.textTransparencyPicker.value, - bgTransparency = binding.bgTransparencyPicker.value, - random = binding.switchRandom.isChecked, - widgetPosition = widgetGravity, - backgroundType = backgroundIndex, - typefaceIndex = typefaceIndex, - typefaceStyleIndex = typefaceStyleIndex, - outlineSize = binding.outlinePicker.value.toFloat() - ) - } - - override fun onPause() { - save() - super.onPause() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt index cd01835..060ddb5 100644 --- a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt +++ b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt @@ -4,18 +4,22 @@ import android.annotation.SuppressLint import android.os.Bundle import android.util.TypedValue import android.view.View +import android.view.ViewGroup import android.widget.ImageButton import android.widget.PopupMenu import android.widget.TextView import androidx.annotation.ColorInt +import androidx.transition.TransitionManager import com.denizd.textbasic.BuildConfig import com.denizd.textbasic.R import com.denizd.textbasic.databinding.FragmentSettingsNewBinding import com.denizd.textbasic.db.QuoteStorage +import com.denizd.textbasic.sheet.TextSheet import com.denizd.textbasic.util.SettingsPreference import com.denizd.textbasic.util.viewBinding import com.denizd.textbasic.widget.CanvasText import com.google.android.material.button.MaterialButton +import java.util.Calendar class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { @@ -142,42 +146,6 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { SettingsPreference.TEXT_SIZE, ) - // --- text transparency --- // - binding.textTransparency.text = storage.getInt(SettingsPreference.TEXT_TRANSPARENCY, 100).toString() - - binding.buttonTextTransparencyDecreaseFast.setOnClickAction( - 0, - 100, - isPositive = false, - isFast = true, - binding.textTransparency, - SettingsPreference.TEXT_TRANSPARENCY, - ) - binding.buttonTextTransparencyDecrease.setOnClickAction( - 0, - 100, - isPositive = false, - isFast = false, - binding.textTransparency, - SettingsPreference.TEXT_TRANSPARENCY, - ) - binding.buttonTextTransparencyIncrease.setOnClickAction( - 0, - 100, - isPositive = true, - isFast = false, - binding.textTransparency, - SettingsPreference.TEXT_TRANSPARENCY, - ) - binding.buttonTextTransparencyIncreaseFast.setOnClickAction( - 0, - 100, - isPositive = true, - isFast = true, - binding.textTransparency, - SettingsPreference.TEXT_TRANSPARENCY, - ) - // --- highlight style --- // binding.toggleGroupHighlightStyle.apply { check(checkBackgroundIntensity(storage.getBackgroundType())) @@ -244,42 +212,6 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { SettingsPreference.HIGHLIGHT_INTENSITY, ) - // --- text highlight transparency --- // - binding.textHighlightTransparency.text = storage.getInt(SettingsPreference.HIGHLIGHT_TRANSPARENCY, 100).toString() - - binding.buttonHighlightTransparencyDecreaseFast.setOnClickAction( - 0, - 100, - isPositive = false, - isFast = true, - binding.textHighlightTransparency, - SettingsPreference.HIGHLIGHT_TRANSPARENCY, - ) - binding.buttonHighlightTransparencyDecrease.setOnClickAction( - 0, - 100, - isPositive = false, - isFast = false, - binding.textHighlightTransparency, - SettingsPreference.HIGHLIGHT_TRANSPARENCY, - ) - binding.buttonHighlightTransparencyIncrease.setOnClickAction( - 0, - 100, - isPositive = true, - isFast = false, - binding.textHighlightTransparency, - SettingsPreference.HIGHLIGHT_TRANSPARENCY, - ) - binding.buttonHighlightTransparencyIncreaseFast.setOnClickAction( - 0, - 100, - isPositive = true, - isFast = true, - binding.textHighlightTransparency, - SettingsPreference.HIGHLIGHT_TRANSPARENCY, - ) - // --- randomise order entries --- // binding.switchOrderRandom.apply { isChecked = storage.isOrderRandom() @@ -306,6 +238,21 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { } } + // Set click listener for showing licences dialogue + binding.buttonLicences.setOnClickListener { + openBottomSheet( + TextSheet().also { sheet -> + val bundle = Bundle() + bundle.putString("header", getString(R.string.sheet_licences_header)) + bundle.putString("content", getString( + R.string.sheet_licences_content, + Calendar.getInstance().get(Calendar.YEAR).toString(), + )) + sheet.arguments = bundle + } + ) + } + /* * 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. @@ -335,22 +282,28 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { * Retrieves which button to check for the highlight, and sets the visibility of the intensity * modifying layout accordingly. */ - private fun checkBackgroundIntensity(index: Int): Int = when (index) { - 0 -> { // background - binding.layoutIntensity.visibility = View.GONE - R.id.toggle_button_highlight_background - } - 1 -> { // stroke - binding.layoutIntensity.visibility = View.VISIBLE - R.id.toggle_button_highlight_stroke - } - 2 -> { // shadow - binding.layoutIntensity.visibility = View.VISIBLE - R.id.toggle_button_highlight_shadow - } - else -> { // none - binding.layoutIntensity.visibility = View.GONE - R.id.toggle_button_highlight_none + private fun checkBackgroundIntensity(index: Int): Int { + TransitionManager.beginDelayedTransition(binding.root.parent as ViewGroup) + return when (index) { + 0 -> { // background + binding.layoutIntensity.visibility = View.GONE + R.id.toggle_button_highlight_background + } + + 1 -> { // stroke + binding.layoutIntensity.visibility = View.VISIBLE + R.id.toggle_button_highlight_stroke + } + + 2 -> { // shadow + binding.layoutIntensity.visibility = View.VISIBLE + R.id.toggle_button_highlight_shadow + } + + else -> { // none + binding.layoutIntensity.visibility = View.GONE + R.id.toggle_button_highlight_none + } } } diff --git a/app/src/main/java/com/denizd/textbasic/sheet/AppSheet.kt b/app/src/main/java/com/denizd/textbasic/sheet/AppSheet.kt new file mode 100644 index 0000000..cb42152 --- /dev/null +++ b/app/src/main/java/com/denizd/textbasic/sheet/AppSheet.kt @@ -0,0 +1,34 @@ +package com.denizd.textbasic.sheet + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.LayoutRes +import com.google.android.material.bottomsheet.BottomSheetDialogFragment + +/** + * Bottom sheet super class providing common functionality. All bottom sheets should inherit from + * this. + * + * @param layoutId ID of the layout of the bottom sheet + */ +open class AppSheet(@LayoutRes private val layoutId: Int) : BottomSheetDialogFragment() { + + // Internal context object + private lateinit var _context: Context + + /** + * Get non-null context. Only valid after onAttach(). + */ + override fun getContext(): Context = _context + + override fun onAttach(context: Context) { + super.onAttach(context) + _context = context + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = + LayoutInflater.from(context).inflate(layoutId, container, false) +} \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/sheet/TextSheet.kt b/app/src/main/java/com/denizd/textbasic/sheet/TextSheet.kt new file mode 100644 index 0000000..18803b4 --- /dev/null +++ b/app/src/main/java/com/denizd/textbasic/sheet/TextSheet.kt @@ -0,0 +1,35 @@ +package com.denizd.textbasic.sheet + +import android.os.Bundle +import android.view.View +import com.denizd.textbasic.R +import com.denizd.textbasic.databinding.SheetTextBinding +import com.denizd.textbasic.util.viewBinding + +/** + * Bottom sheet used for displaying any sort of text to the user. + */ +class TextSheet : AppSheet(R.layout.sheet_text) { + + // View binding + private val binding: SheetTextBinding by viewBinding(SheetTextBinding::bind) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + // Retrieve headline for the window + val header = arguments?.getString("header") ?: "" + + // Check whether an ID has passed to use LiveData + val content = arguments?.getString("content") ?: "" + + binding.textHeader.text = header + binding.textContent.text = content + + // Set up a simple X button to be able to close the sheet + binding.buttonCancel.setOnClickListener { + // Do nothing and dismiss the sheet + dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/denizd/textbasic/util/SettingsPreference.kt b/app/src/main/java/com/denizd/textbasic/util/SettingsPreference.kt index 5f32d42..894b03c 100644 --- a/app/src/main/java/com/denizd/textbasic/util/SettingsPreference.kt +++ b/app/src/main/java/com/denizd/textbasic/util/SettingsPreference.kt @@ -5,7 +5,9 @@ import com.denizd.textbasic.db.QuoteStorage enum class SettingsPreference(val key: String) { TEXT_SIZE(QuoteStorage.KEY_TEXT_SIZE), TEXT_TRANSPARENCY(QuoteStorage.KEY_TEXT_TRANSPARENCY), - HIGHLIGHT_INTENSITY(QuoteStorage.KEY_OUTLINE_SIZE_NEW), // TODO + TEXT_COLOUR("textcolour"), + HIGHLIGHT_INTENSITY(QuoteStorage.KEY_OUTLINE_SIZE_NEW), HIGHLIGHT_TRANSPARENCY(QuoteStorage.KEY_BG_TRANSPARENCY), + HIGHLIGHT_COLOUR("highlightcolour"), ; } \ No newline at end of file diff --git a/app/src/main/res/drawable/cross.xml b/app/src/main/res/drawable/cross.xml new file mode 100644 index 0000000..844b6b6 --- /dev/null +++ b/app/src/main/res/drawable/cross.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml deleted file mode 100644 index 0b1d898..0000000 --- a/app/src/main/res/layout/fragment_settings.xml +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings_new.xml b/app/src/main/res/layout/fragment_settings_new.xml index 65dab02..7cfb9d5 100644 --- a/app/src/main/res/layout/fragment_settings_new.xml +++ b/app/src/main/res/layout/fragment_settings_new.xml @@ -5,7 +5,7 @@ android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".fragment.SettingsFragment"> + tools:context=".fragment.SettingsNewFragment"> - - - - - - - - - - - - - - - - - - - - - @@ -387,8 +316,7 @@ android:layout_marginEnd="8dp" android:orientation="vertical" android:paddingHorizontal="16dp" - android:paddingVertical="8dp" - android:animateLayoutChanges="true"> + android:paddingVertical="8dp"> - - - - - - - - - - - - - - - - - - - - - @@ -831,6 +687,34 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/nav_items.xml b/app/src/main/res/menu/nav_items.xml index 90c8c96..c646adb 100644 --- a/app/src/main/res/menu/nav_items.xml +++ b/app/src/main/res/menu/nav_items.xml @@ -10,11 +10,6 @@ android:icon="@drawable/book_outlined" android:title="@string/guide" android:enabled="true"/> - - Setze Position des Texts Sonstiges + + Siehe Lizenzen + Ressourcen, die diese App möglich gemacht haben + Lizenzen + App-Version Text bearbeiten @@ -88,5 +93,5 @@ Fett Kursiv Fett & kursiv - Text Basic ist eine einfache App, um einen beliebigen Text auf deinem Startbildschirm darzustellen! Füge einfach das Text Basic-Widget auf deinem Startbildschirm hinzu, gib Text in die App ein, und der Text wird auf deinem Bildschirm angezeigt.\n\nWechsle zwischen Texten: In der App kannst du beliebig viele Texte eingeben, indem du den [+]-Knopf drückst und deinen Text in das neu aufgetauchte Feld eingibst. Alle Texte werden automatisch gespeichert, du musst nichts weiteres tun.\nDu kannst zwischen deinen Texten wechseln, indem du auf deinem Startbildschirm auf das Widget klickst. Die Texte werden in der Reihenfolge angezeigt, in der du sie eingegeben hast, du kannst jedoch \"zufällige Reihenfolge\" in den App-Einstellungen aktivieren, um eine willkürliche Reihenfolge zu nutzen.\nHINWEIS: Sollte das Wechseln zwischen Texten nicht klappen, so versuche bitte, das Widget zu vergrößern und wieder zu verkleinern. Danach sollte der Fehler behoben sein.\n\nVerändere den Look: Du kannst verändern, wie der Text aussieht, indem du in die App-Einstellungen schaust – dort findest du Optionen für verschiedene Schriftarten und -größen, du kannst die Position bearbeiten sowie den Textstil, und du kannst einen Hintergrund, Umriss, oder Schatten hinzufügen.\nTipp: Sollte dein Text durch dein Hintergrundbild nicht leicht zu erkennen sein, versuche die Farben umzukehren. + Text Basic ist eine einfache App, um einen beliebigen Text auf deinem Startbildschirm darzustellen! Füge einfach das Text Basic-Widget auf deinem Startbildschirm hinzu, gib Text in die App ein, und der Text wird auf deinem Bildschirm angezeigt.\n\nWechsle zwischen Texten: In der App kannst du beliebig viele Texte eingeben, indem du den [+]-Knopf drückst und deinen Text in das neu aufgetauchte Feld eingibst. Alle Texte werden automatisch gespeichert, du musst nichts weiteres tun.\nDu kannst zwischen deinen Texten wechseln, indem du auf deinem Startbildschirm auf das Widget klickst. Die Texte werden in der Reihenfolge angezeigt, in der du sie eingegeben hast, du kannst jedoch \"zufällige Reihenfolge\" in den App-Einstellungen aktivieren, um eine willkürliche Reihenfolge zu nutzen.\nHINWEIS: Sollte das Wechseln zwischen Texten nicht klappen, so versuche bitte, das Widget zu vergrößern und wieder zu verkleinern. Danach sollte der Fehler behoben sein.\n\nVerändere den Look: Du kannst verändern, wie der Text aussieht, indem du in die App-Einstellungen schaust – dort findest du Optionen für verschiedene Schriftarten und -größen, du kannst die Position bearbeiten sowie den Textstil, und du kannst einen Hintergrund, Umriss, oder Schatten hinzufügen. \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7765789..c589a13 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,6 +52,12 @@ Set position of the text Miscellaneous + + View licences + Resources that made this app possible + Licences + Android, Material Design Resources © 2014 – %1$s Google, licenced under the Apache 2.0 License.\nhttps://developer.android.com\nhttps://material.io\n\nRoboto Mono © 2015 – %1$s Christian Robertson, licenced under the Apache 2.0 License.\nhttps://fonts.google.com/specimen/Roboto+Mono\n\nColorPickerView © 2017 – %1$s Jaewoong Eum, licenced under the Apache 2.0 License.\nhttps://github.com/skydoves/ColorPickerView\n\nApp developed by Deniz Düzgören.\ndenizk0461@gmail.com + App Version Edit Text @@ -97,8 +103,7 @@ Text Basic is a simple app for displaying a text on your home screen! Just add the Text Basic widget to your home screen, enter text in the app, and it will show on your home screen. \n\nCycle through texts: In the app, you can enter as many texts as you like by clicking the [+] button and entering your text into the newly appeared field. All texts are saved automatically, you have to take no further action.\nYou can cycle through your texts by clicking on the widget on your home screen. They will be shown in the order you added them in, but you can turn on "random order" in the app\'s settings to randomise the order. \nNOTE: if clicking on the widget does not cycle between texts, please try changing the size of the widget and then change it back. This should solve the issue. -\n\nCustomise the look: You can change how your text will look by heading into the app\'s settings – there, you can edit the text appearance by changing the size, font, position, apply formatting options, and even add a background, an outline, or a shadow. -\nTip: if the text is hard to read on your wallpaper, try inverting the colours. +\n\nCustomise the look: You can change how your text will look by heading into the app\'s settings – there, you can edit the text appearance by changing the size, font, position, apply formatting options, and even add a background, an outline, or a shadow. Sans-Serif