Fix action button color

This commit is contained in:
世界 2021-02-24 08:39:06 +08:00
parent 99783dd511
commit 7a0ddf096b
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
3 changed files with 21 additions and 23 deletions

View File

@ -13,6 +13,7 @@ import androidx.annotation.Nullable;
public class ColoredImageSpan extends ReplacementSpan {
int drawableColor;
boolean override;
Drawable drawable;
public ColoredImageSpan(@NonNull Drawable drawable) {
@ -20,6 +21,14 @@ public class ColoredImageSpan extends ReplacementSpan {
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}
public ColoredImageSpan(@NonNull Drawable drawable, int drawableColor) {
this.drawable = drawable;
this.drawableColor = drawableColor;
this.override = true;
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.SRC_IN));
}
@Override
public int getSize(@NonNull Paint paint, CharSequence charSequence, int i, int i1, @Nullable Paint.FontMetricsInt fontMetricsInt) {
return drawable.getIntrinsicWidth();
@ -28,8 +37,12 @@ public class ColoredImageSpan extends ReplacementSpan {
@Override
public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) {
if (drawableColor != paint.getColor()) {
drawableColor = paint.getColor();
drawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.MULTIPLY));
if (override) {
paint.setColor(drawableColor);
} else {
drawableColor = paint.getColor();
drawable.setColorFilter(new PorterDuffColorFilter(drawableColor, PorterDuff.Mode.SRC_IN));
}
}
int lineHeight = bottom - top;
int drawableHeight = drawable.getIntrinsicHeight();

View File

@ -24,6 +24,7 @@ import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.ColorUtils;
import org.telegram.messenger.AndroidUtilities;
@ -45,8 +46,6 @@ import org.telegram.ui.Cells.DialogCell;
import java.util.ArrayList;
import tw.nekomimi.nekogram.parts.DrawableLoadsKt;
public class LinkActionView extends LinearLayout {
TextView linkView;
@ -90,7 +89,7 @@ public class LinkActionView extends LinearLayout {
frameLayout.addView(linkView);
optionsView = new ImageView(context);
optionsView.setImageDrawable(DrawableLoadsKt.getDrawable(context, R.drawable.ic_ab_other));
optionsView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_ab_other));
optionsView.setScaleType(ImageView.ScaleType.CENTER);
frameLayout.addView(optionsView, LayoutHelper.createFrame(40, 48, Gravity.RIGHT | Gravity.CENTER_VERTICAL));
addView(frameLayout, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 4, 0, 4, 0));
@ -101,7 +100,7 @@ public class LinkActionView extends LinearLayout {
copyView = new TextView(context);
copyView.setGravity(Gravity.CENTER_HORIZONTAL);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(DrawableLoadsKt.getDrawable(context, R.drawable.baseline_content_copy_24).mutate()), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_content_copy_24), Theme.getColor(Theme.key_chats_actionIcon)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("LinkActionCopy", R.string.LinkActionCopy));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -115,7 +114,7 @@ public class LinkActionView extends LinearLayout {
shareView = new TextView(context);
shareView.setGravity(Gravity.CENTER_HORIZONTAL);
spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(DrawableLoadsKt.getDrawable(context, R.drawable.baseline_forward_24)), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_forward_24), Theme.getColor(Theme.key_chats_actionIcon)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("LinkActionShare", R.string.LinkActionShare));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -131,7 +130,7 @@ public class LinkActionView extends LinearLayout {
removeView = new TextView(context);
removeView.setGravity(Gravity.CENTER_HORIZONTAL);
spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(DrawableLoadsKt.getDrawable(context, R.drawable.baseline_delete_24)), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_delete_24)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("DeleteLink", R.string.DeleteLink));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -420,7 +419,7 @@ public class LinkActionView extends LinearLayout {
if (hideRevokeOption != b) {
hideRevokeOption = b;
optionsView.setVisibility(View.VISIBLE);
optionsView.setImageDrawable(DrawableLoadsKt.getDrawable(optionsView.getContext(), R.drawable.ic_ab_other));
optionsView.setImageDrawable(ContextCompat.getDrawable(optionsView.getContext(), R.drawable.ic_ab_other));
}
}

View File

@ -1,14 +0,0 @@
package tw.nekomimi.nekogram.parts
import android.content.Context
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat
import org.telegram.ui.ActionBar.Theme
fun getDrawable(ctx: Context, resId: Int): Drawable {
val drawable = ContextCompat.getDrawable(ctx, resId)!!.mutate()
drawable.colorFilter = PorterDuffColorFilter(Theme.getColor(Theme.key_chats_actionIcon), PorterDuff.Mode.SRC_IN)
return drawable
}