Apply style changes to shared media, color icon, and wallpaper previews.

This commit is contained in:
Alex Hart
2021-06-25 14:27:51 -03:00
committed by GitHub
parent 9dac5691f0
commit 01047f0546
31 changed files with 529 additions and 313 deletions

View File

@@ -1,45 +0,0 @@
package org.thoughtcrime.securesms.wallpaper;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.thoughtcrime.securesms.util.ViewUtil;
class ChatWallpaperAlignmentDecoration extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
int itemPosition = parent.getChildAdapterPosition(view);
int itemCount = state.getItemCount();
if (itemCount > 0 && itemPosition == itemCount - 1) {
outRect.set(0, 0, 0, 0);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
int viewWidth = view.getMeasuredWidth() + params.rightMargin + params.leftMargin;
int availableWidth = (parent.getRight() - parent.getPaddingRight()) - (parent.getLeft() + parent.getPaddingLeft());
int itemsPerRow = availableWidth / viewWidth;
if (itemsPerRow == 1 || (itemPosition + 1) % itemsPerRow == 0) {
return;
}
int extraCellsNeeded = itemsPerRow - ((itemPosition + 1) % itemsPerRow);
setEnd(outRect, ViewUtil.isLtr(view), extraCellsNeeded * viewWidth);
} else {
super.getItemOffsets(outRect, view, parent, state);
}
}
private void setEnd(@NonNull Rect outRect, boolean ltr, int end) {
if (ltr) {
outRect.right = end;
} else {
outRect.left = end;
}
}
}

View File

@@ -1,8 +1,14 @@
package org.thoughtcrime.securesms.wallpaper;
import android.content.Context;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.airbnb.lottie.SimpleColorFilter;
import org.thoughtcrime.securesms.util.ThemeUtil;
@@ -19,4 +25,13 @@ public final class ChatWallpaperDimLevelUtil {
dimmer.setVisibility(View.GONE);
}
}
public static @Nullable ColorFilter getDimColorFilterForNightMode(@NonNull Context context, @NonNull ChatWallpaper chatWallpaper) {
if (ThemeUtil.isDarkTheme(context)) {
int color = Color.argb(Math.round(0xFF * chatWallpaper.getDimLevelForDarkTheme()), 0, 0, 0);
return new SimpleColorFilter(color);
} else {
return null;
}
}
}

View File

@@ -51,7 +51,6 @@ public class ChatWallpaperSelectionFragment extends Fragment {
});
recyclerView.setAdapter(adapter);
recyclerView.addItemDecoration(new ChatWallpaperAlignmentDecoration());
viewModel = ViewModelProviders.of(requireActivity()).get(ChatWallpaperViewModel.class);
viewModel.getWallpapers().observe(getViewLifecycleOwner(), adapter::submitList);

View File

@@ -20,14 +20,12 @@ class ChatWallpaperViewHolder extends MappingViewHolder<ChatWallpaperSelectionMa
private final AspectRatioFrameLayout frame;
private final ImageView preview;
private final View dimmer;
private final EventListener eventListener;
public ChatWallpaperViewHolder(@NonNull View itemView, @Nullable EventListener eventListener, @Nullable DisplayMetrics windowDisplayMetrics) {
super(itemView);
this.frame = itemView.findViewById(R.id.chat_wallpaper_preview_frame);
this.preview = itemView.findViewById(R.id.chat_wallpaper_preview);
this.dimmer = itemView.findViewById(R.id.chat_wallpaper_dim);
this.eventListener = eventListener;
if (windowDisplayMetrics != null) {
@@ -41,7 +39,7 @@ class ChatWallpaperViewHolder extends MappingViewHolder<ChatWallpaperSelectionMa
public void bind(@NonNull ChatWallpaperSelectionMappingModel model) {
model.loadInto(preview);
ChatWallpaperDimLevelUtil.applyDimLevelForNightMode(dimmer, model.getWallpaper());
preview.setColorFilter(ChatWallpaperDimLevelUtil.getDimColorFilterForNightMode(context, model.getWallpaper()));
if (eventListener != null) {
preview.setOnClickListener(unused -> {