mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-16 19:26:12 -04:00
feat(popup): Redesign connection popup with Apple-inspired layout
Large centered device graphics (64dp), vertically stacked battery info, adaptive width, rounded card with tonal close button.
This commit is contained in:
@@ -5,7 +5,7 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.view.ContextThemeWrapper
|
import androidx.appcompat.view.ContextThemeWrapper
|
||||||
import androidx.core.view.isInvisible
|
import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import eu.darken.capod.R
|
import eu.darken.capod.R
|
||||||
@@ -39,10 +39,9 @@ class PopUpPodViewFactory @Inject constructor(
|
|||||||
|
|
||||||
private fun createDualPods(parent: ViewGroup, device: DualPodDevice): View =
|
private fun createDualPods(parent: ViewGroup, device: DualPodDevice): View =
|
||||||
PopupNotificationDualPodsBinding.inflate(layoutInflater, parent, false).apply {
|
PopupNotificationDualPodsBinding.inflate(layoutInflater, parent, false).apply {
|
||||||
podIcon.setImageResource(device.iconRes)
|
|
||||||
podLabel.text = device.getLabel(context)
|
podLabel.text = device.getLabel(context)
|
||||||
signal.text = device.getSignalQuality(context)
|
signal.text = device.getSignalQuality(context)
|
||||||
signal.isInvisible = debugSettings.isDebugModeEnabled.value
|
signal.isGone = debugSettings.isDebugModeEnabled.value
|
||||||
|
|
||||||
// Left
|
// Left
|
||||||
val leftPercent = device.batteryLeftPodPercent
|
val leftPercent = device.batteryLeftPodPercent
|
||||||
@@ -71,7 +70,7 @@ class PopUpPodViewFactory @Inject constructor(
|
|||||||
headphonesIcon.setImageResource(device.iconRes)
|
headphonesIcon.setImageResource(device.iconRes)
|
||||||
headphonesLabel.text = device.getLabel(context)
|
headphonesLabel.text = device.getLabel(context)
|
||||||
signal.text = device.getSignalQuality(context)
|
signal.text = device.getSignalQuality(context)
|
||||||
signal.isInvisible = debugSettings.isDebugModeEnabled.value
|
signal.isGone = debugSettings.isDebugModeEnabled.value
|
||||||
|
|
||||||
val headsetPercent = device.batteryHeadsetPercent
|
val headsetPercent = device.batteryHeadsetPercent
|
||||||
headphonesBatteryIcon.setImageResource(getBatteryDrawable(headsetPercent))
|
headphonesBatteryIcon.setImageResource(getBatteryDrawable(headsetPercent))
|
||||||
|
|||||||
@@ -32,13 +32,15 @@ class PopUpWindow @Inject constructor(
|
|||||||
private val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager
|
private val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager
|
||||||
private val layoutParams = WindowManager.LayoutParams(
|
private val layoutParams = WindowManager.LayoutParams(
|
||||||
WindowManager.LayoutParams.WRAP_CONTENT,
|
WindowManager.LayoutParams.WRAP_CONTENT,
|
||||||
WindowManager.LayoutParams.WRAP_CONTENT, // Display it on top of other application windows
|
WindowManager.LayoutParams.WRAP_CONTENT,
|
||||||
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // Don't let it grab the input focus
|
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
|
||||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // Make the underlying application window visible
|
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
|
||||||
|
|
||||||
PixelFormat.TRANSLUCENT
|
PixelFormat.TRANSLUCENT
|
||||||
).apply {
|
).apply {
|
||||||
gravity = Gravity.BOTTOM
|
gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
|
||||||
|
val dm = appContext.resources.displayMetrics
|
||||||
|
val margin = (24 * dm.density).toInt()
|
||||||
|
width = minOf(dm.widthPixels - margin * 2, (400 * dm.density).toInt())
|
||||||
}
|
}
|
||||||
private val popUpView: View = layoutInflater.inflate(R.layout.popup_window_container_layout, null).apply {
|
private val popUpView: View = layoutInflater.inflate(R.layout.popup_window_container_layout, null).apply {
|
||||||
findViewById<View>(R.id.close_action).setOnClickListener { close() }
|
findViewById<View>(R.id.close_action).setOnClickListener { close() }
|
||||||
|
|||||||
@@ -5,171 +5,184 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/pod_icon"
|
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
|
||||||
android:src="@drawable/devic_earbuds_generic_both"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_label"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_label" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/pod_label"
|
android:id="@+id/pod_label"
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
style="@style/TextAppearance.Material3.TitleLarge"
|
||||||
android:layout_width="0dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:ellipsize="end"
|
||||||
android:layout_marginHorizontal="8dp"
|
android:gravity="center"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
app:layout_constraintEnd_toStartOf="@id/signal"
|
android:maxLines="1"
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_icon"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="AirPods Pro" />
|
tools:text="AirPods Pro" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/signal"
|
android:id="@+id/signal"
|
||||||
style="@style/TextAppearance.Material3.TitleSmall"
|
style="@style/TextAppearance.Material3.LabelMedium"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:drawableEnd="@drawable/ic_baseline_signal_cellular_alt_24"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:minWidth="44dp"
|
app:layout_constraintEnd_toStartOf="@+id/signal_icon"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/pod_label"
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/pod_label"
|
|
||||||
tools:text="-90%" />
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@id/pod_left_container"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_case_container"
|
|
||||||
app:layout_constraintHorizontal_chainStyle="spread"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/pod_label">
|
app:layout_constraintTop_toBottomOf="@id/pod_label"
|
||||||
|
tools:text="29%" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/pod_left_icon"
|
android:id="@+id/signal_icon"
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
android:layout_width="14dp"
|
||||||
android:layout_gravity="center"
|
android:layout_height="14dp"
|
||||||
android:src="@drawable/devic_airpods_gen1_left"
|
android:layout_marginStart="3dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_label"
|
android:src="@drawable/ic_baseline_signal_cellular_alt_24"
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_icon"
|
app:layout_constraintBottom_toBottomOf="@id/signal"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_left_battery_label" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@id/pod_left_battery_icon"
|
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
|
||||||
android:src="@drawable/ic_baseline_battery_unknown_24"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_label"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_left_icon"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_left_battery_label" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/pod_left_battery_label"
|
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_left_battery_icon"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="100%" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/pod_case_container"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="16dp"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_right_container"
|
|
||||||
app:layout_constraintHorizontal_chainStyle="spread"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_left_container"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/pod_label">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/pod_case_icon"
|
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:src="@drawable/devic_airpods_gen1_case"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_icon"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_case_battery_label" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@id/pod_case_battery_icon"
|
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
|
||||||
android:src="@drawable/ic_baseline_battery_unknown_24"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_label"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_case_icon"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_case_battery_label" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/pod_case_battery_label"
|
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_case_battery_icon"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="100%" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@id/pod_right_container"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread"
|
app:layout_constraintStart_toEndOf="@id/signal"
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_case_container"
|
app:layout_constraintTop_toTopOf="@id/signal" />
|
||||||
app:layout_constraintTop_toBottomOf="@id/pod_label">
|
|
||||||
|
|
||||||
<ImageView
|
<!-- Pod columns container with LTR direction to prevent RTL mirroring physical L/R -->
|
||||||
android:id="@+id/pod_right_icon"
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
android:id="@+id/pods_columns_container"
|
||||||
android:layout_gravity="center"
|
android:layout_width="match_parent"
|
||||||
android:src="@drawable/devic_airpods_gen1_right"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_label"
|
android:layout_marginTop="16dp"
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_icon"
|
android:layoutDirection="ltr"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_right_battery_label" />
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/signal">
|
||||||
|
|
||||||
<ImageView
|
<!-- LEFT POD column -->
|
||||||
android:id="@id/pod_right_battery_icon"
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
android:id="@+id/pod_left_container"
|
||||||
android:src="@drawable/ic_baseline_battery_unknown_24"
|
android:layout_width="0dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_label"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_label"
|
app:layout_constraintEnd_toStartOf="@+id/pod_case_container"
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_right_icon"
|
app:layout_constraintHorizontal_chainStyle="spread"
|
||||||
app:layout_constraintTop_toTopOf="@id/pod_right_battery_label" />
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/pod_right_battery_label"
|
<ImageView
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
android:id="@+id/pod_left_icon"
|
||||||
android:layout_width="wrap_content"
|
style="@style/PodInfoItemIcon.Popup.Large"
|
||||||
|
android:src="@drawable/devic_airpods_gen1_left"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/pod_left_battery_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:src="@drawable/ic_baseline_battery_unknown_24"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_label"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/pod_left_icon" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/pod_left_battery_label"
|
||||||
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_icon"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/pod_left_battery_icon"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/pod_left_battery_icon"
|
||||||
|
tools:text="100%" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<!-- CASE column -->
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/pod_case_container"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/pod_right_container"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/pod_left_container"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/pod_case_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup.Large"
|
||||||
|
android:src="@drawable/devic_airpods_gen1_case"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/pod_case_battery_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:src="@drawable/ic_baseline_battery_unknown_24"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_label"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/pod_case_icon" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/pod_case_battery_label"
|
||||||
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_icon"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/pod_case_battery_icon"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/pod_case_battery_icon"
|
||||||
|
tools:text="100%" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<!-- RIGHT POD column -->
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/pod_right_container"
|
||||||
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@id/pod_right_battery_icon"
|
app:layout_constraintStart_toEndOf="@id/pod_case_container"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
tools:text="100%" />
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/pod_right_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup.Large"
|
||||||
|
android:src="@drawable/devic_airpods_gen1_right"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/pod_right_battery_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:src="@drawable/ic_baseline_battery_unknown_24"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_label"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/pod_right_icon" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/pod_right_battery_label"
|
||||||
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="2dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_icon"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/pod_right_battery_icon"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/pod_right_battery_icon"
|
||||||
|
tools:text="100%" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|||||||
@@ -5,75 +5,84 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/headphones_icon"
|
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
|
||||||
android:src="@drawable/devic_earbuds_generic_both"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@id/headphones_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/headphones_label"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@id/headphones_label" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/headphones_label"
|
android:id="@+id/headphones_label"
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
style="@style/TextAppearance.Material3.TitleLarge"
|
||||||
android:layout_width="0dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:ellipsize="end"
|
||||||
android:layout_marginHorizontal="8dp"
|
android:gravity="center"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
app:layout_constraintEnd_toStartOf="@id/signal"
|
android:maxLines="1"
|
||||||
app:layout_constraintStart_toEndOf="@id/headphones_icon"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="AirPods Max" />
|
tools:text="AirPods Max" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/signal"
|
android:id="@+id/signal"
|
||||||
style="@style/TextAppearance.Material3.TitleSmall"
|
style="@style/TextAppearance.Material3.LabelMedium"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:drawableEnd="@drawable/ic_baseline_signal_cellular_alt_24"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:minWidth="44dp"
|
app:layout_constraintEnd_toStartOf="@+id/signal_icon"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/headphones_label"
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/headphones_label"
|
||||||
|
tools:text="29%" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/signal_icon"
|
||||||
|
android:layout_width="14dp"
|
||||||
|
android:layout_height="14dp"
|
||||||
|
android:layout_marginStart="3dp"
|
||||||
|
android:src="@drawable/ic_baseline_signal_cellular_alt_24"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/signal"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@+id/headphones_label"
|
app:layout_constraintStart_toEndOf="@id/signal"
|
||||||
tools:text="-90%" />
|
app:layout_constraintTop_toTopOf="@id/signal" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/headphones_icon"
|
||||||
|
style="@style/PodInfoItemIcon.Popup.Large"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:src="@drawable/devic_earbuds_generic_both"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/signal" />
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/headphones_container"
|
android:id="@+id/headphones_container"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_chainStyle="spread"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/headphones_label">
|
app:layout_constraintTop_toBottomOf="@id/headphones_icon">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@id/headphones_battery_icon"
|
android:id="@+id/headphones_battery_icon"
|
||||||
style="@style/PodInfoItemIcon.Popup"
|
style="@style/PodInfoItemIcon.Popup"
|
||||||
android:src="@drawable/ic_baseline_battery_unknown_24"
|
android:src="@drawable/ic_baseline_battery_unknown_24"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/headphones_battery_label"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/headphones_battery_label"
|
app:layout_constraintEnd_toStartOf="@id/headphones_battery_label"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@id/headphones_battery_label" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/headphones_battery_label"
|
android:id="@+id/headphones_battery_label"
|
||||||
style="@style/TextAppearance.Material3.BodyLarge"
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="2dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/headphones_battery_icon"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@id/headphones_battery_icon"
|
app:layout_constraintStart_toEndOf="@id/headphones_battery_icon"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="@id/headphones_battery_icon"
|
||||||
tools:text="100%" />
|
tools:text="100%" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|||||||
@@ -1,37 +1,38 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
|
<com.google.android.material.card.MaterialCardView 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"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
app:cardCornerRadius="24dp"
|
||||||
|
app:cardElevation="8dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:minWidth="320dp"
|
android:paddingHorizontal="20dp"
|
||||||
android:minHeight="96dp"
|
android:paddingTop="20dp"
|
||||||
android:layout_margin="8dp">
|
android:paddingBottom="16dp">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/popup_content"
|
android:id="@+id/popup_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintBottom_toTopOf="@id/close_action"
|
app:layout_constraintBottom_toTopOf="@id/close_action"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
app:layout_constraintVertical_bias="1.0" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/close_action"
|
android:id="@+id/close_action"
|
||||||
style="@style/Widget.Material3.Button.TextButton"
|
style="@style/Widget.Material3.Button.TonalButton"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
android:text="@string/general_close_action"
|
android:text="@string/general_close_action"
|
||||||
|
app:cornerRadius="24dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
app:layout_constraintHorizontal_bias="1.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/popup_content" />
|
app:layout_constraintTop_toBottomOf="@id/popup_content" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|||||||
@@ -48,6 +48,11 @@
|
|||||||
<item name="android:layout_width">24dp</item>
|
<item name="android:layout_width">24dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="PodInfoItemIcon.Popup.Large">
|
||||||
|
<item name="android:layout_height">64dp</item>
|
||||||
|
<item name="android:layout_width">64dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="PodInfoItemText" parent="TextAppearance.Material3.BodyMedium">
|
<style name="PodInfoItemText" parent="TextAppearance.Material3.BodyMedium">
|
||||||
<item name="android:singleLine">true</item>
|
<item name="android:singleLine">true</item>
|
||||||
<item name="android:ellipsize">end</item>
|
<item name="android:ellipsize">end</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user