diff --git a/.idea/misc.xml b/.idea/misc.xml
index e604b49..6779e7e 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -11,6 +11,7 @@
+
@@ -20,6 +21,7 @@
+
@@ -28,8 +30,17 @@
+
+
+
+
+
+
+
+
+
@@ -63,24 +74,28 @@
-
+
-
+
-
+
+
-
+
+
+
+
@@ -90,7 +105,7 @@
-
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d5567b7..2a75aed 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,2 +1,2 @@
# Version 1.0_r1:
-- Initial stable version released.
\ No newline at end of file
+- Initial stable version.
\ No newline at end of file
diff --git a/README.md b/README.md
index 4b68cf5..bf5aa4e 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,7 @@ __🖤 Android Studio Tutorials is 100% Free, Open Source and helps you learn An
## 🛠️ Features!
- ⭐️ Kotlin & XML examples.
+- ⭐️ Binding examples.
- ⭐️ Easy to understand examples.
- ⭐️ No internet required.
- ⭐️ Adaptive themes + Material-You.
@@ -56,7 +57,7 @@ __❗Note❗__ Some features are still in progress or needs more improvements an
## 📝 Changelog [here](https://raw.githubusercontent.com/D4rK7355608/com.d4rk.androidtutorials/master/CHANGELOG.md)!
-## 🖼️ Screenshots:
+## 🖼️ App preview:
diff --git a/app/build.gradle b/app/build.gradle
index 07513aa..41186cd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,12 +7,12 @@ plugins {
}
android {
compileSdk 32
- def tagName = '1.0_b1'
+ def tagName = '1.0_r1'
defaultConfig {
applicationId "com.d4rk.androidtutorials"
minSdk 26
targetSdk 32
- versionCode 3
+ versionCode 4
versionName tagName
archivesBaseName = "com.d4rk.androidtutorials-v${versionName}"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 53efa52..fffd8ce 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,11 +12,12 @@
+
+
+
(R.id.editText) as EditText
+ binding.buttonPrintEdit.setOnClickListener {
+ Toast.makeText(this, edittext.text, Toast.LENGTH_LONG).show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/TextboxCodeActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/TextboxCodeActivity.kt
new file mode 100644
index 0000000..b62316c
--- /dev/null
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/TextboxCodeActivity.kt
@@ -0,0 +1,45 @@
+@file:Suppress("DEPRECATION")
+package com.d4rk.androidtutorials.ui.android.textbox
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.d4rk.androidtutorials.R
+import com.d4rk.androidtutorials.ui.android.textbox.tabs.TextboxTabCodeFragment
+import com.d4rk.androidtutorials.ui.android.textbox.tabs.TextboxTabLayoutFragment
+import com.google.android.material.tabs.TabLayout
+class TextboxCodeActivity: AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_tab_layout)
+ val tabs : TabLayout = findViewById(R.id.tabs)
+ val viewpager : ViewPager = findViewById(R.id.viewpager)
+ setupViewPager(viewpager)
+ tabs.setupWithViewPager(viewpager)
+ }
+ private fun setupViewPager(viewPager: ViewPager) {
+ val adapter = ViewPagerAdapter(supportFragmentManager)
+ adapter.addFragment(TextboxTabCodeFragment(), getString(R.string.code_kotlin))
+ adapter.addFragment(TextboxTabLayoutFragment(), getString(R.string.layout_xml))
+ viewPager.adapter = adapter
+ }
+ internal inner class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
+ private val mFragmentList = ArrayList()
+ private val mFragmentTitleList = ArrayList()
+ override fun getItem(position: Int): Fragment {
+ return mFragmentList[position]
+ }
+ override fun getCount(): Int {
+ return mFragmentList.size
+ }
+ fun addFragment(fragment: Fragment, title: String) {
+ mFragmentList.add(fragment)
+ mFragmentTitleList.add(title)
+ }
+ override fun getPageTitle(position: Int): CharSequence {
+ return mFragmentTitleList[position]
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabCodeFragment.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabCodeFragment.kt
new file mode 100644
index 0000000..02c114b
--- /dev/null
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabCodeFragment.kt
@@ -0,0 +1,33 @@
+package com.d4rk.androidtutorials.ui.android.textbox.tabs
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.d4rk.androidtutorials.R
+import com.d4rk.androidtutorials.databinding.FragmentTextboxCodeBinding
+import java.io.ByteArrayOutputStream
+import java.io.IOException
+import java.io.InputStream
+class TextboxTabCodeFragment : Fragment() {
+ private lateinit var _binding: FragmentTextboxCodeBinding
+ private val binding get() = _binding
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ _binding = FragmentTextboxCodeBinding.inflate(inflater, container, false)
+ val inputStream: InputStream = resources.openRawResource(R.raw.text_textbox_kotlin)
+ val byteArrayOutputStream = ByteArrayOutputStream()
+ var i: Int
+ try {
+ i = inputStream.read()
+ while (i != - 1) {
+ byteArrayOutputStream.write(i)
+ i = inputStream.read()
+ }
+ inputStream.close()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ binding.textboxCodeText.text = byteArrayOutputStream.toString()
+ return binding.root
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabLayoutFragment.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabLayoutFragment.kt
new file mode 100644
index 0000000..70749b7
--- /dev/null
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/textbox/tabs/TextboxTabLayoutFragment.kt
@@ -0,0 +1,33 @@
+package com.d4rk.androidtutorials.ui.android.textbox.tabs
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.d4rk.androidtutorials.R
+import com.d4rk.androidtutorials.databinding.FragmentTextboxLayoutBinding
+import java.io.ByteArrayOutputStream
+import java.io.IOException
+import java.io.InputStream
+class TextboxTabLayoutFragment : Fragment() {
+ private lateinit var _binding: FragmentTextboxLayoutBinding
+ private val binding get() = _binding
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ _binding = FragmentTextboxLayoutBinding.inflate(inflater, container, false)
+ val inputStream: InputStream = resources.openRawResource(R.raw.text_textbox_xml)
+ val byteArrayOutputStream = ByteArrayOutputStream()
+ var i: Int
+ try {
+ i = inputStream.read()
+ while (i != - 1) {
+ byteArrayOutputStream.write(i)
+ i = inputStream.read()
+ }
+ inputStream.close()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ binding.textboxXMLText.text = byteArrayOutputStream.toString()
+ return binding.root
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleActivity.kt
index 3349b51..44816dd 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleActivity.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleActivity.kt
@@ -12,16 +12,16 @@ class ToggleActivity : MonetCompatActivity() {
binding = ActivityToggleBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.monetSwitch.setOnClickListener {
- Toast.makeText(this@ToggleActivity, R.string.monetSwitchToast, Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.monetSwitchToast, Toast.LENGTH_SHORT).show()
}
binding.appCompatToggleButton.setOnClickListener {
- Toast.makeText(this@ToggleActivity, R.string.appCompatToggleButtonToast, Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.appCompatToggleButtonToast, Toast.LENGTH_SHORT).show()
}
binding.switchMaterial.setOnClickListener {
- Toast.makeText(this@ToggleActivity, R.string.switchMaterialToast, Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, R.string.switchMaterialToast, Toast.LENGTH_SHORT).show()
}
binding.showToggleCodeSyntax.setOnClickListener {
- val intent = Intent(this@ToggleActivity, ToggleCodeActivity::class.java)
+ val intent = Intent(this, ToggleCodeActivity::class.java)
startActivity(intent)
}
}
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleCodeActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleCodeActivity.kt
index 7f7e283..74354ee 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleCodeActivity.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/ToggleCodeActivity.kt
@@ -1,6 +1,7 @@
@file:Suppress("DEPRECATION")
package com.d4rk.androidtutorials.ui.android.toggle
import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
@@ -9,8 +10,7 @@ import com.d4rk.androidtutorials.R
import com.d4rk.androidtutorials.ui.android.toggle.tabs.ToggleTabCodeFragment
import com.d4rk.androidtutorials.ui.android.toggle.tabs.ToggleTabLayoutFragment
import com.google.android.material.tabs.TabLayout
-import com.kieronquinn.monetcompat.app.MonetCompatActivity
-class ToggleCodeActivity: MonetCompatActivity() {
+class ToggleCodeActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tab_layout)
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/tabs/ToggleTabLayoutFragment.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/tabs/ToggleTabLayoutFragment.kt
index 675a03c..537c267 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/tabs/ToggleTabLayoutFragment.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/android/toggle/tabs/ToggleTabLayoutFragment.kt
@@ -9,7 +9,6 @@ import com.d4rk.androidtutorials.databinding.FragmentToggleLayoutBinding
import java.io.ByteArrayOutputStream
import java.io.IOException
import java.io.InputStream
-
class ToggleTabLayoutFragment : Fragment() {
private lateinit var _binding: FragmentToggleLayoutBinding
private val binding get() = _binding
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/feedback/FeedbackActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/feedback/FeedbackActivity.kt
index 58ef3f1..692f54c 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/feedback/FeedbackActivity.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/feedback/FeedbackActivity.kt
@@ -1,12 +1,15 @@
package com.d4rk.androidtutorials.ui.feedback
+import android.content.Intent
import android.os.Bundle
+import android.view.Menu
+import android.view.MenuItem
import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
import com.d4rk.androidtutorials.R
import com.d4rk.androidtutorials.databinding.ActivityFeedbackBinding
import com.google.android.play.core.review.ReviewManager
import com.google.android.play.core.review.ReviewManagerFactory
-import com.kieronquinn.monetcompat.app.MonetCompatActivity
-class FeedbackActivity : MonetCompatActivity() {
+class FeedbackActivity : AppCompatActivity() {
private lateinit var reviewManager: ReviewManager
private lateinit var binding: ActivityFeedbackBinding
override fun onCreate(savedInstanceState: Bundle?) {
@@ -15,6 +18,23 @@ class FeedbackActivity : MonetCompatActivity() {
setContentView(binding.root)
init()
}
+ override fun onCreateOptionsMenu(menu: Menu): Boolean {
+ menuInflater.inflate(R.menu.menu_feedback, menu)
+ return true
+ }
+ override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
+ R.id.dev_mail -> {
+ val email = Intent(Intent.ACTION_SEND)
+ email.type = "text/email"
+ email.putExtra(Intent.EXTRA_EMAIL, arrayOf("d4rk7355608@gmail.com"))
+ email.putExtra(Intent.EXTRA_SUBJECT, "Feedback for Android Studio Tutorials")
+ email.putExtra(Intent.EXTRA_TEXT, "Dear developer, ")
+ startActivity(Intent.createChooser(email, "Send mail to Developer:"))
+ true
+ } else -> {
+ super.onOptionsItemSelected(item)
+ }
+ }
private fun init() {
reviewManager = ReviewManagerFactory.create(this)
binding.btnRateNow.setOnClickListener {
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/permissions/PermissionsActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/permissions/PermissionsActivity.kt
index 0c4ff75..5f7d15d 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/permissions/PermissionsActivity.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/permissions/PermissionsActivity.kt
@@ -1,10 +1,10 @@
package com.d4rk.androidtutorials.ui.permissions
import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceFragmentCompat
import com.d4rk.androidtutorials.R
import com.d4rk.androidtutorials.databinding.PermissionsActivityBinding
-import com.kieronquinn.monetcompat.app.MonetCompatActivity
-class PermissionsActivity : MonetCompatActivity() {
+class PermissionsActivity : AppCompatActivity() {
private lateinit var binding: PermissionsActivityBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/settings/SettingsActivity.kt b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/settings/SettingsActivity.kt
index 3b6b67c..95d5f4d 100644
--- a/app/src/main/kotlin/com/d4rk/androidtutorials/ui/settings/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/d4rk/androidtutorials/ui/settings/SettingsActivity.kt
@@ -5,6 +5,7 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AlertDialog
+import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@@ -12,8 +13,7 @@ import androidx.preference.PreferenceManager
import com.d4rk.androidtutorials.R
import com.d4rk.androidtutorials.databinding.SettingsActivityBinding
import com.google.android.material.textview.MaterialTextView
-import com.kieronquinn.monetcompat.app.MonetCompatActivity
-class SettingsActivity : MonetCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
+class SettingsActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
private lateinit var binding: SettingsActivityBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/play/listings/en-US/full-description.txt b/app/src/main/play/listings/en-US/full-description.txt
index 9a7d7a6..729e16a 100644
--- a/app/src/main/play/listings/en-US/full-description.txt
+++ b/app/src/main/play/listings/en-US/full-description.txt
@@ -33,6 +33,7 @@ GitHub: https://github.com/D4rK7355608/com.d4rk.androidtutorials
🛠️ Features!
⭐️ Kotlin & XML examples.
+⭐️ Binding examples.
⭐️ Easy to understand examples.
⭐️ No internet required.
⭐️ Adaptive themes + Material-You.
diff --git a/app/src/main/res/drawable-anydpi/ic_launcher_foreground.xml b/app/src/main/res/drawable-anydpi/ic_launcher_foreground.xml
index 15050f9..53d0f37 100644
--- a/app/src/main/res/drawable-anydpi/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable-anydpi/ic_launcher_foreground.xml
@@ -4,4 +4,4 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/ic_text.xml b/app/src/main/res/drawable-anydpi/ic_text.xml
new file mode 100644
index 0000000..7627550
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_text.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/ic_verified.xml b/app/src/main/res/drawable-anydpi/ic_verified.xml
new file mode 100644
index 0000000..309b172
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_verified.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/menu_card.xml b/app/src/main/res/drawable-anydpi/menu_card.xml
deleted file mode 100644
index c85d7be..0000000
--- a/app/src/main/res/drawable-anydpi/menu_card.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable-anydpi/overflow_background.xml b/app/src/main/res/drawable-anydpi/overflow_background.xml
new file mode 100644
index 0000000..e4e7915
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/overflow_background.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/switch_thumb.xml b/app/src/main/res/drawable-anydpi/switch_thumb.xml
new file mode 100644
index 0000000..04e5221
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/switch_thumb.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/switch_track.xml b/app/src/main/res/drawable-anydpi/switch_track.xml
new file mode 100644
index 0000000..3e10533
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/switch_track.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/font/audiowide.ttf b/app/src/main/res/font/audiowide.ttf
deleted file mode 100644
index 348817d..0000000
Binary files a/app/src/main/res/font/audiowide.ttf and /dev/null differ
diff --git a/app/src/main/res/layout/activity_android_sdk.xml b/app/src/main/res/layout/activity_android_sdk.xml
index 3c243d6..cffcd20 100644
--- a/app/src/main/res/layout/activity_android_sdk.xml
+++ b/app/src/main/res/layout/activity_android_sdk.xml
@@ -12,7 +12,7 @@
app:layout_constraintBottom_toTopOf="@+id/tableRow"
app:layout_constraintTop_toTopOf="@+id/tableRow"
tools:context=".ui.android.sdk.AndroidSDK">
-
-
@@ -55,27 +54,27 @@
android:layout_height="wrap_content"
android:divider="@color/colorAccent"
android:showDividers="middle">
-
-
-
-
-
-
-
-
-
-
@@ -114,24 +113,24 @@
android:layout_height="wrap_content"
android:divider="@color/colorAccent"
android:showDividers="middle">
-
-
-
-
-
@@ -307,7 +306,7 @@
android:gravity="center"
tools:ignore="HardcodedText"
android:textSize="11sp"
- android:text="2.3.0 / 2.3.2"/>
+ android:text="2.3.0/2.3.2"/>
+ android:text="2.3.3/2.3.7"/>
+ android:text="4.0.1/4.0.2"/>
+ android:text="4.0.3/4.0.4"/>
-
-
-
-
-
-
-
-
+
+
+ android:padding="24dp">
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_toggle.xml b/app/src/main/res/layout/activity_toggle.xml
index cdcb340..5cef7dd 100644
--- a/app/src/main/res/layout/activity_toggle.xml
+++ b/app/src/main/res/layout/activity_toggle.xml
@@ -46,6 +46,15 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/appCompatToggleButton"/>
+
+ android:layout_margin="16dp"
+ style="@style/Widget.Material3.CardView.Elevated">
@@ -91,10 +84,8 @@
android:text="@string/github"
android:textColor="?android:textColorPrimary"
android:tooltipText="@string/github"
- app:chipBackgroundColor="@color/colorBackground"
+ style="@style/Widget.Material3.Chip.Assist.Elevated"
app:chipIcon="@drawable/ic_github"
- app:chipSpacing="0dp"
- app:chipStrokeWidth="0dp"
app:layout_constraintEnd_toStartOf="@id/item_settings_more_about_twitter"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
@@ -109,10 +100,8 @@
android:text="@string/twitter"
android:textColor="?android:textColorPrimary"
android:tooltipText="@string/twitter"
- app:chipBackgroundColor="@color/colorBackground"
app:chipIcon="@drawable/ic_twitter"
- app:chipSpacing="0dp"
- app:chipStrokeWidth="0dp"
+ style="@style/Widget.Material3.Chip.Assist.Elevated"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/item_settings_more_about_github"
app:layout_constraintTop_toBottomOf="@id/item_settings_more_about_google_dev"/>
@@ -125,10 +114,8 @@
android:text="@string/xda"
android:textColor="?android:textColorPrimary"
android:tooltipText="@string/xda"
- app:chipBackgroundColor="@color/colorBackground"
app:chipIcon="@drawable/ic_xda"
- app:chipSpacing="0dp"
- app:chipStrokeWidth="0dp"
+ style="@style/Widget.Material3.Chip.Assist.Elevated"
app:layout_constraintEnd_toStartOf="@id/item_settings_more_about_libraries"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
@@ -143,10 +130,8 @@
android:text="@string/libraries"
android:textColor="?android:textColorPrimary"
android:tooltipText="@string/libraries"
- app:chipBackgroundColor="@color/colorBackground"
+ style="@style/Widget.Material3.Chip.Assist.Elevated"
app:chipIcon="@drawable/ic_libraries"
- app:chipSpacing="0dp"
- app:chipStrokeWidth="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/item_settings_more_about_xda"
app:layout_constraintTop_toBottomOf="@id/item_settings_more_about_github"/>
@@ -160,9 +145,8 @@
android:text="@string/settings"
android:tooltipText="@string/settings"
android:textColor="?android:textColorPrimary"
- app:chipBackgroundColor="@color/colorBackground3"
app:chipIcon="@drawable/ic_settings"
- app:chipStrokeWidth="0dp"/>
+ style="@style/Widget.Material3.Chip.Assist.Elevated"/>
+ tools:context=".ui.android.buttons.tabs.ButtonsTabCodeFragment">
+ app:layout_constraintTop_toTopOf="parent">
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_buttons_layout.xml b/app/src/main/res/layout/fragment_buttons_layout.xml
index 3b18bb3..40686ff 100644
--- a/app/src/main/res/layout/fragment_buttons_layout.xml
+++ b/app/src/main/res/layout/fragment_buttons_layout.xml
@@ -7,6 +7,7 @@
android:layout_height="match_parent"
tools:context=".ui.android.toggle.tabs.ToggleTabLayoutFragment">
+ app:layout_constraintTop_toTopOf="parent">
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 83395e6..7321de3 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -38,12 +38,11 @@
android:layout_height="266dp"
android:layout_marginStart="32dp"
android:layout_marginEnd="32dp"
- app:cardBackgroundColor="@color/colorBackground3"
+ style="@style/Widget.Material3.CardView.Elevated"
app:cardCornerRadius="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:strokeWidth="0dp">
+ app:layout_constraintStart_toStartOf="parent">
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_textbox_layout.xml b/app/src/main/res/layout/fragment_textbox_layout.xml
new file mode 100644
index 0000000..88245d5
--- /dev/null
+++ b/app/src/main/res/layout/fragment_textbox_layout.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_toggle_code.xml b/app/src/main/res/layout/fragment_toggle_code.xml
index a6c79da..f21b77e 100644
--- a/app/src/main/res/layout/fragment_toggle_code.xml
+++ b/app/src/main/res/layout/fragment_toggle_code.xml
@@ -7,6 +7,7 @@
android:layout_height="match_parent"
tools:context=".ui.android.toggle.tabs.ToggleTabCodeFragment">
+ app:layout_constraintTop_toTopOf="parent">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_toggle_layout.xml b/app/src/main/res/layout/fragment_toggle_layout.xml
index 9a31014..46a84c1 100644
--- a/app/src/main/res/layout/fragment_toggle_layout.xml
+++ b/app/src/main/res/layout/fragment_toggle_layout.xml
@@ -7,6 +7,7 @@
android:layout_height="match_parent"
tools:context=".ui.android.toggle.tabs.ToggleTabLayoutFragment">
+ app:layout_constraintTop_toTopOf="parent">
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_feedback.xml b/app/src/main/res/menu/menu_feedback.xml
new file mode 100644
index 0000000..4d659cc
--- /dev/null
+++ b/app/src/main/res/menu/menu_feedback.xml
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml
similarity index 79%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to app/src/main/res/mipmap-anydpi/ic_launcher.xml
index a803d02..2ac8d5c 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_english_with_lidia.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_english_with_lidia.xml
similarity index 76%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_english_with_lidia.xml
rename to app/src/main/res/mipmap-anydpi/ic_launcher_english_with_lidia.xml
index 0ceea98..ee95808 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_english_with_lidia.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher_english_with_lidia.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_music_sleep_timer.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_music_sleep_timer.xml
similarity index 76%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_music_sleep_timer.xml
rename to app/src/main/res/mipmap-anydpi/ic_launcher_music_sleep_timer.xml
index 055c5f1..e309045 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_music_sleep_timer.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher_music_sleep_timer.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_qr_codes_scanner.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_qr_codes_scanner.xml
similarity index 76%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_qr_codes_scanner.xml
rename to app/src/main/res/mipmap-anydpi/ic_launcher_qr_codes_scanner.xml
index 35427f5..2bcd7d7 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_qr_codes_scanner.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher_qr_codes_scanner.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_buttons_kotlin.txt b/app/src/main/res/raw/text_buttons_kotlin.txt
new file mode 100644
index 0000000..96e2313
--- /dev/null
+++ b/app/src/main/res/raw/text_buttons_kotlin.txt
@@ -0,0 +1,20 @@
+package com.d4rk.androidtutorials.ui.android.buttons
+import android.content.Intent
+import android.os.Bundle
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+class MainActivity : AppCompatActivity() {
+ private lateinit var binding : ActivityMainBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityMainBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ binding.button1.setOnClickListener {
+ Toast.makeText(this, "Elevated button clicked!", Toast.LENGTH_SHORT).show()
+ }
+ binding.showButtonCodeSyntax.setOnClickListener {
+ val intent = Intent(this, ButtonsCodeActivity::class.java)
+ startActivity(intent)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_buttons_xml.txt b/app/src/main/res/raw/text_buttons_xml.txt
new file mode 100644
index 0000000..23e7561
--- /dev/null
+++ b/app/src/main/res/raw/text_buttons_xml.txt
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_textbox_kotlin.txt b/app/src/main/res/raw/text_textbox_kotlin.txt
new file mode 100644
index 0000000..38e009c
--- /dev/null
+++ b/app/src/main/res/raw/text_textbox_kotlin.txt
@@ -0,0 +1,24 @@
+package com.dev.example
+import android.content.Intent
+import android.os.Bundle
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import com.dev.example.R
+import com.dev.example.databinding.ActivityMainBinding
+class MainActivity : AppCompatActivity() {
+ private lateinit var binding : ActivityMainBinding
+ private var edittext: EditText? = null
+ private var button: Button? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityMainBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ addKeyListener()
+ }
+ private fun addKeyListener() {
+ edittext = findViewById(R.id.editText) as EditText
+ binding.button1.setOnClickListener {
+ Toast.makeText(this, edittext.text, Toast.LENGTH_LONG).show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_textbox_xml.txt b/app/src/main/res/raw/text_textbox_xml.txt
new file mode 100644
index 0000000..3df15b8
--- /dev/null
+++ b/app/src/main/res/raw/text_textbox_xml.txt
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_toggle_kotlin.txt b/app/src/main/res/raw/text_toggle_kotlin.txt
index 4168515..1709eeb 100644
--- a/app/src/main/res/raw/text_toggle_kotlin.txt
+++ b/app/src/main/res/raw/text_toggle_kotlin.txt
@@ -1,17 +1,18 @@
+package com.dev.example
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
-import com.d4rk.androidtutorials.R
-import com.d4rk.androidtutorials.databinding.ActivityToggleBinding
-import com.kieronquinn.monetcompat.app.MonetCompatActivity
-class ToggleActivity : MonetCompatActivity() {
- private lateinit var binding : ActivityToggleBinding
+import androidx.appcompat.app.AppCompatActivity
+import com.dev.example.R
+import com.dev.example.databinding.ActivityMainBinding
+class MainActivity : AppCompatActivity() {
+ private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- binding = ActivityToggleBinding.inflate(layoutInflater)
+ binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.appCompatToggleButton.setOnClickListener {
- Toast.makeText(this@ToggleActivity, R.string.appCompatToggleButtonToast, Toast.LENGTH_SHORT).show()
+ Toast.makeText(this, "Toggle material switch!", Toast.LENGTH_SHORT).show()
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/raw/text_toggle_xml.txt b/app/src/main/res/raw/text_toggle_xml.txt
index d83bc50..c7e561b 100644
--- a/app/src/main/res/raw/text_toggle_xml.txt
+++ b/app/src/main/res/raw/text_toggle_xml.txt
@@ -5,14 +5,11 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ToggleActivity">
+ tools:context=".MainActivity">
+ android:layout_marginTop="16dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/values-night-v27/themes.xml b/app/src/main/res/values-night-v27/themes.xml
index 6a86498..3414eac 100644
--- a/app/src/main/res/values-night-v27/themes.xml
+++ b/app/src/main/res/values-night-v27/themes.xml
@@ -11,5 +11,6 @@
- @style/ActionBarTheme
- @style/OverflowMenuTheme
- @style/DialogTheme
+ - @style/SwitchTheme
\ No newline at end of file
diff --git a/app/src/main/res/values-night-v28/themes.xml b/app/src/main/res/values-night-v28/themes.xml
index 849bea0..c95e215 100644
--- a/app/src/main/res/values-night-v28/themes.xml
+++ b/app/src/main/res/values-night-v28/themes.xml
@@ -6,10 +6,11 @@
- false
- @android:color/transparent
- @android:color/transparent
- - 21dp
+ - 24dp
- @color/colorBackground
- @style/ActionBarTheme
- @style/OverflowMenuTheme
- @style/DialogTheme
+ - @style/SwitchTheme
\ No newline at end of file
diff --git a/app/src/main/res/values-night-v31/colors.xml b/app/src/main/res/values-night-v31/colors.xml
index 5b2d890..f81d46f 100644
--- a/app/src/main/res/values-night-v31/colors.xml
+++ b/app/src/main/res/values-night-v31/colors.xml
@@ -3,8 +3,6 @@
@android:color/system_accent1_500
@android:color/system_accent2_800
@android:color/system_accent2_600
+ @android:color/system_neutral2_800
@android:color/system_neutral2_900
- @android:color/system_neutral2_800
- @android:color/system_neutral2_700
- @android:color/system_neutral2_800
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 4999f19..a0179d4 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -3,9 +3,7 @@
#5d74ad
#2a3041
#585e6f
- #2D2D2D
+ #2f3037
+ #2D2D2D
#191b21
- #2f3037
- #45474d
- #414758
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 2d97d98..dc04066 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -9,5 +9,6 @@
- @style/ActionBarTheme
- @style/OverflowMenuTheme
- @style/DialogTheme
+ - @style/SwitchTheme
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/themes.xml b/app/src/main/res/values-v27/themes.xml
index 27b83fa..4307484 100644
--- a/app/src/main/res/values-v27/themes.xml
+++ b/app/src/main/res/values-v27/themes.xml
@@ -10,6 +10,7 @@
- @color/colorBackground
- @style/ActionBarTheme
- @style/DialogTheme
+ - @style/SwitchTheme
- @style/OverflowMenuTheme
\ No newline at end of file
diff --git a/app/src/main/res/values-v28/themes.xml b/app/src/main/res/values-v28/themes.xml
index 7e247bb..47425f3 100644
--- a/app/src/main/res/values-v28/themes.xml
+++ b/app/src/main/res/values-v28/themes.xml
@@ -6,16 +6,17 @@
- true
- @android:color/transparent
- @android:color/transparent
- - 21dp
+ - 24dp
- @color/colorBackground
- @style/ActionBarTheme
- @style/DialogTheme
+ - @style/SwitchTheme
- @style/OverflowMenuTheme
\ No newline at end of file
diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml
index b7f20dd..f46b37e 100644
--- a/app/src/main/res/values-v31/colors.xml
+++ b/app/src/main/res/values-v31/colors.xml
@@ -3,8 +3,6 @@
@android:color/system_accent1_300
@android:color/system_accent1_100
@android:color/system_accent2_600
+ @android:color/system_neutral1_10
@android:color/system_neutral1_50
- @android:color/system_neutral1_10
- @android:color/system_neutral2_100
- @android:color/system_neutral2_50
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 9101257..557175f 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,9 +3,7 @@
#93aae5
#d8e1fc
#585e6f
- #FFFFFF
+ #fdfbfe
+ #FFFFFF
#edf0fd
- #fdfbfe
- #c5c6cf
- #FDFBFE
\ 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 fc17aa9..34a368f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,7 @@
Android Studio Tutorials
Learn how to make simple apps in Android Studio. 📱
+ Email to dev
Home
Android Studio
About
@@ -18,12 +19,15 @@
QR & Bar Code Scanner.
Thanks for rating us!
Privacy policy.
+ License.
+ General Public License-3.0.
Terms of service.
Code of conduct.
Check for updates…
Feedback.
Changelog.
More apps.
+ Set application language.
Send us your review on Google Play Store.
Internet.
Used to send error reports.
@@ -47,10 +51,22 @@
Second time you have to choose your activity type you want for the app. You have some presets to make your work more easier. Choose one of them and click on next button.
Third and final step is to set your app name, package name, preferred programming language and minimum SDK your app will use. You can search more about them on Android Developers.
Default
+ You can add a basic toggle button to your layout with the ToggleButton object. Android 4.0 (API level 14) introduces another kind of toggle button called a switch that provides a slider control, which you can add with a Switch object. SwitchCompat is a version of the Switch widget which runs on devices back to API 7.
+ Button 1 (normal)
+ Button 2 (outlined)
+ Button 3 (elevated)
Toggle
+ Text Box
Toggle me
Show code syntax
+ Type here…
+ Print text.
+ Implement Text Box
+ A user interface element for entering and modifying text. When you define an edit text widget, you must specify the R.styleable.TextView_inputType attribute…
Open me :)
+ Normal button clicked!
+ Outlined button clicked!
+ Elevated button clicked!
Toggled Monet Switch!
Toggled Compat Toggle Button!
Toggled Material Switch!
@@ -64,16 +80,8 @@
Implement buttons
Discover more things about general buttons and what you can do with them. Learn how to make them look beauty and clean.
Still in Progress…
- Version 1.0_b1:\n
- • Target SDK now is 26;\n
- • Added QR & Bar Code Scanner in more dialog;\n
- • Updated some colors;\n
- • Updated app description in manifest;\n
- • Update app description in Google Play Store;\n
- • Fixed GitHub link;\n
- • Added Android SDKs table;\n
- • Remastered show code syntax;\n
- • Maybe is more but I forget.
+ Version 1.0_r1:\n
+ • Initial stable version.
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index d19abf5..72a4f7b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -12,16 +12,20 @@
- @color/colorBackground
- @style/ActionBarTheme
- @style/DialogTheme
+ - @style/SwitchTheme
- @style/OverflowMenuTheme
-
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/android_studio.xml b/app/src/main/res/xml/android_studio.xml
index ac16a74..4b5ccd4 100644
--- a/app/src/main/res/xml/android_studio.xml
+++ b/app/src/main/res/xml/android_studio.xml
@@ -43,5 +43,14 @@
android:targetPackage="com.d4rk.androidtutorials"
android:targetClass="com.d4rk.androidtutorials.ui.android.buttons.ButtonsActivity"/>
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index 05549a2..bb2ed84 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -15,7 +15,7 @@
+ android:summary="@string/language_sum">
@@ -42,6 +42,13 @@
+
+
+
diff --git a/build.gradle b/build.gradle
index abf47ab..c985a63 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
- id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
+ id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
id "com.google.gms.google-services" version "4.3.10" apply false
}
task clean(type: Delete) {