diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 05cd8875bc..fd136d3d3c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -366,7 +366,7 @@ android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java index 631a867dfd..ff10d59fe2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java @@ -13,7 +13,6 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.DecelerateInterpolator; @@ -156,8 +155,6 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment { super.onResume(); camera.bindToLifecycle(getViewLifecycleOwner(), this::handleCameraInitializationError); - requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt index c3fd7fb89b..989a29c730 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt @@ -42,6 +42,7 @@ import org.thoughtcrime.securesms.mediasend.v2.text.send.TextStoryPostSendReposi import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.safety.SafetyNumberBottomSheet import org.thoughtcrime.securesms.stories.Stories +import org.thoughtcrime.securesms.util.FullscreenHelper import org.thoughtcrime.securesms.util.navigation.safeNavigate import org.thoughtcrime.securesms.util.visible @@ -155,6 +156,8 @@ class MediaSelectionActivity : } onBackPressedDispatcher.addCallback(OnBackPressed()) + + FullscreenHelper.setLowProfileMode(window) } private fun animateTextStyling(selectedSwitch: TextView, unselectedSwitch: TextView, duration: Long) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt index dce7892a6a..e8c977910d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt @@ -132,7 +132,7 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) { } viewModel.state.observe(viewLifecycleOwner) { state -> - toolbar.title = state.bucketTitle + toolbar.title = state.bucketTitle ?: requireContext().getString(R.string.AttachmentKeyboard_gallery) } val galleryItemsWithSelection = LiveDataUtil.combineLatest( @@ -141,7 +141,7 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) { ) { galleryItems, selectedMedia -> galleryItems.map { if (it is MediaGallerySelectableItem.FileModel) { - it.copy(isSelected = selectedMedia.contains(it.media)) + it.copy(isSelected = selectedMedia.contains(it.media), selectionOneBasedIndex = selectedMedia.indexOf(it.media) + 1) } else { it } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt index 3b6ba2bdc5..461702f50d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt @@ -1,14 +1,17 @@ package org.thoughtcrime.securesms.mediasend.v2.gallery +import android.animation.ValueAnimator import android.graphics.drawable.Drawable import android.view.View import android.widget.ImageView import android.widget.TextView +import androidx.core.view.setPadding import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target -import com.google.android.exoplayer2.ui.AspectRatioFrameLayout +import com.google.android.material.imageview.ShapeableImageView +import org.signal.core.util.DimensionUnit import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.mediasend.Media @@ -26,6 +29,8 @@ typealias OnMediaFolderClicked = (MediaFolder) -> Unit typealias OnMediaClicked = (Media, Boolean) -> Unit private val FILE_VIEW_HOLDER_TAG = Log.tag(MediaGallerySelectableItem.FileViewHolder::class.java) +private const val PAYLOAD_CHECK_CHANGED = 0 +private const val PAYLOAD_INDEX_CHANGED = 1 object MediaGallerySelectableItem { @@ -51,14 +56,10 @@ object MediaGallerySelectableItem { } abstract class BaseViewHolder>(itemView: View) : MappingViewHolder(itemView) { - protected val imageView: ImageView = itemView.findViewById(R.id.media_gallery_image) + protected val imageView: ShapeableImageView = itemView.findViewById(R.id.media_gallery_image) protected val playOverlay: ImageView = itemView.findViewById(R.id.media_gallery_play_overlay) - protected val checkView: ImageView? = itemView.findViewById(R.id.media_gallery_check) + protected val checkView: TextView? = itemView.findViewById(R.id.media_gallery_check) protected val title: TextView? = itemView.findViewById(R.id.media_gallery_title) - - init { - (itemView as AspectRatioFrameLayout).setAspectRatio(1f) - } } class FolderViewHolder(itemView: View, private val onMediaFolderClicked: OnMediaFolderClicked) : BaseViewHolder(itemView) { @@ -74,27 +75,81 @@ object MediaGallerySelectableItem { } } - data class FileModel(val media: Media, val isSelected: Boolean) : MappingModel { + data class FileModel(val media: Media, val isSelected: Boolean, val selectionOneBasedIndex: Int) : MappingModel { override fun areItemsTheSame(newItem: FileModel): Boolean { return newItem.media == media } override fun areContentsTheSame(newItem: FileModel): Boolean { - return newItem.media == media && isSelected == newItem.isSelected + return newItem.media == media && isSelected == newItem.isSelected && selectionOneBasedIndex == newItem.selectionOneBasedIndex + } + + override fun getChangePayload(newItem: FileModel): Any? { + return when { + newItem.media != media -> null + newItem.isSelected != isSelected -> PAYLOAD_CHECK_CHANGED + newItem.selectionOneBasedIndex != selectionOneBasedIndex -> PAYLOAD_INDEX_CHANGED + else -> null + } } } class FileViewHolder(itemView: View, private val onMediaClicked: OnMediaClicked) : BaseViewHolder(itemView) { + + private val selectedPadding = DimensionUnit.DP.toPixels(12f) + private val selectedRadius = DimensionUnit.DP.toPixels(12f) + private var animator: ValueAnimator? = null + override fun bind(model: FileModel) { + checkView?.visible = model.isSelected + checkView?.text = "${model.selectionOneBasedIndex}" + itemView.setOnClickListener { onMediaClicked(model.media, model.isSelected) } + playOverlay.visible = MediaUtil.isVideo(model.media.mimeType) && !model.media.isVideoGif + title?.visible = false + + if (PAYLOAD_INDEX_CHANGED in payload) { + return + } + + if (PAYLOAD_CHECK_CHANGED in payload) { + animateCheckState(model.isSelected) + return + } else { + animator?.cancel() + updateImageView(if (model.isSelected) 1f else 0f) + } + GlideApp.with(imageView) .load(DecryptableStreamUriLoader.DecryptableUri(model.media.uri)) .addListener(ErrorLoggingRequestListener(FILE_VIEW_HOLDER_TAG)) .into(imageView) + } - checkView?.isSelected = model.isSelected - playOverlay.visible = MediaUtil.isVideo(model.media.mimeType) && !model.media.isVideoGif - itemView.setOnClickListener { onMediaClicked(model.media, model.isSelected) } - title?.visible = false + private fun animateCheckState(isSelected: Boolean) { + animator?.cancel() + + val start = if (isSelected) 0f else 1f + val end = if (isSelected) 1f else 0f + + animator = ValueAnimator.ofFloat(start, end).apply { + addUpdateListener { animator -> + val fraction = animator.animatedValue as Float + updateImageView(fraction) + } + start() + } + } + + override fun onDetachedFromWindow() { + animator?.cancel() + } + + private fun updateImageView(fraction: Float) { + val padding = selectedPadding * fraction + imageView.setPadding(padding.toInt()) + + val corners = selectedRadius * fraction + imageView.shapeAppearanceModel = imageView.shapeAppearanceModel.withCornerSize(corners) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryViewModel.kt index e4f402a680..d8b5ff48f9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryViewModel.kt @@ -47,7 +47,7 @@ class MediaGalleryViewModel(bucketId: String?, bucketTitle: String?, private val state.copy( bucketId = bucketId, bucketTitle = bucketTitle, items = media.map { - MediaGallerySelectableItem.FileModel(it, false) + MediaGallerySelectableItem.FileModel(it, false, 0) } ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index a25bfe2557..0030f87a83 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -283,8 +283,8 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { private fun presentImageQualityToggle(quality: SentMediaQuality) { qualityButton.setImageResource( when (quality) { - SentMediaQuality.STANDARD -> R.drawable.ic_sq_36 - SentMediaQuality.HIGH -> R.drawable.ic_hq_36 + SentMediaQuality.STANDARD -> R.drawable.ic_sq_24 + SentMediaQuality.HIGH -> R.drawable.ic_hq_24 } ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt index 5e90c34cc1..4941533fc7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt @@ -34,7 +34,6 @@ object MediaReviewSelectedItem { private val imageView: ImageView = itemView.findViewById(R.id.media_review_selected_image) private val playOverlay: ImageView = itemView.findViewById(R.id.media_review_play_overlay) - private val selectedOverlay: ImageView = itemView.findViewById(R.id.media_review_selected_overlay) override fun bind(model: Model) { Glide.with(imageView) @@ -43,7 +42,7 @@ object MediaReviewSelectedItem { .into(imageView) playOverlay.visible = MediaUtil.isNonGifVideo(model.media) && !model.isSelected - selectedOverlay.isSelected = model.isSelected + imageView.isSelected = model.isSelected itemView.contentDescription = if (model.isSelected) { context.getString(R.string.MediaReviewSelectedItem__tap_to_remove) diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java index c6104dd77c..66cb5a1bf1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java @@ -17,10 +17,12 @@ import android.view.ViewGroup; import android.widget.Toast; import androidx.activity.OnBackPressedCallback; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; import androidx.appcompat.app.AlertDialog; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.bumptech.glide.load.DataSource; @@ -249,16 +251,17 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu restoredModel = null; } + @ColorInt int blackoutColor = ContextCompat.getColor(requireContext(), R.color.signal_colorBackground); if (editorModel == null) { switch (mode) { case AVATAR_EDIT: - editorModel = EditorModel.createForAvatarEdit(); + editorModel = EditorModel.createForAvatarEdit(blackoutColor); break; case AVATAR_CAPTURE: - editorModel = EditorModel.createForAvatarCapture(); + editorModel = EditorModel.createForAvatarCapture(blackoutColor); break; default: - editorModel = EditorModel.create(); + editorModel = EditorModel.create(blackoutColor); break; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java b/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java index b27ae7147e..698e9cd1bf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FullscreenHelper.java @@ -169,4 +169,8 @@ public final class FullscreenHelper { View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } + + public static void setLowProfileMode(@NonNull Window window) { + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java index 2b839f9312..d9bc546863 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java @@ -179,7 +179,7 @@ public final class WallpaperCropActivity extends BaseActivity { int width = displayMetrics.widthPixels; float ratio = width / (float) height; - EditorModel editorModel = EditorModel.createForWallpaperEditing(ratio); + EditorModel editorModel = EditorModel.createForWallpaperEditing(ratio, ContextCompat.getColor(this, R.color.signal_colorBackground)); EditorElement image = new EditorElement(new UriGlideRenderer(imageUri, true, width, height, UriGlideRenderer.WEAK_BLUR)); image.getFlags() diff --git a/app/src/main/res/color/media_selection_stroke.xml b/app/src/main/res/color/media_selection_stroke.xml new file mode 100644 index 0000000000..91057ee334 --- /dev/null +++ b/app/src/main/res/color/media_selection_stroke.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-ldrtl/persistent_fading_edge.xml b/app/src/main/res/drawable-ldrtl/persistent_fading_edge.xml index 12dcc6edf5..718c8441a9 100644 --- a/app/src/main/res/drawable-ldrtl/persistent_fading_edge.xml +++ b/app/src/main/res/drawable-ldrtl/persistent_fading_edge.xml @@ -4,5 +4,5 @@ android:type="linear" android:angle="180" android:startColor="@color/transparent" - android:endColor="@color/black" /> + android:endColor="@color/signal_dark_colorBackground" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/add_media.xml b/app/src/main/res/drawable/add_media.xml index 9210636aa0..fff66dfe43 100644 --- a/app/src/main/res/drawable/add_media.xml +++ b/app/src/main/res/drawable/add_media.xml @@ -1,13 +1,12 @@ - - - + + - - + + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_media_22.xml b/app/src/main/res/drawable/ic_add_media_22.xml new file mode 100644 index 0000000000..b5c27af88d --- /dev/null +++ b/app/src/main/res/drawable/ic_add_media_22.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_crop_24.xml b/app/src/main/res/drawable/ic_crop_24.xml deleted file mode 100644 index 29f550c77c..0000000000 --- a/app/src/main/res/drawable/ic_crop_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_crop_rotate_24.xml b/app/src/main/res/drawable/ic_crop_rotate_24.xml new file mode 100644 index 0000000000..ddda2984eb --- /dev/null +++ b/app/src/main/res/drawable/ic_crop_rotate_24.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_crop_rotate_36.xml b/app/src/main/res/drawable/ic_crop_rotate_36.xml deleted file mode 100644 index 15c779184b..0000000000 --- a/app/src/main/res/drawable/ic_crop_rotate_36.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_draw_24.xml b/app/src/main/res/drawable/ic_draw_24.xml index 6620996d38..05785b3672 100644 --- a/app/src/main/res/drawable/ic_draw_24.xml +++ b/app/src/main/res/drawable/ic_draw_24.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M0,12C0,18.568 5.432,24 12,24C18.568,24 24,18.568 24,12C24,5.42 18.568,0 11.988,0C5.42,0 0,5.42 0,12ZM1.555,12C1.555,6.209 6.209,1.543 11.988,1.543C17.779,1.543 22.445,6.209 22.457,12C22.457,15.793 20.447,19.107 17.42,20.937L15.817,13.555C15.709,13.065 15.314,12.694 14.835,12.67H14.656L12.646,6.544C12.431,5.922 11.569,5.91 11.366,6.544L9.356,12.67H9.176C8.698,12.694 8.303,13.065 8.207,13.543L6.592,20.937C3.577,19.107 1.555,15.793 1.555,12ZM7.729,21.535L9.392,13.902H14.632L16.295,21.535C14.979,22.11 13.531,22.445 12,22.445C10.469,22.445 9.021,22.122 7.729,21.535Z" + android:fillColor="#FF000000"/> diff --git a/app/src/main/res/drawable/ic_draw_36.xml b/app/src/main/res/drawable/ic_draw_36.xml deleted file mode 100644 index 45249c58ca..0000000000 --- a/app/src/main/res/drawable/ic_draw_36.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_hq_24.xml b/app/src/main/res/drawable/ic_hq_24.xml new file mode 100644 index 0000000000..560d38f140 --- /dev/null +++ b/app/src/main/res/drawable/ic_hq_24.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/ic_hq_36.xml b/app/src/main/res/drawable/ic_hq_36.xml deleted file mode 100644 index 1af8cfa0a1..0000000000 --- a/app/src/main/res/drawable/ic_hq_36.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_sq_24.xml b/app/src/main/res/drawable/ic_sq_24.xml new file mode 100644 index 0000000000..876bbc1036 --- /dev/null +++ b/app/src/main/res/drawable/ic_sq_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_view_infinite_24.xml b/app/src/main/res/drawable/ic_view_infinite_24.xml new file mode 100644 index 0000000000..f59e264d0c --- /dev/null +++ b/app/src/main/res/drawable/ic_view_infinite_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_view_infinite_28.xml b/app/src/main/res/drawable/ic_view_infinite_28.xml deleted file mode 100644 index 3eff20db72..0000000000 --- a/app/src/main/res/drawable/ic_view_infinite_28.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_view_once_28.xml b/app/src/main/res/drawable/ic_view_once_28.xml deleted file mode 100644 index af6b1276f7..0000000000 --- a/app/src/main/res/drawable/ic_view_once_28.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/image_editor_hud_clear_all_background.xml b/app/src/main/res/drawable/image_editor_hud_clear_all_background.xml index f5ec4fa635..3940ebe12e 100644 --- a/app/src/main/res/drawable/image_editor_hud_clear_all_background.xml +++ b/app/src/main/res/drawable/image_editor_hud_clear_all_background.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/media_selection_pill.xml b/app/src/main/res/drawable/media_selection_pill.xml new file mode 100644 index 0000000000..7aa8eab490 --- /dev/null +++ b/app/src/main/res/drawable/media_selection_pill.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/persistent_fading_edge.xml b/app/src/main/res/drawable/persistent_fading_edge.xml index e0f62ca3be..7aa3b7b67a 100644 --- a/app/src/main/res/drawable/persistent_fading_edge.xml +++ b/app/src/main/res/drawable/persistent_fading_edge.xml @@ -4,5 +4,5 @@ android:type="linear" android:angle="0" android:startColor="@color/transparent" - android:endColor="@color/black" /> + android:endColor="@color/signal_dark_colorBackground" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/v2_media_count_indicator_background.xml b/app/src/main/res/drawable/v2_media_count_indicator_background.xml index 7078e11dcb..1d2d112e5f 100644 --- a/app/src/main/res/drawable/v2_media_count_indicator_background.xml +++ b/app/src/main/res/drawable/v2_media_count_indicator_background.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/v2_media_review_selected_item_overlay.xml b/app/src/main/res/drawable/v2_media_review_selected_item_overlay.xml index cde7209a20..2386ac1c37 100644 --- a/app/src/main/res/drawable/v2_media_review_selected_item_overlay.xml +++ b/app/src/main/res/drawable/v2_media_review_selected_item_overlay.xml @@ -4,32 +4,21 @@ - + - - - + + + - - - - - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/camera_fragment.xml b/app/src/main/res/layout/camera_fragment.xml index 5165da71b8..2d2e55eecb 100644 --- a/app/src/main/res/layout/camera_fragment.xml +++ b/app/src/main/res/layout/camera_fragment.xml @@ -1,7 +1,6 @@ diff --git a/app/src/main/res/layout/camerax_fragment.xml b/app/src/main/res/layout/camerax_fragment.xml index e3aafa0e00..8d74bf0bdc 100644 --- a/app/src/main/res/layout/camerax_fragment.xml +++ b/app/src/main/res/layout/camerax_fragment.xml @@ -2,8 +2,7 @@ + android:layout_height="match_parent"> - @@ -11,7 +10,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top|center_horizontal" - android:gravity="center" /> + android:gravity="center" + app:imageEditorView_blackoutColor="@color/signal_colorBackground" /> + android:layout_height="match_parent" /> + app:srcCompat="@drawable/ic_chevron_end_24" + app:tint="@color/signal_colorOnSurface" /> \ No newline at end of file diff --git a/app/src/main/res/layout/v2_media_gallery_folder_item.xml b/app/src/main/res/layout/v2_media_gallery_folder_item.xml index b3fc501b06..c87c9cd626 100644 --- a/app/src/main/res/layout/v2_media_gallery_folder_item.xml +++ b/app/src/main/res/layout/v2_media_gallery_folder_item.xml @@ -1,51 +1,51 @@ - + android:layout_height="wrap_content"> - + + + + + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:layout_marginBottom="12dp" + android:drawablePadding="4dp" + android:ellipsize="end" + android:gravity="center" + android:lines="1" + android:paddingHorizontal="8dp" + android:textAppearance="@style/Signal.Text.BodyMedium" + android:textColor="@color/signal_colorOnSurface" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/media_gallery_image" + tools:text="Lorem ipsum dolor sit amet" /> - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/v2_media_gallery_fragment.xml b/app/src/main/res/layout/v2_media_gallery_fragment.xml index ccae964ecf..416a4f4a75 100644 --- a/app/src/main/res/layout/v2_media_gallery_fragment.xml +++ b/app/src/main/res/layout/v2_media_gallery_fragment.xml @@ -3,23 +3,24 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/core_black"> + android:layout_height="match_parent"> + app:navigationIcon="@drawable/ic_arrow_left_24" + app:title="@string/AttachmentKeyboard_gallery" + app:titleTextAppearance="@style/Signal.Text.TitleLarge" /> diff --git a/app/src/main/res/layout/v2_media_gallery_item.xml b/app/src/main/res/layout/v2_media_gallery_item.xml index a26a7ec906..c3392c4555 100644 --- a/app/src/main/res/layout/v2_media_gallery_item.xml +++ b/app/src/main/res/layout/v2_media_gallery_item.xml @@ -1,47 +1,48 @@ - + android:layout_height="wrap_content" + android:background="@color/signal_colorSurfaceVariant" + tools:layout_height="95dp" + tools:layout_width="95dp"> - + android:layout_height="0dp" + android:importantForAccessibility="no" + android:scaleType="centerCrop" + app:layout_constraintDimensionRatio="1:1" + app:layout_constraintTop_toTopOf="parent" + tools:src="@drawable/test_gradient" /> - + - + - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/v2_media_gallery_item_no_check.xml b/app/src/main/res/layout/v2_media_gallery_item_no_check.xml index 0273e6b901..d5569cef69 100644 --- a/app/src/main/res/layout/v2_media_gallery_item_no_check.xml +++ b/app/src/main/res/layout/v2_media_gallery_item_no_check.xml @@ -11,7 +11,7 @@ tools:layout_height="95dp" tools:layout_width="95dp"> - @@ -160,20 +159,20 @@ android:layout_marginEnd="16dp" android:layout_marginBottom="20dp" android:background="@drawable/rounded_rectangle_secondary_dark" + android:cursorVisible="false" + android:enabled="false" + android:focusable="false" android:gravity="start|center_vertical" + android:inputType="none" + android:maxLines="3" android:minHeight="36dp" android:paddingStart="12dp" - android:paddingEnd="12dp" android:paddingTop="6dp" + android:paddingEnd="12dp" android:paddingBottom="6dp" android:textAppearance="@style/Signal.Text.Body" android:textColor="@color/core_white" android:visibility="gone" - android:inputType="none" - android:enabled="false" - android:focusable="false" - android:cursorVisible="false" - android:maxLines="3" app:layout_constraintBottom_toTopOf="@id/button_barrier" app:layout_constraintTop_toTopOf="@id/add_a_message_barrier" tools:visibility="visible" /> @@ -194,79 +193,87 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> - - - - + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_marginStart="12dp" + tools:background="@color/signal_dark_colorSurface"> - - \ No newline at end of file diff --git a/app/src/main/res/menu/v2_media_gallery_fragment_toolbar_menu.xml b/app/src/main/res/menu/v2_media_gallery_fragment_toolbar_menu.xml index d3a6d44da7..0a81e640c7 100644 --- a/app/src/main/res/menu/v2_media_gallery_fragment_toolbar_menu.xml +++ b/app/src/main/res/menu/v2_media_gallery_fragment_toolbar_menu.xml @@ -7,7 +7,7 @@ android:title="@string/MediaPickerActivity__menu_open_camera" android:id="@+id/action_camera" android:visible="true" - android:icon="@drawable/ic_camera_solid_white_24" + android:icon="@drawable/ic_camera_24" app:showAsAction="always" /> \ No newline at end of file diff --git a/app/src/main/res/values-v21/themes.xml b/app/src/main/res/values-v21/themes.xml index ee338f62b9..8bc4f750e5 100644 --- a/app/src/main/res/values-v21/themes.xml +++ b/app/src/main/res/values-v21/themes.xml @@ -29,8 +29,6 @@ + + + +