Update: Move to androidx.material/appcompat

Auto Format of code
This commit is contained in:
LooKeR 2021-10-27 00:41:20 +05:30
parent 486d531158
commit 95183dde6b
50 changed files with 305 additions and 384 deletions

View File

@ -3,12 +3,11 @@
Material-ify with Droid-ify. Material-ify with Droid-ify.
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" [<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png"
alt="Get it on IzzyDroid" alt="Get it on IzzyDroid"
width="48%">](https://android.izzysoft.de/repo/apk/com.looker.droidify) width="48%">](https://android.izzysoft.de/repo/apk/com.looker.droidify)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" [<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid" alt="Get it on F-Droid"
width="48%">](https://f-droid.org/packages/com.looker.droidify) width="48%">](https://f-droid.org/packages/com.looker.droidify)
## Description ## Description

View File

@ -44,7 +44,7 @@ class DefaultInstaller(context: Context) : BaseInstaller(context) {
} }
} }
private fun mDefaultUninstaller(packageName: String){ private fun mDefaultUninstaller(packageName: String) {
val uri = Uri.fromParts("package", packageName, null) val uri = Uri.fromParts("package", packageName, null)
val intent = Intent() val intent = Intent()
intent.data = uri intent.data = uri

View File

@ -13,11 +13,11 @@ import android.util.Base64
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.EditText
import android.widget.FrameLayout
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
@ -57,11 +57,11 @@ class EditRepositoryFragment() : ScreenFragment() {
} }
private class Layout(view: View) { private class Layout(view: View) {
val address = view.findViewById<EditText>(R.id.address)!! val address = view.findViewById<TextInputEditText>(R.id.address)!!
val addressMirror = view.findViewById<View>(R.id.address_mirror)!! val addressMirror = view.findViewById<View>(R.id.address_mirror)!!
val fingerprint = view.findViewById<EditText>(R.id.fingerprint)!! val fingerprint = view.findViewById<TextInputEditText>(R.id.fingerprint)!!
val username = view.findViewById<EditText>(R.id.username)!! val username = view.findViewById<TextInputEditText>(R.id.username)!!
val password = view.findViewById<EditText>(R.id.password)!! val password = view.findViewById<TextInputEditText>(R.id.password)!!
val overlay = view.findViewById<View>(R.id.overlay)!! val overlay = view.findViewById<View>(R.id.overlay)!!
val skip = view.findViewById<View>(R.id.skip)!! val skip = view.findViewById<View>(R.id.skip)!!
} }
@ -99,7 +99,7 @@ class EditRepositoryFragment() : ScreenFragment() {
true true
} }
val content = view.findViewById<FrameLayout>(R.id.fragment_content)!! val content = view.findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
errorColorFilter = PorterDuffColorFilter( errorColorFilter = PorterDuffColorFilter(
content.context content.context
.getColorFromAttr(R.attr.colorError).defaultColor, PorterDuff.Mode.SRC_IN .getColorFromAttr(R.attr.colorError).defaultColor, PorterDuff.Mode.SRC_IN

View File

@ -22,8 +22,8 @@ import android.view.Gravity
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.*
import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.content.res.AppCompatResources
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
@ -33,8 +33,11 @@ import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import com.google.android.material.card.MaterialCardView import com.google.android.material.card.MaterialCardView
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.divider.MaterialDivider import com.google.android.material.divider.MaterialDivider
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
import com.google.android.material.progressindicator.LinearProgressIndicator
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.switchmaterial.SwitchMaterial import com.google.android.material.switchmaterial.SwitchMaterial
import com.google.android.material.textview.MaterialTextView import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.R import com.looker.droidify.R
@ -49,7 +52,6 @@ import com.looker.droidify.utility.Utils
import com.looker.droidify.utility.extension.android.* import com.looker.droidify.utility.extension.android.*
import com.looker.droidify.utility.extension.resources.* import com.looker.droidify.utility.extension.resources.*
import com.looker.droidify.utility.extension.text.* import com.looker.droidify.utility.extension.text.*
import com.looker.droidify.widget.ClickableMovementMethod
import com.looker.droidify.widget.StableRecyclerAdapter import com.looker.droidify.widget.StableRecyclerAdapter
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
import java.util.* import java.util.*
@ -323,12 +325,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
private class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
val name = itemView.findViewById<TextView>(R.id.name)!! val name = itemView.findViewById<MaterialTextView>(R.id.name)!!
val packageName = itemView.findViewById<TextView>(R.id.package_name)!! val packageName = itemView.findViewById<MaterialTextView>(R.id.package_name)!!
val action = itemView.findViewById<MaterialButton>(R.id.action)!! val action = itemView.findViewById<MaterialButton>(R.id.action)!!
val statusLayout = itemView.findViewById<View>(R.id.status_layout)!! val statusLayout = itemView.findViewById<View>(R.id.status_layout)!!
val status = itemView.findViewById<TextView>(R.id.status)!! val status = itemView.findViewById<MaterialTextView>(R.id.status)!!
val progress = itemView.findViewById<ProgressBar>(R.id.progress)!! val progress = itemView.findViewById<LinearProgressIndicator>(R.id.progress)!!
val progressIcon: Drawable val progressIcon: Drawable
val defaultIcon: Drawable val defaultIcon: Drawable
@ -340,7 +342,6 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
init { init {
action.apply { action.apply {
setTextSizeScaled(15)
setTextColor(action.context.getColorFromAttr(R.attr.colorOnPrimary)) setTextColor(action.context.getColorFromAttr(R.attr.colorOnPrimary))
height = itemView.resources.sizeScaled(48) height = itemView.resources.sizeScaled(48)
} }
@ -351,7 +352,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
private class ReleaseInfoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class ReleaseInfoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val targetBlock = itemView.findViewById<LinearLayout>(R.id.sdk_block)!! val targetBlock = itemView.findViewById<LinearLayoutCompat>(R.id.sdk_block)!!
val divider1 = itemView.findViewById<MaterialDivider>(R.id.divider1)!! val divider1 = itemView.findViewById<MaterialDivider>(R.id.divider1)!!
val targetSdk = itemView.findViewById<MaterialTextView>(R.id.sdk)!! val targetSdk = itemView.findViewById<MaterialTextView>(R.id.sdk)!!
val version = itemView.findViewById<MaterialTextView>(R.id.version)!! val version = itemView.findViewById<MaterialTextView>(R.id.version)!!
@ -369,16 +370,17 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
private class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val title = itemView.findViewById<TextView>(R.id.title)!! val title = itemView.findViewById<MaterialTextView>(R.id.title)!!
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
} }
private class ExpandViewHolder(context: Context) : RecyclerView.ViewHolder(TextView(context)) { private class ExpandViewHolder(context: Context) :
val text: TextView RecyclerView.ViewHolder(MaterialTextView(context)) {
get() = itemView as TextView val text: MaterialTextView
get() = itemView as MaterialTextView
init { init {
itemView as TextView itemView as MaterialTextView
itemView.typeface = TypefaceExtra.medium itemView.typeface = TypefaceExtra.medium
itemView.setTextSizeScaled(14) itemView.setTextSizeScaled(14)
itemView.setTextColor(itemView.context.getColorFromAttr(android.R.attr.textColor)) itemView.setTextColor(itemView.context.getColorFromAttr(android.R.attr.textColor))
@ -402,16 +404,16 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
} }
private class TextViewHolder(context: Context) : RecyclerView.ViewHolder(TextView(context)) { private class TextViewHolder(context: Context) :
val text: TextView RecyclerView.ViewHolder(MaterialTextView(context)) {
get() = itemView as TextView val text: MaterialTextView
get() = itemView as MaterialTextView
init { init {
itemView as TextView itemView as MaterialTextView
itemView.setTextSizeScaled(15) itemView.setTextSizeScaled(15)
itemView.setTextColor(itemView.context.getColorFromAttr(android.R.attr.textColor)) itemView.setTextColor(itemView.context.getColorFromAttr(android.R.attr.textColor))
itemView.resources.sizeScaled(16).let { itemView.setPadding(it, it, it, it) } itemView.resources.sizeScaled(16).let { itemView.setPadding(it, it, it, it) }
itemView.movementMethod = ClickableMovementMethod
itemView.layoutParams = RecyclerView.LayoutParams( itemView.layoutParams = RecyclerView.LayoutParams(
RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT,
RecyclerView.LayoutParams.WRAP_CONTENT RecyclerView.LayoutParams.WRAP_CONTENT
@ -437,8 +439,8 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
val text = itemView.findViewById<TextView>(R.id.text)!! val text = itemView.findViewById<MaterialTextView>(R.id.text)!!
val link = itemView.findViewById<TextView>(R.id.link)!! val link = itemView.findViewById<MaterialTextView>(R.id.link)!!
init { init {
val margin = measurement.invalidate(itemView.resources) { val margin = measurement.invalidate(itemView.resources) {
@ -461,7 +463,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
val text = itemView.findViewById<TextView>(R.id.text)!! val text = itemView.findViewById<MaterialTextView>(R.id.text)!!
init { init {
val margin = measurement.invalidate(itemView.resources) { val margin = measurement.invalidate(itemView.resources) {
@ -478,7 +480,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
private class ScreenshotViewHolder(context: Context) : private class ScreenshotViewHolder(context: Context) :
RecyclerView.ViewHolder(FrameLayout(context)) { RecyclerView.ViewHolder(CircularRevealFrameLayout(context)) {
val image: ShapeableImageView val image: ShapeableImageView
val placeholder: Drawable val placeholder: Drawable
@ -487,7 +489,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
var gridCount = -1 var gridCount = -1
init { init {
itemView as FrameLayout itemView as CircularRevealFrameLayout
itemView.foreground = itemView.foreground =
AppCompatResources.getDrawable(itemView.context, R.drawable.bg_item_rounded_ripple) AppCompatResources.getDrawable(itemView.context, R.drawable.bg_item_rounded_ripple)
val surfaceColor = val surfaceColor =
@ -503,17 +505,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
val radius = image.context.resources.getDimension(R.dimen.shape_medium_corner) val radius = image.context.resources.getDimension(R.dimen.shape_medium_corner)
val shapeAppearanceModel = image.shapeAppearanceModel.toBuilder() val shapeAppearanceModel = image.shapeAppearanceModel.toBuilder()
.setAllCornerSizes(radius) .setAllCornerSizes(radius)
.build() .build()
image.shapeAppearanceModel = shapeAppearanceModel image.shapeAppearanceModel = shapeAppearanceModel
image.setBackgroundColor(surfaceColor) image.setBackgroundColor(surfaceColor)
itemView.addView( itemView.addView(image)
image,
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
itemView.layoutParams = RecyclerView.LayoutParams( itemView.layoutParams = RecyclerView.LayoutParams(
RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT,
RecyclerView.LayoutParams.WRAP_CONTENT RecyclerView.LayoutParams.WRAP_CONTENT
@ -528,13 +525,13 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
private class ReleaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class ReleaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val dateFormat = DateFormat.getDateFormat(itemView.context)!! val dateFormat = DateFormat.getDateFormat(itemView.context)!!
val version = itemView.findViewById<TextView>(R.id.version)!! val version = itemView.findViewById<MaterialTextView>(R.id.version)!!
val status = itemView.findViewById<TextView>(R.id.status)!! val status = itemView.findViewById<MaterialTextView>(R.id.status)!!
val source = itemView.findViewById<TextView>(R.id.source)!! val source = itemView.findViewById<MaterialTextView>(R.id.source)!!
val added = itemView.findViewById<TextView>(R.id.added)!! val added = itemView.findViewById<MaterialTextView>(R.id.added)!!
val size = itemView.findViewById<TextView>(R.id.size)!! val size = itemView.findViewById<MaterialTextView>(R.id.size)!!
val signature = itemView.findViewById<TextView>(R.id.signature)!! val signature = itemView.findViewById<MaterialTextView>(R.id.signature)!!
val compatibility = itemView.findViewById<TextView>(R.id.compatibility)!! val compatibility = itemView.findViewById<MaterialTextView>(R.id.compatibility)!!
val statefulViews: Sequence<View> val statefulViews: Sequence<View>
get() = sequenceOf( get() = sequenceOf(
@ -565,15 +562,15 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
} }
private class EmptyViewHolder(context: Context) : private class EmptyViewHolder(context: Context) :
RecyclerView.ViewHolder(LinearLayout(context)) { RecyclerView.ViewHolder(LinearLayoutCompat(context)) {
val packageName: TextView val packageName: MaterialTextView
init { init {
itemView as LinearLayout itemView as LinearLayoutCompat
itemView.orientation = LinearLayout.VERTICAL itemView.orientation = LinearLayoutCompat.VERTICAL
itemView.gravity = Gravity.CENTER itemView.gravity = Gravity.CENTER
itemView.resources.sizeScaled(20).let { itemView.setPadding(it, it, it, it) } itemView.resources.sizeScaled(20).let { itemView.setPadding(it, it, it, it) }
val title = TextView(itemView.context) val title = MaterialTextView(itemView.context)
title.gravity = Gravity.CENTER title.gravity = Gravity.CENTER
title.typeface = TypefaceExtra.light title.typeface = TypefaceExtra.light
title.setTextColor(context.getColorFromAttr(R.attr.colorPrimary)) title.setTextColor(context.getColorFromAttr(R.attr.colorPrimary))
@ -581,17 +578,17 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
title.setText(R.string.application_not_found) title.setText(R.string.application_not_found)
itemView.addView( itemView.addView(
title, title,
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT LinearLayoutCompat.LayoutParams.WRAP_CONTENT
) )
val packageName = TextView(itemView.context) val packageName = MaterialTextView(itemView.context)
packageName.gravity = Gravity.CENTER packageName.gravity = Gravity.CENTER
packageName.setTextColor(context.getColorFromAttr(R.attr.colorPrimary)) packageName.setTextColor(context.getColorFromAttr(R.attr.colorPrimary))
packageName.setTextSizeScaled(18) packageName.setTextSizeScaled(18)
itemView.addView( itemView.addView(
packageName, packageName,
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT LinearLayoutCompat.LayoutParams.WRAP_CONTENT
) )
itemView.layoutParams = RecyclerView.LayoutParams( itemView.layoutParams = RecyclerView.LayoutParams(
RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT,
@ -1103,12 +1100,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
itemView.setOnClickListener { itemView.setOnClickListener {
val linkItem = items[adapterPosition] as Item.LinkItem val linkItem = items[adapterPosition] as Item.LinkItem
if (linkItem.uri?.let { callbacks.onUriClick(it, false) } != true) { if (linkItem.uri?.let { callbacks.onUriClick(it, false) } != true) {
linkItem.displayLink?.let { copyLinkToClipboard(itemView.context, it) } linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) }
} }
} }
itemView.setOnLongClickListener { itemView.setOnLongClickListener {
val linkItem = items[adapterPosition] as Item.LinkItem val linkItem = items[adapterPosition] as Item.LinkItem
linkItem.displayLink?.let { copyLinkToClipboard(itemView.context, it) } linkItem.displayLink?.let { copyLinkToClipboard(itemView, it) }
true true
} }
} }
@ -1262,7 +1259,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
context.startActivity(Intent(Intent.ACTION_VIEW, product?.source?.toUri())) context.startActivity(Intent(Intent.ACTION_VIEW, product?.source?.toUri()))
} }
holder.dev.setOnLongClickListener { holder.dev.setOnLongClickListener {
product?.source?.let { copyLinkToClipboard(context, it) } product?.source?.let { copyLinkToClipboard(holder.dev, it) }
true true
} }
} }
@ -1552,15 +1549,11 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
return builder return builder
} }
private fun copyLinkToClipboard(context: Context, link: String) { private fun copyLinkToClipboard(view: View, link: String) {
val clipboardManager = val clipboardManager =
context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager view.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboardManager.setPrimaryClip(ClipData.newPlainText(null, link)) clipboardManager.setPrimaryClip(ClipData.newPlainText(null, link))
Toast.makeText( Snackbar.make(view, R.string.link_copied_to_clipboard, Snackbar.LENGTH_SHORT).show()
context,
context.getString(R.string.link_copied_to_clipboard),
Toast.LENGTH_SHORT
).show()
} }
private class LinkSpan(private val url: String, productAdapter: ProductAdapter) : private class LinkSpan(private val url: String, productAdapter: ProductAdapter) :

View File

@ -9,13 +9,13 @@ import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.FrameLayout
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.ProductPreferences import com.looker.droidify.content.ProductPreferences
@ -108,7 +108,7 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
} }
} }
val content = view.findViewById<FrameLayout>(R.id.fragment_content)!! val content = view.findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
content.addView(RecyclerView(content.context).apply { content.addView(RecyclerView(content.context).apply {
id = android.R.id.list id = android.R.id.list
val columns = (resources.configuration.screenWidthDp / 120).coerceIn(3, 5) val columns = (resources.configuration.screenWidthDp / 120).coerceIn(3, 5)
@ -129,7 +129,7 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
?.let(adapter::restoreState) ?.let(adapter::restoreState)
layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER) layoutManagerState = savedInstanceState?.getParcelable(STATE_LAYOUT_MANAGER)
recyclerView = this recyclerView = this
}, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT) })
var first = true var first = true
productDisposable = Observable.just(Unit) productDisposable = Observable.just(Unit)

View File

@ -7,13 +7,13 @@ import android.view.Gravity
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.animation.AnimationUtils import android.view.animation.AnimationUtils
import android.widget.FrameLayout
import android.widget.ProgressBar
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import coil.transform.RoundedCornersTransformation import coil.transform.RoundedCornersTransformation
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
import com.google.android.material.progressindicator.CircularProgressIndicator
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
@ -32,9 +32,9 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
enum class ViewType { PRODUCT, LOADING, EMPTY } enum class ViewType { PRODUCT, LOADING, EMPTY }
private class ProductViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class ProductViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val name = itemView.findViewById<TextView>(R.id.name)!! val name = itemView.findViewById<MaterialTextView>(R.id.name)!!
val status = itemView.findViewById<TextView>(R.id.status)!! val status = itemView.findViewById<MaterialTextView>(R.id.status)!!
val summary = itemView.findViewById<TextView>(R.id.summary)!! val summary = itemView.findViewById<MaterialTextView>(R.id.summary)!!
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
val progressIcon: Drawable val progressIcon: Drawable
@ -48,14 +48,11 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
} }
private class LoadingViewHolder(context: Context) : private class LoadingViewHolder(context: Context) :
RecyclerView.ViewHolder(FrameLayout(context)) { RecyclerView.ViewHolder(CircularRevealFrameLayout(context)) {
init { init {
itemView as FrameLayout itemView as CircularRevealFrameLayout
val progressBar = ProgressBar(itemView.context) val progressBar = CircularProgressIndicator(itemView.context)
itemView.addView(progressBar, FrameLayout.LayoutParams( itemView.addView(progressBar)
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT
).apply { gravity = Gravity.CENTER })
itemView.layoutParams = RecyclerView.LayoutParams( itemView.layoutParams = RecyclerView.LayoutParams(
RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT,
RecyclerView.LayoutParams.MATCH_PARENT RecyclerView.LayoutParams.MATCH_PARENT
@ -63,12 +60,13 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
} }
} }
private class EmptyViewHolder(context: Context) : RecyclerView.ViewHolder(TextView(context)) { private class EmptyViewHolder(context: Context) :
val text: TextView RecyclerView.ViewHolder(MaterialTextView(context)) {
get() = itemView as TextView val text: MaterialTextView
get() = itemView as MaterialTextView
init { init {
itemView as TextView itemView as MaterialTextView
itemView.gravity = Gravity.CENTER itemView.gravity = Gravity.CENTER
itemView.resources.sizeScaled(20).let { itemView.setPadding(it, it, it, it) } itemView.resources.sizeScaled(20).let { itemView.setPadding(it, it, it, it) }
itemView.typeface = TypefaceExtra.light itemView.typeface = TypefaceExtra.light

View File

@ -2,9 +2,9 @@ package com.looker.droidify.screen
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.switchmaterial.SwitchMaterial import com.google.android.material.switchmaterial.SwitchMaterial
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
@ -19,7 +19,7 @@ class RepositoriesAdapter(
enum class ViewType { REPOSITORY } enum class ViewType { REPOSITORY }
private class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val name = itemView.findViewById<TextView>(R.id.name)!! val name = itemView.findViewById<MaterialTextView>(R.id.name)!!
val enabled = itemView.findViewById<SwitchMaterial>(R.id.enabled)!! val enabled = itemView.findViewById<SwitchMaterial>(R.id.enabled)!!
var listenSwitch = true var listenSwitch = true

View File

@ -6,9 +6,9 @@ import android.view.LayoutInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.database.CursorOwner import com.looker.droidify.database.CursorOwner
import com.looker.droidify.service.Connection import com.looker.droidify.service.Connection
@ -26,7 +26,7 @@ class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback {
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
val view = inflater.inflate(R.layout.fragment, container, false).apply { val view = inflater.inflate(R.layout.fragment, container, false).apply {
val content = findViewById<FrameLayout>(R.id.fragment_content)!! val content = findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
content.addView(RecyclerView(content.context).apply { content.addView(RecyclerView(content.context).apply {
id = android.R.id.list id = android.R.id.list
layoutManager = LinearLayoutManager(context) layoutManager = LinearLayoutManager(context)
@ -38,7 +38,7 @@ class RepositoriesFragment : ScreenFragment(), CursorOwner.Callback {
syncConnection.binder?.setEnabled(repository, isEnabled) == true syncConnection.binder?.setEnabled(repository, isEnabled) == true
}) })
recyclerView = this recyclerView = this
}, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT) })
} }
this.toolbar = view.findViewById(R.id.toolbar) this.toolbar = view.findViewById(R.id.toolbar)
return view return view

View File

@ -8,10 +8,10 @@ import android.text.style.TypefaceSpan
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import androidx.appcompat.widget.LinearLayoutCompat
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.widget.NestedScrollView import androidx.core.widget.NestedScrollView
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
import com.looker.droidify.service.Connection import com.looker.droidify.service.Connection
@ -39,7 +39,7 @@ class RepositoryFragment() : ScreenFragment() {
private val repositoryId: Long private val repositoryId: Long
get() = requireArguments().getLong(EXTRA_REPOSITORY_ID) get() = requireArguments().getLong(EXTRA_REPOSITORY_ID)
private var layout: LinearLayout? = null private var layout: LinearLayoutCompat? = null
private val syncConnection = Connection(SyncService::class.java) private val syncConnection = Connection(SyncService::class.java)
private var repositoryDisposable: Disposable? = null private var repositoryDisposable: Disposable? = null
@ -76,17 +76,13 @@ class RepositoryFragment() : ScreenFragment() {
} }
} }
val content = view.findViewById<FrameLayout>(R.id.fragment_content)!! val content = view.findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
val scroll = NestedScrollView(content.context) val scroll = NestedScrollView(content.context)
scroll.id = android.R.id.list scroll.id = android.R.id.list
scroll.isFillViewport = true scroll.isFillViewport = true
content.addView( content.addView(scroll)
scroll, val layout = LinearLayoutCompat(scroll.context)
FrameLayout.LayoutParams.MATCH_PARENT, layout.orientation = LinearLayoutCompat.VERTICAL
FrameLayout.LayoutParams.MATCH_PARENT
)
val layout = LinearLayout(scroll.context)
layout.orientation = LinearLayout.VERTICAL
resources.sizeScaled(8).let { layout.setPadding(0, it, 0, it) } resources.sizeScaled(8).let { layout.setPadding(0, it, 0, it) }
this.layout = layout this.layout = layout
scroll.addView( scroll.addView(
@ -164,12 +160,12 @@ class RepositoryFragment() : ScreenFragment() {
} }
} }
private fun LinearLayout.addTitleText(titleResId: Int, text: CharSequence) { private fun LinearLayoutCompat.addTitleText(titleResId: Int, text: CharSequence) {
if (text.isNotEmpty()) { if (text.isNotEmpty()) {
val layout = inflate(R.layout.title_text_item) val layout = inflate(R.layout.title_text_item)
val titleView = layout.findViewById<TextView>(R.id.title)!! val titleView = layout.findViewById<MaterialTextView>(R.id.title)!!
titleView.setText(titleResId) titleView.setText(titleResId)
val textView = layout.findViewById<TextView>(R.id.text)!! val textView = layout.findViewById<MaterialTextView>(R.id.text)!!
textView.text = text textView.text = text
addView(layout) addView(layout)
} }

View File

@ -5,11 +5,11 @@ import android.os.Bundle
import android.os.Parcel import android.os.Parcel
import android.view.ViewGroup import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.FrameLayout
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.CursorOwner import com.looker.droidify.database.CursorOwner
@ -74,7 +74,7 @@ abstract class ScreenActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
addContentView( addContentView(
FrameLayout(this).apply { id = R.id.main_content }, CircularRevealFrameLayout(this).apply { id = R.id.main_content },
ViewGroup.LayoutParams( ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT ViewGroup.LayoutParams.MATCH_PARENT

View File

@ -9,14 +9,17 @@ import android.text.InputType
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import android.widget.*
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.widget.NestedScrollView import androidx.core.widget.NestedScrollView
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.switchmaterial.SwitchMaterial import com.google.android.material.switchmaterial.SwitchMaterial
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.BuildConfig import com.looker.droidify.BuildConfig
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
@ -34,7 +37,7 @@ class SettingsFragment : ScreenFragment() {
screenActivity.onToolbarCreated(toolbar) screenActivity.onToolbarCreated(toolbar)
toolbar.setTitle(R.string.settings) toolbar.setTitle(R.string.settings)
val content = view.findViewById<FrameLayout>(R.id.fragment_content)!! val content = view.findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
val scroll = NestedScrollView(content.context) val scroll = NestedScrollView(content.context)
scroll.id = R.id.preferences_list scroll.id = R.id.preferences_list
scroll.isFillViewport = true scroll.isFillViewport = true
@ -43,14 +46,14 @@ class SettingsFragment : ScreenFragment() {
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT ViewGroup.LayoutParams.MATCH_PARENT
) )
val scrollLayout = FrameLayout(content.context) val scrollLayout = CircularRevealFrameLayout(content.context)
scroll.addView( scroll.addView(
scrollLayout, scrollLayout,
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT ViewGroup.LayoutParams.WRAP_CONTENT
) )
val preferences = LinearLayout(scrollLayout.context) val preferences = LinearLayoutCompat(scrollLayout.context)
preferences.orientation = LinearLayout.VERTICAL preferences.orientation = LinearLayoutCompat.VERTICAL
scrollLayout.addView( scrollLayout.addView(
preferences, preferences,
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
@ -134,9 +137,9 @@ class SettingsFragment : ScreenFragment() {
updatePreference(null) updatePreference(null)
} }
private fun LinearLayout.addText(title: String, summary: String) { private fun LinearLayoutCompat.addText(title: String, summary: String) {
val text = TextView(context) val text = MaterialTextView(context)
val subText = TextView(context) val subText = MaterialTextView(context)
text.text = title text.text = title
subText.text = summary subText.text = summary
text.textSize = 16F text.textSize = 16F
@ -145,13 +148,13 @@ class SettingsFragment : ScreenFragment() {
resources.sizeScaled(16).let { subText.setPadding(it, 5, 5, 25) } resources.sizeScaled(16).let { subText.setPadding(it, 5, 5, 25) }
addView( addView(
text, text,
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT LinearLayoutCompat.LayoutParams.WRAP_CONTENT
) )
addView( addView(
subText, subText,
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT LinearLayoutCompat.LayoutParams.WRAP_CONTENT
) )
} }
@ -187,8 +190,11 @@ class SettingsFragment : ScreenFragment() {
} }
} }
private fun LinearLayout.addCategory(title: String, callback: LinearLayout.() -> Unit) { private fun LinearLayoutCompat.addCategory(
val text = TextView(context) title: String,
callback: LinearLayoutCompat.() -> Unit
) {
val text = MaterialTextView(context)
text.typeface = TypefaceExtra.medium text.typeface = TypefaceExtra.medium
text.setTextSizeScaled(14) text.setTextSizeScaled(14)
text.setTextColor(text.context.getColorFromAttr(android.R.attr.colorAccent)) text.setTextColor(text.context.getColorFromAttr(android.R.attr.colorAccent))
@ -196,13 +202,13 @@ class SettingsFragment : ScreenFragment() {
resources.sizeScaled(16).let { text.setPadding(it, it, it, 0) } resources.sizeScaled(16).let { text.setPadding(it, it, it, 0) }
addView( addView(
text, text,
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT LinearLayoutCompat.LayoutParams.WRAP_CONTENT
) )
callback() callback()
} }
private fun <T> LinearLayout.addPreference( private fun <T> LinearLayoutCompat.addPreference(
key: Preferences.Key<T>, title: String, key: Preferences.Key<T>, title: String,
summaryProvider: () -> String, dialogProvider: ((Context) -> AlertDialog)? summaryProvider: () -> String, dialogProvider: ((Context) -> AlertDialog)?
): Preference<T> { ): Preference<T> {
@ -212,7 +218,7 @@ class SettingsFragment : ScreenFragment() {
return preference return preference
} }
private fun LinearLayout.addSwitch( private fun LinearLayoutCompat.addSwitch(
key: Preferences.Key<Boolean>, key: Preferences.Key<Boolean>,
title: String, title: String,
summary: String summary: String
@ -223,22 +229,21 @@ class SettingsFragment : ScreenFragment() {
preference.setCallback { preference.check.isChecked = Preferences[key] } preference.setCallback { preference.check.isChecked = Preferences[key] }
} }
private fun <T> LinearLayout.addEdit( private fun <T> LinearLayoutCompat.addEdit(
key: Preferences.Key<T>, title: String, valueToString: (T) -> String, key: Preferences.Key<T>, title: String, valueToString: (T) -> String,
stringToValue: (String) -> T?, configureEdit: (EditText) -> Unit stringToValue: (String) -> T?, configureEdit: (TextInputEditText) -> Unit
) { ) {
addPreference(key, title, { valueToString(Preferences[key]) }) { it -> addPreference(key, title, { valueToString(Preferences[key]) }) { it ->
val scroll = NestedScrollView(it) val scroll = NestedScrollView(it)
scroll.resources.sizeScaled(20).let { scroll.setPadding(it, 0, it, 0) } scroll.resources.sizeScaled(20).let { scroll.setPadding(it, 0, it, 0) }
val edit = EditText(it) val edit = TextInputEditText(it)
configureEdit(edit) configureEdit(edit)
edit.id = android.R.id.edit edit.id = android.R.id.edit
edit.setTextSizeScaled(16)
edit.resources.sizeScaled(16) edit.resources.sizeScaled(16)
.let { edit.setPadding(edit.paddingLeft, it, edit.paddingRight, it) } .let { edit.setPadding(edit.paddingLeft, it, edit.paddingRight, it) }
edit.setText(valueToString(Preferences[key])) edit.setText(valueToString(Preferences[key]))
edit.hint = edit.text.toString() edit.hint = edit.text.toString()
edit.setSelection(edit.text.length) edit.text?.let { editable -> edit.setSelection(editable.length) }
edit.requestFocus() edit.requestFocus()
scroll.addView( scroll.addView(
edit, edit,
@ -260,11 +265,11 @@ class SettingsFragment : ScreenFragment() {
} }
} }
private fun LinearLayout.addEditString(key: Preferences.Key<String>, title: String) { private fun LinearLayoutCompat.addEditString(key: Preferences.Key<String>, title: String) {
addEdit(key, title, { it }, { it }, { }) addEdit(key, title, { it }, { it }, { })
} }
private fun LinearLayout.addEditInt( private fun LinearLayoutCompat.addEditInt(
key: Preferences.Key<Int>, key: Preferences.Key<Int>,
title: String, title: String,
range: IntRange? range: IntRange?
@ -280,7 +285,7 @@ class SettingsFragment : ScreenFragment() {
} }
} }
private fun <T : Preferences.Enumeration<T>> LinearLayout.addEnumeration( private fun <T : Preferences.Enumeration<T>> LinearLayoutCompat.addEnumeration(
key: Preferences.Key<T>, key: Preferences.Key<T>,
title: String, title: String,
valueToString: (T) -> String valueToString: (T) -> String
@ -310,8 +315,8 @@ class SettingsFragment : ScreenFragment() {
private val dialogProvider: ((Context) -> AlertDialog)? private val dialogProvider: ((Context) -> AlertDialog)?
) { ) {
val view = parent.inflate(R.layout.preference_item) val view = parent.inflate(R.layout.preference_item)
val title = view.findViewById<TextView>(R.id.title)!! val title = view.findViewById<MaterialTextView>(R.id.title)!!
val summary = view.findViewById<TextView>(R.id.summary)!! val summary = view.findViewById<MaterialTextView>(R.id.summary)!!
val check = view.findViewById<SwitchMaterial>(R.id.check)!! val check = view.findViewById<SwitchMaterial>(R.id.check)!!
private var callback: (() -> Unit)? = null private var callback: (() -> Unit)? = null

View File

@ -6,16 +6,17 @@ import android.os.Bundle
import android.view.* import android.view.*
import android.view.animation.AccelerateInterpolator import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.*
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.circularreveal.CircularRevealFrameLayout
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.Database import com.looker.droidify.database.Database
@ -48,7 +49,7 @@ class TabsFragment : ScreenFragment() {
val tabs = view.findViewById<TabLayout>(R.id.tabs)!! val tabs = view.findViewById<TabLayout>(R.id.tabs)!!
val sectionLayout = view.findViewById<ViewGroup>(R.id.section_layout)!! val sectionLayout = view.findViewById<ViewGroup>(R.id.section_layout)!!
val sectionChange = view.findViewById<View>(R.id.section_change)!! val sectionChange = view.findViewById<View>(R.id.section_change)!!
val sectionName = view.findViewById<TextView>(R.id.section_name)!! val sectionName = view.findViewById<MaterialTextView>(R.id.section_name)!!
val sectionIcon = view.findViewById<ShapeableImageView>(R.id.section_icon)!! val sectionIcon = view.findViewById<ShapeableImageView>(R.id.section_icon)!!
} }
@ -176,7 +177,7 @@ class TabsFragment : ScreenFragment() {
searchQuery = savedInstanceState?.getString(STATE_SEARCH_QUERY).orEmpty() searchQuery = savedInstanceState?.getString(STATE_SEARCH_QUERY).orEmpty()
productFragments.forEach { it.setSearchQuery(searchQuery) } productFragments.forEach { it.setSearchQuery(searchQuery) }
val toolbarExtra = view.findViewById<FrameLayout>(R.id.toolbar_extra)!! val toolbarExtra = view.findViewById<CircularRevealFrameLayout>(R.id.toolbar_extra)!!
toolbarExtra.addView(toolbarExtra.inflate(R.layout.tabs_toolbar)) toolbarExtra.addView(toolbarExtra.inflate(R.layout.tabs_toolbar))
val layout = Layout(view) val layout = Layout(view)
this.layout = layout this.layout = layout
@ -197,7 +198,7 @@ class TabsFragment : ScreenFragment() {
} }
} }
val content = view.findViewById<FrameLayout>(R.id.fragment_content)!! val content = view.findViewById<CircularRevealFrameLayout>(R.id.fragment_content)!!
viewPager = ViewPager2(content.context).apply { viewPager = ViewPager2(content.context).apply {
id = R.id.fragment_pager id = R.id.fragment_pager
@ -208,11 +209,7 @@ class TabsFragment : ScreenFragment() {
.Source.values()[position] .Source.values()[position]
) )
} }
content.addView( content.addView(this)
this,
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT
)
registerOnPageChangeCallback(pageChangeCallback) registerOnPageChangeCallback(pageChangeCallback)
offscreenPageLimit = 1 offscreenPageLimit = 1
} }
@ -263,7 +260,7 @@ class TabsFragment : ScreenFragment() {
background = context.getDrawableCompat(R.drawable.background_border) background = context.getDrawableCompat(R.drawable.background_border)
backgroundTintList = context.getColorFromAttr(R.attr.colorSurface) backgroundTintList = context.getColorFromAttr(R.attr.colorSurface)
elevation = resources.sizeScaled(4).toFloat() elevation = resources.sizeScaled(4).toFloat()
content.addView(this, FrameLayout.LayoutParams.MATCH_PARENT, 0) content.addView(this)
val margins = resources.sizeScaled(8) val margins = resources.sizeScaled(8)
(layoutParams as ViewGroup.MarginLayoutParams).setMargins(margins, margins, margins, 0) (layoutParams as ViewGroup.MarginLayoutParams).setMargins(margins, margins, margins, 0)
visibility = View.GONE visibility = View.GONE
@ -516,12 +513,12 @@ class TabsFragment : ScreenFragment() {
enum class ViewType { SECTION } enum class ViewType { SECTION }
private class SectionViewHolder(context: Context) : private class SectionViewHolder(context: Context) :
RecyclerView.ViewHolder(TextView(context)) { RecyclerView.ViewHolder(MaterialTextView(context)) {
val title: TextView val title: MaterialTextView
get() = itemView as TextView get() = itemView as MaterialTextView
init { init {
itemView as TextView itemView as MaterialTextView
itemView.gravity = Gravity.CENTER_VERTICAL itemView.gravity = Gravity.CENTER_VERTICAL
itemView.resources.sizeScaled(16).let { itemView.setPadding(it, 0, it, 0) } itemView.resources.sizeScaled(16).let { itemView.setPadding(it, 0, it, 0) }
itemView.setTextColor(context.getColorFromAttr(android.R.attr.textColor)) itemView.setTextColor(context.getColorFromAttr(android.R.attr.textColor))

View File

@ -13,10 +13,10 @@ import android.util.Xml
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import coil.util.CoilUtils import coil.util.CoilUtils
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
import com.google.android.material.textview.MaterialTextView
import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.extension.android.Android
import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParser
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -88,7 +88,7 @@ fun Resources.sizeScaled(size: Int): Int {
return (size * displayMetrics.density).roundToInt() return (size * displayMetrics.density).roundToInt()
} }
fun TextView.setTextSizeScaled(size: Int) { fun MaterialTextView.setTextSizeScaled(size: Int) {
val realSize = (size * resources.displayMetrics.scaledDensity).roundToInt() val realSize = (size * resources.displayMetrics.scaledDensity).roundToInt()
setTextSize(TypedValue.COMPLEX_UNIT_PX, realSize.toFloat()) setTextSize(TypedValue.COMPLEX_UNIT_PX, realSize.toFloat())
} }

View File

@ -1,67 +0,0 @@
package com.looker.droidify.widget
import android.text.Selection
import android.text.Spannable
import android.text.method.MovementMethod
import android.text.style.ClickableSpan
import android.view.KeyEvent
import android.view.MotionEvent
import android.widget.TextView
object ClickableMovementMethod : MovementMethod {
override fun initialize(widget: TextView, text: Spannable) {
Selection.removeSelection(text)
}
override fun onTouchEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean {
val action = event.action
val down = action == MotionEvent.ACTION_DOWN
val up = action == MotionEvent.ACTION_UP
return (down || up) && run {
val x = event.x.toInt() - widget.totalPaddingLeft + widget.scrollX
val y = event.y.toInt() - widget.totalPaddingTop + widget.scrollY
val layout = widget.layout
val line = layout.getLineForVertical(y)
val offset = layout.getOffsetForHorizontal(line, x.toFloat())
val span = text.getSpans(offset, offset, ClickableSpan::class.java)?.firstOrNull()
if (span != null) {
if (down) {
Selection.setSelection(text, text.getSpanStart(span), text.getSpanEnd(span))
} else {
span.onClick(widget)
}
true
} else {
Selection.removeSelection(text)
false
}
}
}
override fun onKeyDown(
widget: TextView,
text: Spannable,
keyCode: Int,
event: KeyEvent
): Boolean = false
override fun onKeyUp(
widget: TextView,
text: Spannable,
keyCode: Int,
event: KeyEvent
): Boolean = false
override fun onKeyOther(view: TextView, text: Spannable, event: KeyEvent): Boolean = false
override fun onTakeFocus(widget: TextView, text: Spannable, direction: Int) = Unit
override fun onTrackballEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean =
false
override fun onGenericMotionEvent(
widget: TextView,
text: Spannable,
event: MotionEvent
): Boolean = false
override fun canSelectArbitrarily(): Boolean = false
}

View File

@ -1,11 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="?android:attr/textColor" android:fillColor="?android:attr/textColor"
android:pathData="M18,13h-5v5c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1v-5H6c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h5V6c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v5h5c0.55,0 1,0.45 1,1s-0.45,1 -1,1z"/> android:pathData="M18,13h-5v5c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1v-5H6c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h5V6c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v5h5c0.55,0 1,0.45 1,1s-0.45,1 -1,1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M15.88,9.29L12,13.17 8.12,9.29c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.38 -1.03,-0.39 -1.42,0z"/> android:pathData="M15.88,9.29L12,13.17 8.12,9.29c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.38 -1.03,-0.39 -1.42,0z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M19,8h-1.81c-0.45,-0.78 -1.07,-1.45 -1.82,-1.96l0.93,-0.93c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.39 -1.02,-0.39 -1.41,0l-1.47,1.47C12.96,5.06 12.49,5 12,5s-0.96,0.06 -1.41,0.17L9.11,3.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41l0.92,0.93C7.88,6.55 7.26,7.22 6.81,8L5,8c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1.09c-0.05,0.33 -0.09,0.66 -0.09,1v1L5,12c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1v1c0,0.34 0.04,0.67 0.09,1L5,16c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1.81c1.04,1.79 2.97,3 5.19,3s4.15,-1.21 5.19,-3L19,18c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-1.09c0.05,-0.33 0.09,-0.66 0.09,-1v-1h1c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-1v-1c0,-0.34 -0.04,-0.67 -0.09,-1L19,10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1zM13,16h-2c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h2c0.55,0 1,0.45 1,1s-0.45,1 -1,1zM13,12h-2c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h2c0.55,0 1,0.45 1,1s-0.45,1 -1,1z"/> android:pathData="M19,8h-1.81c-0.45,-0.78 -1.07,-1.45 -1.82,-1.96l0.93,-0.93c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.39 -1.02,-0.39 -1.41,0l-1.47,1.47C12.96,5.06 12.49,5 12,5s-0.96,0.06 -1.41,0.17L9.11,3.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41l0.92,0.93C7.88,6.55 7.26,7.22 6.81,8L5,8c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1.09c-0.05,0.33 -0.09,0.66 -0.09,1v1L5,12c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1v1c0,0.34 0.04,0.67 0.09,1L5,16c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h1.81c1.04,1.79 2.97,3 5.19,3s4.15,-1.21 5.19,-3L19,18c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-1.09c0.05,-0.33 0.09,-0.66 0.09,-1v-1h1c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-1v-1c0,-0.34 -0.04,-0.67 -0.09,-1L19,10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1zM13,16h-2c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h2c0.55,0 1,0.45 1,1s-0.45,1 -1,1zM13,12h-2c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h2c0.55,0 1,0.45 1,1s-0.45,1 -1,1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface"> <path
<path android:fillColor="@android:color/white"
android:fillColor="@android:color/white" android:pathData="M18.3,5.71c-0.39,-0.39 -1.02,-0.39 -1.41,0L12,10.59 7.11,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41L10.59,12 5.7,16.89c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L12,13.41l4.89,4.89c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L13.41,12l4.89,-4.89c0.38,-0.38 0.38,-1.02 0,-1.4z" />
android:pathData="M18.3,5.71c-0.39,-0.39 -1.02,-0.39 -1.41,0L12,10.59 7.11,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41L10.59,12 5.7,16.89c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L12,13.41l4.89,4.89c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L13.41,12l4.89,-4.89c0.38,-0.38 0.38,-1.02 0,-1.4z"/>
</vector> </vector>

View File

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@color/white" android:fillColor="@color/white"
android:pathData="M8.0855,18.6109L14.0817,4.6064C14.2991,4.0987 14.8868,3.8633 15.3946,4.0807C15.866,4.2826 16.1026,4.8038 15.96,5.2837L15.9202,5.3936L9.9241,19.3981C9.7067,19.9058 9.1189,20.1412 8.6112,19.9238C8.1398,19.722 7.9032,19.2007 8.0458,18.7208L8.0855,18.6109L14.0817,4.6064L8.0855,18.6109ZM2.2929,11.2929L6.2929,7.2929C6.6834,6.9024 7.3166,6.9024 7.7071,7.2929C8.0676,7.6534 8.0953,8.2206 7.7903,8.6129L7.7071,8.7071L4.4142,12L7.7071,15.2929C8.0976,15.6834 8.0976,16.3166 7.7071,16.7071C7.3466,17.0676 6.7794,17.0953 6.3871,16.7903L6.2929,16.7071L2.2929,12.7071C1.9324,12.3466 1.9047,11.7794 2.2097,11.3871L2.2929,11.2929L6.2929,7.2929L2.2929,11.2929ZM16.2921,7.2917C16.6526,6.9312 17.2198,6.9035 17.6121,7.2085L17.7063,7.2917L21.7071,11.2929C22.0678,11.6536 22.0953,12.2211 21.7899,12.6134L21.7066,12.7076L17.7058,16.7031C17.315,17.0934 16.6819,17.0929 16.2916,16.7022C15.9313,16.3414 15.904,15.7742 16.2093,15.3821L16.2925,15.288L19.5854,11.9995L16.292,8.7059C15.9015,8.3153 15.9015,7.6822 16.2921,7.2917Z" /> android:pathData="M8.0855,18.6109L14.0817,4.6064C14.2991,4.0987 14.8868,3.8633 15.3946,4.0807C15.866,4.2826 16.1026,4.8038 15.96,5.2837L15.9202,5.3936L9.9241,19.3981C9.7067,19.9058 9.1189,20.1412 8.6112,19.9238C8.1398,19.722 7.9032,19.2007 8.0458,18.7208L8.0855,18.6109L14.0817,4.6064L8.0855,18.6109ZM2.2929,11.2929L6.2929,7.2929C6.6834,6.9024 7.3166,6.9024 7.7071,7.2929C8.0676,7.6534 8.0953,8.2206 7.7903,8.6129L7.7071,8.7071L4.4142,12L7.7071,15.2929C8.0976,15.6834 8.0976,16.3166 7.7071,16.7071C7.3466,17.0676 6.7794,17.0953 6.3871,16.7903L6.2929,16.7071L2.2929,12.7071C1.9324,12.3466 1.9047,11.7794 2.2097,11.3871L2.2929,11.2929L6.2929,7.2929L2.2929,11.2929ZM16.2921,7.2917C16.6526,6.9312 17.2198,6.9035 17.6121,7.2085L17.7063,7.2917L21.7071,11.2929C22.0678,11.6536 22.0953,12.2211 21.7899,12.6134L21.7066,12.7076L17.7058,16.7031C17.315,17.0934 16.6819,17.0929 16.2916,16.7022C15.9313,16.3414 15.904,15.7742 16.2093,15.3821L16.2925,15.288L19.5854,11.9995L16.292,8.7059C15.9015,8.3153 15.9015,7.6822 16.2921,7.2917Z" />

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M10.08,10.86c0.05,-0.33 0.16,-0.62 0.3,-0.87s0.34,-0.46 0.59,-0.62c0.24,-0.15 0.54,-0.22 0.91,-0.23 0.23,0.01 0.44,0.05 0.63,0.13 0.2,0.09 0.38,0.21 0.52,0.36s0.25,0.33 0.34,0.53 0.13,0.42 0.14,0.64h1.79c-0.02,-0.47 -0.11,-0.9 -0.28,-1.29s-0.4,-0.73 -0.7,-1.01 -0.66,-0.5 -1.08,-0.66 -0.88,-0.23 -1.39,-0.23c-0.65,0 -1.22,0.11 -1.7,0.34s-0.88,0.53 -1.2,0.92 -0.56,0.84 -0.71,1.36S8,11.29 8,11.87v0.27c0,0.58 0.08,1.12 0.23,1.64s0.39,0.97 0.71,1.35 0.72,0.69 1.2,0.91c0.48,0.22 1.05,0.34 1.7,0.34 0.47,0 0.91,-0.08 1.32,-0.23s0.77,-0.36 1.08,-0.63 0.56,-0.58 0.74,-0.94 0.29,-0.74 0.3,-1.15h-1.79c-0.01,0.21 -0.06,0.4 -0.15,0.58s-0.21,0.33 -0.36,0.46 -0.32,0.23 -0.52,0.3c-0.19,0.07 -0.39,0.09 -0.6,0.1 -0.36,-0.01 -0.66,-0.08 -0.89,-0.23 -0.25,-0.16 -0.45,-0.37 -0.59,-0.62s-0.25,-0.55 -0.3,-0.88 -0.08,-0.67 -0.08,-1v-0.27c0,-0.35 0.03,-0.68 0.08,-1.01zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/> android:pathData="M10.08,10.86c0.05,-0.33 0.16,-0.62 0.3,-0.87s0.34,-0.46 0.59,-0.62c0.24,-0.15 0.54,-0.22 0.91,-0.23 0.23,0.01 0.44,0.05 0.63,0.13 0.2,0.09 0.38,0.21 0.52,0.36s0.25,0.33 0.34,0.53 0.13,0.42 0.14,0.64h1.79c-0.02,-0.47 -0.11,-0.9 -0.28,-1.29s-0.4,-0.73 -0.7,-1.01 -0.66,-0.5 -1.08,-0.66 -0.88,-0.23 -1.39,-0.23c-0.65,0 -1.22,0.11 -1.7,0.34s-0.88,0.53 -1.2,0.92 -0.56,0.84 -0.71,1.36S8,11.29 8,11.87v0.27c0,0.58 0.08,1.12 0.23,1.64s0.39,0.97 0.71,1.35 0.72,0.69 1.2,0.91c0.48,0.22 1.05,0.34 1.7,0.34 0.47,0 0.91,-0.08 1.32,-0.23s0.77,-0.36 1.08,-0.63 0.56,-0.58 0.74,-0.94 0.29,-0.74 0.3,-1.15h-1.79c-0.01,0.21 -0.06,0.4 -0.15,0.58s-0.21,0.33 -0.36,0.46 -0.32,0.23 -0.52,0.3c-0.19,0.07 -0.39,0.09 -0.6,0.1 -0.36,-0.01 -0.66,-0.08 -0.89,-0.23 -0.25,-0.16 -0.45,-0.37 -0.59,-0.62s-0.25,-0.55 -0.3,-0.88 -0.08,-0.67 -0.08,-1v-0.27c0,-0.35 0.03,-0.68 0.08,-1.01zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" />
</vector> </vector>

View File

@ -2,11 +2,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V9c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v10zM18,4h-2.5l-0.71,-0.71c-0.18,-0.18 -0.44,-0.29 -0.7,-0.29H9.91c-0.26,0 -0.52,0.11 -0.7,0.29L8.5,4H6c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1z"/> android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V9c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v10zM18,4h-2.5l-0.71,-0.71c-0.18,-0.18 -0.44,-0.29 -0.7,-0.29H9.91c-0.26,0 -0.52,0.11 -0.7,0.29L8.5,4H6c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M11.8,10.9c-2.27,-0.59 -3,-1.2 -3,-2.15 0,-1.09 1.01,-1.85 2.7,-1.85 1.42,0 2.13,0.54 2.39,1.4 0.12,0.4 0.45,0.7 0.87,0.7h0.3c0.66,0 1.13,-0.65 0.9,-1.27 -0.42,-1.18 -1.4,-2.16 -2.96,-2.54V4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,3.67 10,4.5v0.66c-1.94,0.42 -3.5,1.68 -3.5,3.61 0,2.31 1.91,3.46 4.7,4.13 2.5,0.6 3,1.48 3,2.41 0,0.69 -0.49,1.79 -2.7,1.79 -1.65,0 -2.5,-0.59 -2.83,-1.43 -0.15,-0.39 -0.49,-0.67 -0.9,-0.67h-0.28c-0.67,0 -1.14,0.68 -0.89,1.3 0.57,1.39 1.9,2.21 3.4,2.53v0.67c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-0.65c1.95,-0.37 3.5,-1.5 3.5,-3.55 0,-2.84 -2.43,-3.81 -4.7,-4.4z"/> android:pathData="M11.8,10.9c-2.27,-0.59 -3,-1.2 -3,-2.15 0,-1.09 1.01,-1.85 2.7,-1.85 1.42,0 2.13,0.54 2.39,1.4 0.12,0.4 0.45,0.7 0.87,0.7h0.3c0.66,0 1.13,-0.65 0.9,-1.27 -0.42,-1.18 -1.4,-2.16 -2.96,-2.54V4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,3.67 10,4.5v0.66c-1.94,0.42 -3.5,1.68 -3.5,3.61 0,2.31 1.91,3.46 4.7,4.13 2.5,0.6 3,1.48 3,2.41 0,0.69 -0.49,1.79 -2.7,1.79 -1.65,0 -2.5,-0.59 -2.83,-1.43 -0.15,-0.39 -0.49,-0.67 -0.9,-0.67h-0.28c-0.67,0 -1.14,0.68 -0.89,1.3 0.57,1.39 1.9,2.21 3.4,2.53v0.67c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-0.65c1.95,-0.37 3.5,-1.5 3.5,-3.55 0,-2.84 -2.43,-3.81 -4.7,-4.4z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M16.59,9H15V4c0,-0.55 -0.45,-1 -1,-1h-4c-0.55,0 -1,0.45 -1,1v5H7.41c-0.89,0 -1.34,1.08 -0.71,1.71l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59c0.63,-0.63 0.19,-1.71 -0.7,-1.71zM5,19c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H6c-0.55,0 -1,0.45 -1,1z"/> android:pathData="M16.59,9H15V4c0,-0.55 -0.45,-1 -1,-1h-4c-0.55,0 -1,0.45 -1,1v5H7.41c-0.89,0 -1.34,1.08 -0.71,1.71l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59c0.63,-0.63 0.19,-1.71 -0.7,-1.71zM5,19c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H6c-0.55,0 -1,0.45 -1,1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M3,17.46v3.04c0,0.28 0.22,0.5 0.5,0.5h3.04c0.13,0 0.26,-0.05 0.35,-0.15L17.81,9.94l-3.75,-3.75L3.15,17.1c-0.1,0.1 -0.15,0.22 -0.15,0.36zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/> android:pathData="M3,17.46v3.04c0,0.28 0.22,0.5 0.5,0.5h3.04c0.13,0 0.26,-0.05 0.35,-0.15L17.81,9.94l-3.75,-3.75L3.15,17.1c-0.1,0.1 -0.15,0.22 -0.15,0.36zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM19.6,8.25l-7.07,4.42c-0.32,0.2 -0.74,0.2 -1.06,0L4.4,8.25c-0.25,-0.16 -0.4,-0.43 -0.4,-0.72 0,-0.67 0.73,-1.07 1.3,-0.72L12,11l6.7,-4.19c0.57,-0.35 1.3,0.05 1.3,0.72 0,0.29 -0.15,0.56 -0.4,0.72z"/> android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM19.6,8.25l-7.07,4.42c-0.32,0.2 -0.74,0.2 -1.06,0L4.4,8.25c-0.25,-0.16 -0.4,-0.43 -0.4,-0.72 0,-0.67 0.73,-1.07 1.3,-0.72L12,11l6.7,-4.19c0.57,-0.35 1.3,0.05 1.3,0.72 0,0.29 -0.15,0.56 -0.4,0.72z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M13.26,3C8.17,2.86 4,6.95 4,12L2.21,12c-0.45,0 -0.67,0.54 -0.35,0.85l2.79,2.8c0.2,0.2 0.51,0.2 0.71,0l2.79,-2.8c0.31,-0.31 0.09,-0.85 -0.36,-0.85L6,12c0,-3.9 3.18,-7.05 7.1,-7 3.72,0.05 6.85,3.18 6.9,6.9 0.05,3.91 -3.1,7.1 -7,7.1 -1.61,0 -3.1,-0.55 -4.28,-1.48 -0.4,-0.31 -0.96,-0.28 -1.32,0.08 -0.42,0.42 -0.39,1.13 0.08,1.49C9,20.29 10.91,21 13,21c5.05,0 9.14,-4.17 9,-9.26 -0.13,-4.69 -4.05,-8.61 -8.74,-8.74zM12.75,8c-0.41,0 -0.75,0.34 -0.75,0.75v3.68c0,0.35 0.19,0.68 0.49,0.86l3.12,1.85c0.36,0.21 0.82,0.09 1.03,-0.26 0.21,-0.36 0.09,-0.82 -0.26,-1.03l-2.88,-1.71v-3.4c0,-0.4 -0.34,-0.74 -0.75,-0.74z"/> android:pathData="M13.26,3C8.17,2.86 4,6.95 4,12L2.21,12c-0.45,0 -0.67,0.54 -0.35,0.85l2.79,2.8c0.2,0.2 0.51,0.2 0.71,0l2.79,-2.8c0.31,-0.31 0.09,-0.85 -0.36,-0.85L6,12c0,-3.9 3.18,-7.05 7.1,-7 3.72,0.05 6.85,3.18 6.9,6.9 0.05,3.91 -3.1,7.1 -7,7.1 -1.61,0 -3.1,-0.55 -4.28,-1.48 -0.4,-0.31 -0.96,-0.28 -1.32,0.08 -0.42,0.42 -0.39,1.13 0.08,1.49C9,20.29 10.91,21 13,21c5.05,0 9.14,-4.17 9,-9.26 -0.13,-4.69 -4.05,-8.61 -8.74,-8.74zM12.75,8c-0.41,0 -0.75,0.34 -0.75,0.75v3.68c0,0.35 0.19,0.68 0.49,0.86l3.12,1.85c0.36,0.21 0.82,0.09 1.03,-0.26 0.21,-0.36 0.09,-0.82 -0.26,-1.03l-2.88,-1.71v-3.4c0,-0.4 -0.34,-0.74 -0.75,-0.74z" />
</vector> </vector>

View File

@ -1,11 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:autoMirrored="true"
android:viewportHeight="24"
android:tint="?attr/colorOnSurface" android:tint="?attr/colorOnSurface"
android:autoMirrored="true"> android:viewportWidth="24"
android:viewportHeight="24">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M18,19H6c-0.55,0 -1,-0.45 -1,-1V6c0,-0.55 0.45,-1 1,-1h5c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2v-6c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v5c0,0.55 -0.45,1 -1,1zM14,4c0,0.55 0.45,1 1,1h2.59l-9.13,9.13c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L19,6.41V9c0,0.55 0.45,1 1,1s1,-0.45 1,-1V3h-6c-0.55,0 -1,0.45 -1,1z"/> android:pathData="M18,19H6c-0.55,0 -1,-0.45 -1,-1V6c0,-0.55 0.45,-1 1,-1h5c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2v-6c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v5c0,0.55 -0.45,1 -1,1zM14,4c0,0.55 0.45,1 1,1h2.59l-9.13,9.13c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L19,6.41V9c0,0.55 0.45,1 1,1s1,-0.45 1,-1V3h-6c-0.55,0 -1,0.45 -1,1z" />
</vector> </vector>

View File

@ -1,11 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M22.42,11.34l-1.86,-2.12 0.26,-2.81c0.05,-0.5 -0.29,-0.96 -0.77,-1.07l-2.76,-0.63 -1.44,-2.43c-0.26,-0.43 -0.79,-0.61 -1.25,-0.41L12,3 9.41,1.89c-0.46,-0.2 -1,-0.02 -1.25,0.41L6.71,4.72l-2.75,0.62c-0.49,0.11 -0.83,0.56 -0.78,1.07l0.26,2.8 -1.86,2.13c-0.33,0.38 -0.33,0.94 0,1.32l1.86,2.12 -0.26,2.82c-0.05,0.5 0.29,0.96 0.77,1.07l2.76,0.63 1.44,2.42c0.26,0.43 0.79,0.61 1.26,0.41L12,21l2.59,1.11c0.46,0.2 1,0.02 1.25,-0.41l1.44,-2.43 2.76,-0.63c0.49,-0.11 0.82,-0.57 0.77,-1.07l-0.26,-2.81 1.86,-2.12c0.34,-0.36 0.34,-0.92 0.01,-1.3zM13,17h-2v-2h2v2zM12,13c-0.55,0 -1,-0.45 -1,-1L11,8c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v4c0,0.55 -0.45,1 -1,1z"/> android:pathData="M22.42,11.34l-1.86,-2.12 0.26,-2.81c0.05,-0.5 -0.29,-0.96 -0.77,-1.07l-2.76,-0.63 -1.44,-2.43c-0.26,-0.43 -0.79,-0.61 -1.25,-0.41L12,3 9.41,1.89c-0.46,-0.2 -1,-0.02 -1.25,0.41L6.71,4.72l-2.75,0.62c-0.49,0.11 -0.83,0.56 -0.78,1.07l0.26,2.8 -1.86,2.13c-0.33,0.38 -0.33,0.94 0,1.32l1.86,2.12 -0.26,2.82c-0.05,0.5 0.29,0.96 0.77,1.07l2.76,0.63 1.44,2.42c0.26,0.43 0.79,0.61 1.26,0.41L12,21l2.59,1.11c0.46,0.2 1,0.02 1.25,-0.41l1.44,-2.43 2.76,-0.63c0.49,-0.11 0.82,-0.57 0.77,-1.07l-0.26,-2.81 1.86,-2.12c0.34,-0.36 0.34,-0.92 0.01,-1.3zM13,17h-2v-2h2v2zM12,13c-0.55,0 -1,-0.45 -1,-1L11,8c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v4c0,0.55 -0.45,1 -1,1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M13,7h-2v2h2L13,7zM12,11c-0.55,0 -1,0.45 -1,1v4c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-4c0,-0.55 -0.45,-1 -1,-1zM17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14z"/> android:pathData="M13,7h-2v2h2L13,7zM12,11c-0.55,0 -1,0.45 -1,1v4c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-4c0,-0.55 -0.45,-1 -1,-1zM17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v1c0,0.55 0.45,1 1,1h14c0.55,0 1,-0.45 1,-1v-1c0,-2.66 -5.33,-4 -8,-4z"/> android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v1c0,0.55 0.45,1 1,1h14c0.55,0 1,-0.45 1,-1v-1c0,-2.66 -5.33,-4 -8,-4z" />
</vector> </vector>

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M12,12m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"/> android:pathData="M12,12m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0" />
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M20,4h-3.17l-1.24,-1.35c-0.37,-0.41 -0.91,-0.65 -1.47,-0.65L9.88,2c-0.56,0 -1.1,0.24 -1.48,0.65L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"/> android:pathData="M20,4h-3.17l-1.24,-1.35c-0.37,-0.41 -0.91,-0.65 -1.47,-0.65L9.88,2c-0.56,0 -1.1,0.24 -1.48,0.65L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M17.59,3.59c-0.38,-0.38 -0.89,-0.59 -1.42,-0.59L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7.83c0,-0.53 -0.21,-1.04 -0.59,-1.41l-2.82,-2.83zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM13,9L7,9c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2h6c1.1,0 2,0.9 2,2s-0.9,2 -2,2z"/> android:pathData="M17.59,3.59c-0.38,-0.38 -0.89,-0.59 -1.42,-0.59L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7.83c0,-0.53 -0.21,-1.04 -0.59,-1.41l-2.82,-2.83zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM13,9L7,9c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2h6c1.1,0 2,0.9 2,2s-0.9,2 -2,2z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M15.5,14h-0.79l-0.28,-0.27c1.2,-1.4 1.82,-3.31 1.48,-5.34 -0.47,-2.78 -2.79,-5 -5.59,-5.34 -4.23,-0.52 -7.79,3.04 -7.27,7.27 0.34,2.8 2.56,5.12 5.34,5.59 2.03,0.34 3.94,-0.28 5.34,-1.48l0.27,0.28v0.79l4.25,4.25c0.41,0.41 1.08,0.41 1.49,0 0.41,-0.41 0.41,-1.08 0,-1.49L15.5,14zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/> android:pathData="M15.5,14h-0.79l-0.28,-0.27c1.2,-1.4 1.82,-3.31 1.48,-5.34 -0.47,-2.78 -2.79,-5 -5.59,-5.34 -4.23,-0.52 -7.79,3.04 -7.27,7.27 0.34,2.8 2.56,5.12 5.34,5.59 2.03,0.34 3.94,-0.28 5.34,-1.48l0.27,0.28v0.79l4.25,4.25c0.41,0.41 1.08,0.41 1.49,0 0.41,-0.41 0.41,-1.08 0,-1.49L15.5,14zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
</vector> </vector>

View File

@ -1,11 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:autoMirrored="true"
android:viewportHeight="24"
android:tint="?attr/colorOnSurface" android:tint="?attr/colorOnSurface"
android:autoMirrored="true"> android:viewportWidth="24"
android:viewportHeight="24">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M4,18h4c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,16c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM3,7c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,6c-0.55,0 -1,0.45 -1,1zM4,13h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1z"/> android:pathData="M4,18h4c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,16c-0.55,0 -1,0.45 -1,1s0.45,1 1,1zM3,7c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,6c-0.55,0 -1,0.45 -1,1zM4,13h10c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1L4,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M12,4L12,2.21c0,-0.45 -0.54,-0.67 -0.85,-0.35l-2.8,2.79c-0.2,0.2 -0.2,0.51 0,0.71l2.79,2.79c0.32,0.31 0.86,0.09 0.86,-0.36L12,6c3.31,0 6,2.69 6,6 0,0.79 -0.15,1.56 -0.44,2.25 -0.15,0.36 -0.04,0.77 0.23,1.04 0.51,0.51 1.37,0.33 1.64,-0.34 0.37,-0.91 0.57,-1.91 0.57,-2.95 0,-4.42 -3.58,-8 -8,-8zM12,18c-3.31,0 -6,-2.69 -6,-6 0,-0.79 0.15,-1.56 0.44,-2.25 0.15,-0.36 0.04,-0.77 -0.23,-1.04 -0.51,-0.51 -1.37,-0.33 -1.64,0.34C4.2,9.96 4,10.96 4,12c0,4.42 3.58,8 8,8v1.79c0,0.45 0.54,0.67 0.85,0.35l2.79,-2.79c0.2,-0.2 0.2,-0.51 0,-0.71l-2.79,-2.79c-0.31,-0.31 -0.85,-0.09 -0.85,0.36L12,18z"/> android:pathData="M12,4L12,2.21c0,-0.45 -0.54,-0.67 -0.85,-0.35l-2.8,2.79c-0.2,0.2 -0.2,0.51 0,0.71l2.79,2.79c0.32,0.31 0.86,0.09 0.86,-0.36L12,6c3.31,0 6,2.69 6,6 0,0.79 -0.15,1.56 -0.44,2.25 -0.15,0.36 -0.04,0.77 0.23,1.04 0.51,0.51 1.37,0.33 1.64,-0.34 0.37,-0.91 0.57,-1.91 0.57,-2.95 0,-4.42 -3.58,-8 -8,-8zM12,18c-3.31,0 -6,-2.69 -6,-6 0,-0.79 0.15,-1.56 0.44,-2.25 0.15,-0.36 0.04,-0.77 -0.23,-1.04 -0.51,-0.51 -1.37,-0.33 -1.64,0.34C4.2,9.96 4,10.96 4,12c0,4.42 3.58,8 8,8v1.79c0,0.45 0.54,0.67 0.85,0.35l2.79,-2.79c0.2,-0.2 0.2,-0.51 0,-0.71l-2.79,-2.79c-0.31,-0.31 -0.85,-0.09 -0.85,0.36L12,18z" />
</vector> </vector>

View File

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:tint="?attr/colorOnSurface"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24" android:viewportHeight="24">
android:tint="?attr/colorOnSurface">
<path <path
android:fillColor="@android:color/white" android:fillColor="@android:color/white"
android:pathData="M3,18c0,0.55 0.45,1 1,1h5v-2L4,17c-0.55,0 -1,0.45 -1,1zM3,6c0,0.55 0.45,1 1,1h9L13,5L4,5c-0.55,0 -1,0.45 -1,1zM13,20v-1h7c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-7v-1c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v4c0,0.55 0.45,1 1,1s1,-0.45 1,-1zM7,10v1L4,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h3v1c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-4c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1zM21,12c0,-0.55 -0.45,-1 -1,-1h-9v2h9c0.55,0 1,-0.45 1,-1zM16,9c0.55,0 1,-0.45 1,-1L17,7h3c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-3L17,4c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v4c0,0.55 0.45,1 1,1z"/> android:pathData="M3,18c0,0.55 0.45,1 1,1h5v-2L4,17c-0.55,0 -1,0.45 -1,1zM3,6c0,0.55 0.45,1 1,1h9L13,5L4,5c-0.55,0 -1,0.45 -1,1zM13,20v-1h7c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-7v-1c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v4c0,0.55 0.45,1 1,1s1,-0.45 1,-1zM7,10v1L4,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h3v1c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-4c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1zM21,12c0,-0.55 -0.45,-1 -1,-1h-9v2h9c0.55,0 1,-0.45 1,-1zM16,9c0.55,0 1,-0.45 1,-1L17,7h3c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-3L17,4c0,-0.55 -0.45,-1 -1,-1s-1,0.45 -1,1v4c0,0.55 0.45,1 1,1z" />
</vector> </vector>

View File

@ -11,7 +11,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"> android:fillViewport="true">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
@ -19,7 +19,7 @@
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingBottom="12dp"> android:paddingBottom="12dp">
<FrameLayout <com.google.android.material.circularreveal.CircularRevealFrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -48,7 +48,7 @@
android:visibility="gone" android:visibility="gone"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </com.google.android.material.circularreveal.CircularRevealFrameLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -86,11 +86,11 @@
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/overlay" android:id="@+id/overlay"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -100,12 +100,12 @@
android:orientation="vertical" android:orientation="vertical"
tools:ignore="KeyboardInaccessibleWidget"> tools:ignore="KeyboardInaccessibleWidget">
<ProgressBar <com.google.android.material.progressindicator.LinearProgressIndicator
style="?android:attr/progressBarStyleHorizontal" style="@style/Theme.Progress"
android:layout_width="200dp" android:layout_width="200dp"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<TextView <com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
@ -114,7 +114,7 @@
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
android:textSize="20sp" /> android:textSize="20sp" />
<Button <com.google.android.material.textview.MaterialTextView
android:id="@+id/skip" android:id="@+id/skip"
style="@android:style/Widget.Material.Button.Borderless.Colored" style="@android:style/Widget.Material.Button.Borderless.Colored"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -122,6 +122,6 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="@string/skip" /> android:text="@string/skip" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout> </FrameLayout>

View File

@ -27,13 +27,13 @@
android:layout_height="?actionBarSize" /> android:layout_height="?actionBarSize" />
</com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.CollapsingToolbarLayout>
<FrameLayout <com.google.android.material.circularreveal.CircularRevealFrameLayout
android:id="@+id/toolbar_extra" android:id="@+id/toolbar_extra"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<FrameLayout <com.google.android.material.circularreveal.CircularRevealFrameLayout
android:id="@+id/fragment_content" android:id="@+id/fragment_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -18,14 +18,14 @@
android:tintMode="src_in" android:tintMode="src_in"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/text" android:id="@+id/text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -33,7 +33,7 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/link" android:id="@+id/link"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -41,6 +41,6 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -18,7 +18,7 @@
android:tintMode="src_in" android:tintMode="src_in"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/text" android:id="@+id/text"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -29,4 +29,4 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -20,14 +20,14 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/summary" android:id="@+id/summary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.switchmaterial.SwitchMaterial <com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/check" android:id="@+id/check"
@ -38,4 +38,4 @@
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:visibility="gone" /> android:visibility="gone" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -8,7 +8,7 @@
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingBottom="4dp"> android:paddingBottom="4dp">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
@ -23,14 +23,14 @@
app:shapeAppearanceOverlay="@style/Shape.Medium" app:shapeAppearanceOverlay="@style/Shape.Medium"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/text_margin" android:layout_marginStart="@dimen/text_margin"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/name" android:id="@+id/name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -39,18 +39,18 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="17sp" /> android:textSize="17sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/package_name" android:id="@+id/package_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/status_layout" android:id="@+id/status_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -58,7 +58,7 @@
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:paddingBottom="4dp"> android:paddingBottom="4dp">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/status" android:id="@+id/status"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -74,7 +74,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" /> android:layout_gravity="center_vertical" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/action" android:id="@+id/action"
@ -84,4 +84,4 @@
app:iconGravity="textStart" app:iconGravity="textStart"
app:shapeAppearanceOverlay="@style/PillShapeAppearance" /> app:shapeAppearanceOverlay="@style/PillShapeAppearance" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -9,7 +9,7 @@
app:cardElevation="0dp" app:cardElevation="0dp"
app:strokeWidth="0dp"> app:strokeWidth="0dp">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center_vertical" android:gravity="center_vertical"
@ -23,20 +23,20 @@
app:shapeAppearanceOverlay="@style/Shape.Small" app:shapeAppearanceOverlay="@style/Shape.Small"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="14dp" android:layout_marginStart="14dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/name" android:id="@+id/name"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -45,16 +45,16 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/status" android:id="@+id/status"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxWidth="70dp" android:maxWidth="70dp"
android:singleLine="true" /> android:singleLine="true" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/summary" android:id="@+id/summary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -62,8 +62,8 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>

View File

@ -10,7 +10,7 @@
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/sdk_block" android:id="@+id/sdk_block"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -34,7 +34,7 @@
android:singleLine="true" android:singleLine="true"
android:textColor="?android:textColor" android:textColor="?android:textColor"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/divider1" android:id="@+id/divider1"
@ -42,7 +42,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginVertical="12dp" /> android:layout_marginVertical="12dp" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/version_block" android:id="@+id/version_block"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -66,7 +66,7 @@
android:singleLine="true" android:singleLine="true"
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/divider2" android:id="@+id/divider2"
@ -74,7 +74,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginVertical="12dp" /> android:layout_marginVertical="12dp" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/size_block" android:id="@+id/size_block"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -98,7 +98,7 @@
android:singleLine="true" android:singleLine="true"
android:textColor="?android:textColor" android:textColor="?android:textColor"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/divider3" android:id="@+id/divider3"
@ -117,7 +117,7 @@
app:cardElevation="0dp" app:cardElevation="0dp"
app:strokeWidth="0dp"> app:strokeWidth="0dp">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
@ -142,6 +142,6 @@
android:singleLine="true" android:singleLine="true"
android:textColor="?android:textColor" android:textColor="?android:textColor"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -9,25 +9,25 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="bottom" android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<FrameLayout <com.google.android.material.circularreveal.CircularRevealFrameLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"> android:layout_weight="1">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
tools:ignore="UselessParent"> tools:ignore="UselessParent">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/version" android:id="@+id/version"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -37,7 +37,7 @@
android:textSize="16sp" android:textSize="16sp"
tools:ignore="InefficientWeight" /> tools:ignore="InefficientWeight" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/status" android:id="@+id/status"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -54,11 +54,11 @@
android:textSize="10sp" android:textSize="10sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout> </com.google.android.material.circularreveal.CircularRevealFrameLayout>
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/added" android:id="@+id/added"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -67,14 +67,14 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/source" android:id="@+id/source"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -83,7 +83,7 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/size" android:id="@+id/size"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -92,9 +92,9 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/signature" android:id="@+id/signature"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -102,7 +102,7 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/compatibility" android:id="@+id/compatibility"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -110,4 +110,4 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="54dp" android:layout_height="54dp"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/name" android:id="@+id/name"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -23,4 +23,4 @@
android:paddingStart="12dp" android:paddingStart="12dp"
android:paddingEnd="12dp" /> android:paddingEnd="12dp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -7,7 +7,7 @@
android:orientation="horizontal" android:orientation="horizontal"
android:padding="16dp"> android:padding="16dp">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/title" android:id="@+id/title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -27,4 +27,4 @@
android:tintMode="src_in" android:tintMode="src_in"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.material.circularreveal.CircularRevealFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -11,4 +11,4 @@
android:clickable="false" android:clickable="false"
android:singleLine="true" android:singleLine="true"
android:textSize="15sp" /> android:textSize="15sp" />
</FrameLayout> </com.google.android.material.circularreveal.CircularRevealFrameLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -11,12 +11,12 @@
android:layout_height="48dp" android:layout_height="48dp"
android:background="@drawable/bg_item_rounded_ripple" /> android:background="@drawable/bg_item_rounded_ripple" />
<FrameLayout <com.google.android.material.circularreveal.CircularRevealFrameLayout
android:id="@+id/section_layout" android:id="@+id/section_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp"> android:layout_height="0dp">
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/section_change" android:id="@+id/section_change"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"
@ -27,13 +27,13 @@
android:paddingEnd="12dp" android:paddingEnd="12dp"
tools:ignore="UselessParent"> tools:ignore="UselessParent">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/section_name" android:id="@+id/section_name"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/text_margin"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_marginStart="@dimen/text_margin"
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
@ -45,8 +45,8 @@
android:src="@drawable/ic_arrow_down" android:src="@drawable/ic_arrow_down"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout> </com.google.android.material.circularreveal.CircularRevealFrameLayout>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingHorizontal="16dp" android:paddingHorizontal="16dp"
android:paddingVertical="8dp"> android:paddingVertical="8dp">
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="12sp" /> android:textSize="12sp" />
<TextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/text" android:id="@+id/text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -21,4 +21,4 @@
android:textColor="?android:attr/textColor" android:textColor="?android:attr/textColor"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>