Non-square emoji in text views
This commit is contained in:
parent
d1a2a70cdc
commit
d121f14d30
13 changed files with 27 additions and 26 deletions
|
@ -297,8 +297,8 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment<FollowR
|
|||
cover.setImageDrawable(image);
|
||||
}else{
|
||||
item.emojiHelper.setImageDrawable(index-2, image);
|
||||
name.invalidate();
|
||||
bio.invalidate();
|
||||
name.setText(name.getText());
|
||||
bio.setText(bio.getText());
|
||||
}
|
||||
if(image instanceof Animatable a && !a.isRunning())
|
||||
a.start();
|
||||
|
|
|
@ -1587,8 +1587,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||
public void setImage(int index, Drawable image){
|
||||
CustomEmojiSpan span=index>=item.nameEmojis.length ? item.valueEmojis[index-item.nameEmojis.length] : item.nameEmojis[index];
|
||||
span.setDrawable(image);
|
||||
title.invalidate();
|
||||
value.invalidate();
|
||||
title.setText(title.getText());
|
||||
value.setText(value.getText());
|
||||
toolbarTitleView.setText(toolbarTitleView.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -279,8 +279,8 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
|
|||
cover.setImageDrawable(image);
|
||||
}else{
|
||||
item.emojiHelper.setImageDrawable(index-2, image);
|
||||
name.invalidate();
|
||||
bio.invalidate();
|
||||
name.setText(name.getText());
|
||||
bio.setText(bio.getText());
|
||||
}
|
||||
if(image instanceof Animatable a && !a.isRunning())
|
||||
a.start();
|
||||
|
|
|
@ -225,8 +225,8 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{
|
|||
cover.setImageDrawable(image);
|
||||
}else{
|
||||
item.emojiHelper.setImageDrawable(index-2, image);
|
||||
name.invalidate();
|
||||
bio.invalidate();
|
||||
name.setText(name.getText());
|
||||
bio.setText(bio.getText());
|
||||
}
|
||||
if(image instanceof Animatable && !((Animatable) image).isRunning())
|
||||
((Animatable) image).start();
|
||||
|
|
|
@ -422,7 +422,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
|||
public void setImage(int index, Drawable drawable){
|
||||
if(index>0){
|
||||
item.emojiHelper.setImageDrawable(index-1, drawable);
|
||||
name.invalidate();
|
||||
name.setText(name.getText());
|
||||
}else{
|
||||
avatar.setImageDrawable(drawable);
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ public class NotificationHeaderStatusDisplayItem extends StatusDisplayItem{
|
|||
avatar.setImageDrawable(image);
|
||||
}else{
|
||||
item.emojiHelper.setImageDrawable(index-1, image);
|
||||
text.invalidate();
|
||||
text.setText(text.getText());
|
||||
}
|
||||
if(image instanceof Animatable)
|
||||
((Animatable) image).start();
|
||||
|
|
|
@ -136,7 +136,7 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
|
|||
@Override
|
||||
public void setImage(int index, Drawable image){
|
||||
item.emojiHelper.setImageDrawable(index, image);
|
||||
text.invalidate();
|
||||
text.setText(text.getText());
|
||||
if(image instanceof Animatable){
|
||||
((Animatable) image).start();
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
|
|||
@Override
|
||||
public void clearImage(int index){
|
||||
item.emojiHelper.setImageDrawable(index, null);
|
||||
text.invalidate();
|
||||
text.setText(text.getText());
|
||||
}
|
||||
|
||||
private void onButtonClick(View v){
|
||||
|
|
|
@ -152,8 +152,8 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||
int firstHelperCount=item.emojiHelper.getImageCount();
|
||||
CustomEmojiHelper helper=index<firstHelperCount ? item.emojiHelper : item.extra.emojiHelper;
|
||||
helper.setImageDrawable(firstHelperCount>0 ? index%firstHelperCount : index, image);
|
||||
text.invalidate();
|
||||
extraText.invalidate();
|
||||
text.setText(text.getText());
|
||||
extraText.setText(extraText.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -114,7 +114,7 @@ public class SpoilerStatusDisplayItem extends StatusDisplayItem{
|
|||
@Override
|
||||
public void setImage(int index, Drawable image){
|
||||
item.emojiHelper.setImageDrawable(index, image);
|
||||
title.invalidate();
|
||||
title.setText(title.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -173,7 +173,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
|||
@Override
|
||||
public void setImage(int index, Drawable image){
|
||||
getEmojiHelper().setImageDrawable(index, image);
|
||||
text.invalidate();
|
||||
text.setText(text.getText());
|
||||
if(image instanceof Animatable){
|
||||
((Animatable) image).start();
|
||||
if(image instanceof MovieDrawable)
|
||||
|
@ -184,7 +184,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
|||
@Override
|
||||
public void clearImage(int index){
|
||||
getEmojiHelper().setImageDrawable(index, null);
|
||||
text.invalidate();
|
||||
text.setText(text.getText());
|
||||
}
|
||||
|
||||
private CustomEmojiHelper getEmojiHelper(){
|
||||
|
|
|
@ -24,7 +24,8 @@ public class CustomEmojiSpan extends ReplacementSpan{
|
|||
|
||||
@Override
|
||||
public int getSize(@NonNull Paint paint, CharSequence text, int start, int end, @Nullable Paint.FontMetricsInt fm){
|
||||
return Math.round(paint.descent()-paint.ascent());
|
||||
int size = Math.round(paint.descent()-paint.ascent());
|
||||
return drawable!=null ? (int) (drawable.getIntrinsicWidth()*(size/(float) drawable.getIntrinsicHeight())) : size;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -45,7 +46,8 @@ public class CustomEmojiSpan extends ReplacementSpan{
|
|||
}
|
||||
canvas.save();
|
||||
canvas.translate(x, top);
|
||||
canvas.scale(size/(float)dw, size/(float)dh, 0f, 0f);
|
||||
float scale = size/(float)dh;
|
||||
canvas.scale(scale, scale, 0f, 0f);
|
||||
drawable.draw(canvas);
|
||||
canvas.restore();
|
||||
}
|
||||
|
@ -56,7 +58,6 @@ public class CustomEmojiSpan extends ReplacementSpan{
|
|||
}
|
||||
|
||||
public UrlImageLoaderRequest createImageLoaderRequest(){
|
||||
int size=V.dp(20);
|
||||
return new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? emoji.url : emoji.staticUrl, size, size);
|
||||
return new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? emoji.url : emoji.staticUrl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -417,7 +417,6 @@ public class UiUtils {
|
|||
CustomEmojiSpan[] spans = text.getSpans(0, text.length(), CustomEmojiSpan.class);
|
||||
if (spans.length == 0)
|
||||
return;
|
||||
int emojiSize = V.dp(20);
|
||||
Map<Emoji, List<CustomEmojiSpan>> spansByEmoji = Arrays.stream(spans).collect(Collectors.groupingBy(s -> s.emoji));
|
||||
for (Map.Entry<Emoji, List<CustomEmojiSpan>> emoji : spansByEmoji.entrySet()) {
|
||||
ViewImageLoader.load(new ViewImageLoader.Target() {
|
||||
|
@ -428,14 +427,14 @@ public class UiUtils {
|
|||
for (CustomEmojiSpan span : emoji.getValue()) {
|
||||
span.setDrawable(d);
|
||||
}
|
||||
view.invalidate();
|
||||
view.setText(view.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView() {
|
||||
return view;
|
||||
}
|
||||
}, null, new UrlImageLoaderRequest(emoji.getKey().url, emojiSize, emojiSize), null, false, true);
|
||||
}, null, new UrlImageLoaderRequest(emoji.getKey().url), null, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -185,8 +185,8 @@ public class AccountViewHolder extends BindableViewHolder<AccountViewModel> impl
|
|||
avatar.setImageDrawable(image);
|
||||
}else{
|
||||
item.emojiHelper.setImageDrawable(index-1, image);
|
||||
name.invalidate();
|
||||
bio.invalidate();
|
||||
name.setText(name.getText());
|
||||
bio.setText(bio.getText());
|
||||
}
|
||||
|
||||
if(image instanceof Animatable a && !a.isRunning())
|
||||
|
|
Loading…
Add table
Reference in a new issue