Small screen fixes for ACI safety number screen.

This commit is contained in:
Clark 2023-07-21 14:41:07 -04:00 committed by GitHub
parent 3cee0c1bd5
commit d0a44c3f14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 63 additions and 35 deletions

View file

@ -6,12 +6,15 @@
package org.thoughtcrime.securesms.verify
import android.animation.Animator
import android.app.Dialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import com.airbnb.lottie.LottieDrawable
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.animation.AnimationCompleteListener
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
@ -23,14 +26,21 @@ import org.thoughtcrime.securesms.util.CommunicationActions
import org.thoughtcrime.securesms.util.visible
class PnpSafetyNumberEducationDialogFragment : FixedRoundedCornerBottomSheetDialogFragment() {
override val peekHeightPercentage: Float = 0.66f
private val binding by ViewBinderDelegate(SafetyNumberPnpEducationBottomSheetBinding::bind)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.safety_number_pnp_education_bottom_sheet, container, false)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
dialog.behavior.skipCollapsed = true
dialog.setOnShowListener {
dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
}
return dialog
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

View file

@ -42,6 +42,7 @@ import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.visible
import java.nio.charset.StandardCharsets
import java.util.Locale
import kotlin.math.max
/**
* Fragment to display a user's identity key.
@ -100,8 +101,11 @@ class VerifyDisplayFragment : Fragment(), OnScrollChangedListener {
}
})
val peekSize = resources.getDimensionPixelSize(R.dimen.safety_number_qr_peek)
val pageWidth = resources.getDimensionPixelSize(R.dimen.safety_number_qr_width)
val pageTransformer = ViewPager2.PageTransformer { page: View, position: Float -> page.translationX = -position * (peekSize + (page.width - pageWidth) / 2f) }
val pageTransformer = ViewPager2.PageTransformer { page: View, position: Float ->
val remainingWidth = (max(0, page.width - ((page as ViewGroup).getChildAt(0).width))) / 2f
val peekWidth = peekSize.toFloat().coerceAtMost(remainingWidth / 2f)
page.translationX = -position * (peekWidth + remainingWidth)
}
binding.verifyViewPager.setPageTransformer(pageTransformer)
binding.verifyViewPager.offscreenPageLimit = 1
TabLayoutMediator(binding.dotIndicators, binding.verifyViewPager) { _: TabLayout.Tab?, _: Int -> }.attach()

View file

@ -15,46 +15,61 @@
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/signal_icon_tint_tab_unselected"/>
<TextView
style="@style/Signal.Text.Headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="43dp"
android:text="@string/PnpSafetyNumberEducationDialog__title"
/>
<TextView
style="@style/Signal.Text.BodyMedium"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="start"
android:layout_marginTop="12dp"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="24dp"
android:text="@string/PnpSafetyNumberEducationDialog__body"
/>
android:layout_height="0dp"
android:layout_weight="1">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1dp"
android:layout_marginHorizontal="24dp"
android:background="@drawable/rounded_outline_12"
app:lottie_rawRes="@raw/safety_number_onboarding"/>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/Signal.Text.Headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginTop="33dp"
android:text="@string/PnpSafetyNumberEducationDialog__title"
/>
<TextView
style="@style/Signal.Text.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="start"
android:layout_marginTop="12dp"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="24dp"
android:text="@string/PnpSafetyNumberEducationDialog__body"
/>
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1dp"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="35dp"
android:background="@drawable/rounded_outline_12"
app:lottie_rawRes="@raw/safety_number_onboarding"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="47dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="24dp"
android:gravity="center_vertical">

View file

@ -222,5 +222,4 @@
<dimen name="registrationactivity_text_view_padding">32dp</dimen>
<dimen name="safety_number_qr_peek">24dp</dimen>
<dimen name="safety_number_qr_width">288dp</dimen>
</resources>