stage 1: added emoji adapter and dialog selector

This commit is contained in:
nuclearfog 2023-04-19 10:49:02 +02:00
parent 3536c80293
commit 84bedab82c
No known key found for this signature in database
GPG Key ID: 03488A185C476379
19 changed files with 320 additions and 51 deletions

View File

@ -12,8 +12,8 @@ android {
applicationId 'org.nuclearfog.twidda'
minSdkVersion 21
targetSdkVersion 33
versionCode 81
versionName '3.1.1'
versionCode 82
versionName '3.1.2'
resConfigs 'en', 'de-rDE', 'zh-rCN'
}

View File

@ -768,6 +768,7 @@ public class Mastodon implements Connection {
Emoji item = new MastodonEmoji(json.getJSONObject(i));
result.add(item);
}
Collections.sort(result);
return result;
}
throw new MastodonException(response);

View File

@ -23,7 +23,7 @@ import java.util.TreeMap;
*
* @author nuclearfog
*/
public class EmojiLoader extends AsyncExecutor<EmojiLoader.EmojiParam, EmojiLoader.EmojiResult> {
public class TextEmojiLoader extends AsyncExecutor<TextEmojiLoader.EmojiParam, TextEmojiLoader.EmojiResult> {
private Connection connection;
private ImageCache cache;
@ -31,7 +31,7 @@ public class EmojiLoader extends AsyncExecutor<EmojiLoader.EmojiParam, EmojiLoad
/**
*
*/
public EmojiLoader(Context context) {
public TextEmojiLoader(Context context) {
connection = ConnectionManager.getDefaultConnection(context);
cache = ImageCache.getInstance(context);
}

View File

@ -55,9 +55,9 @@ import org.nuclearfog.textviewtool.LinkAndScrollMovement;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.RelationLoader;
import org.nuclearfog.twidda.backend.async.RelationLoader.RelationParam;
import org.nuclearfog.twidda.backend.async.RelationLoader.RelationResult;
@ -152,7 +152,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
private RelationLoader relationLoader;
private UserLoader userLoader;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private NestedScrollView root;
private ConstraintLayout header;
@ -201,7 +201,7 @@ public class ProfileActivity extends AppCompatActivity implements ActivityResult
relationLoader = new RelationLoader(this);
userLoader = new UserLoader(this);
emojiLoader = new EmojiLoader(this);
emojiLoader = new TextEmojiLoader(this);
picasso = PicassoBuilder.get(this);
settings = GlobalSettings.getInstance(this);
if (!settings.toolbarOverlapEnabled()) {

View File

@ -52,9 +52,9 @@ import org.nuclearfog.textviewtool.LinkAndScrollMovement;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.api.ConnectionException;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.NotificationAction;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionParam;
import org.nuclearfog.twidda.backend.async.NotificationAction.NotificationActionResult;
@ -205,7 +205,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
private NotificationAction notificationLoader;
private TranslationLoader translationLoader;
private PollAction pollLoader;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
@Nullable
private ClipboardManager clip;
@ -268,7 +268,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
pollLoader = new PollAction(this);
notificationLoader = new NotificationAction(this);
translationLoader = new TranslationLoader(this);
emojiLoader = new EmojiLoader(this);
emojiLoader = new TextEmojiLoader(this);
picasso = PicassoBuilder.get(this);
settings = GlobalSettings.getInstance(this);

View File

@ -0,0 +1,91 @@
package org.nuclearfog.twidda.ui.adapter;
import android.content.Context;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Emoji;
import org.nuclearfog.twidda.ui.adapter.holder.EmojiHolder;
import org.nuclearfog.twidda.ui.adapter.holder.EmojiHolder.OnEmojiClickListener;
import java.util.LinkedList;
import java.util.List;
public class EmojiAdapter extends Adapter<EmojiHolder> implements OnEmojiClickListener {
private GlobalSettings settings;
private Picasso picasso;
private LinkedList<Object> items = new LinkedList<>();
public EmojiAdapter(Context context) {
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
}
@NonNull
@Override
public EmojiHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new EmojiHolder(parent, settings, picasso, this);
}
@Override
public void onBindViewHolder(@NonNull EmojiHolder holder, int position) {
Object item = items.get(position);
if (item instanceof Emoji[]) {
holder.setData((Emoji[]) item);
} else if (item instanceof String) {
holder.setLabel((String) item);
}
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public void onEmojiClick(int position, int index) {
}
public void replaceItems(List<Emoji> emojis) {
items.clear();
String groupname = "";
for (Emoji emoji : emojis) {
Emoji[] row;
Object item = items.peekLast();
if (!emoji.getCategory().equals(groupname)) {
row = new Emoji[EmojiHolder.ROW_COUNT];
row[0] = emoji;
items.add(groupname);
items.add(row);
} else if (item instanceof Emoji[]) {
row = (Emoji[]) item;
if (row[EmojiHolder.ROW_COUNT - 1] == null) {
for (int j = 0; j < row.length; j++) {
if (row[j] == null) {
row[j] = emoji;
}
}
} else {
row = new Emoji[EmojiHolder.ROW_COUNT];
row[0] = emoji;
items.add(row);
}
}
}
}
}

View File

@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.tag.Tagger.OnTagClickListener;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.helper.Messages;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -45,7 +45,7 @@ public class MessageAdapter extends Adapter<ViewHolder> implements OnItemClickLi
private OnMessageClickListener itemClickListener;
private GlobalSettings settings;
private Picasso picasso;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private Messages messages;
private int loadingIndex;
@ -58,7 +58,7 @@ public class MessageAdapter extends Adapter<ViewHolder> implements OnItemClickLi
loadingIndex = NO_LOADING;
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
emojiLoader = new EmojiLoader(context);
emojiLoader = new TextEmojiLoader(context);
this.itemClickListener = itemClickListener;
}

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Notification;
@ -55,7 +55,7 @@ public class NotificationAdapter extends Adapter<ViewHolder> implements OnHolder
private Picasso picasso;
private GlobalSettings settings;
private OnNotificationClickListener listener;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private List<Notification> notifications;
private int loadingIndex;
@ -64,7 +64,7 @@ public class NotificationAdapter extends Adapter<ViewHolder> implements OnHolder
public NotificationAdapter(Context context, OnNotificationClickListener listener) {
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
emojiLoader = new EmojiLoader(context);
emojiLoader = new TextEmojiLoader(context);
notifications = new LinkedList<>();
loadingIndex = NO_LOADING;
this.listener = listener;

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Status;
@ -50,7 +50,7 @@ public class StatusAdapter extends Adapter<ViewHolder> implements OnHolderClickL
*/
private static final int MIN_COUNT = 2;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private StatusSelectListener listener;
private GlobalSettings settings;
private Picasso picasso;
@ -64,7 +64,7 @@ public class StatusAdapter extends Adapter<ViewHolder> implements OnHolderClickL
public StatusAdapter(Context context, StatusSelectListener itemClickListener) {
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
emojiLoader = new EmojiLoader(context);
emojiLoader = new TextEmojiLoader(context);
loadingIndex = NO_LOADING;
items = new LinkedList<>();
this.listener = itemClickListener;

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.helper.Users;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -43,7 +43,7 @@ public class UserAdapter extends Adapter<ViewHolder> implements OnHolderClickLis
private GlobalSettings settings;
private Picasso picasso;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private UserClickListener listener;
private boolean enableDelete;
@ -58,7 +58,7 @@ public class UserAdapter extends Adapter<ViewHolder> implements OnHolderClickLis
public UserAdapter(Context context, UserClickListener listener, boolean enableDelete) {
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
emojiLoader = new EmojiLoader(context);
emojiLoader = new TextEmojiLoader(context);
users = new Users(0L, 0L);
loadingIndex = NO_LOADING;
this.enableDelete = enableDelete;

View File

@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.helper.UserLists;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
import org.nuclearfog.twidda.config.GlobalSettings;
@ -49,7 +49,7 @@ public class UserlistAdapter extends Adapter<ViewHolder> implements OnHolderClic
private ListClickListener listener;
private GlobalSettings settings;
private Picasso picasso;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private UserLists userlists;
private int loadingIndex;
@ -61,7 +61,7 @@ public class UserlistAdapter extends Adapter<ViewHolder> implements OnHolderClic
this.listener = listener;
settings = GlobalSettings.getInstance(context);
picasso = PicassoBuilder.get(context);
emojiLoader = new EmojiLoader(context);
emojiLoader = new TextEmojiLoader(context);
userlists = new UserLists(0L, 0L);
loadingIndex = NO_LOADING;
}

View File

@ -0,0 +1,90 @@
package org.nuclearfog.twidda.ui.adapter.holder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Emoji;
public class EmojiHolder extends ViewHolder implements OnClickListener {
public static final int ROW_COUNT = 6;
private ImageView[] emojiViews = new ImageView[ROW_COUNT];
private TextView groupLabel;
private OnEmojiClickListener listener;
private Picasso picasso;
public EmojiHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, OnEmojiClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_emoji, parent, false));
groupLabel = itemView.findViewById(R.id.item_emoji_group);
emojiViews[0] = itemView.findViewById(R.id.item_emoji_1);
emojiViews[1] = itemView.findViewById(R.id.item_emoji_2);
emojiViews[2] = itemView.findViewById(R.id.item_emoji_3);
emojiViews[3] = itemView.findViewById(R.id.item_emoji_4);
emojiViews[4] = itemView.findViewById(R.id.item_emoji_5);
emojiViews[5] = itemView.findViewById(R.id.item_emoji_6);
groupLabel.setTextColor(settings.getTextColor());
groupLabel.setTypeface(settings.getTypeFace());
this.listener = listener;
this.picasso = picasso;
}
@Override
public void onClick(View v) {
int pos = getLayoutPosition();
if (pos != RecyclerView.NO_POSITION) {
for (int i = 0; i < emojiViews.length; i++) {
if (v == emojiViews[i]) {
listener.onEmojiClick(pos, i);
}
}
}
}
public void setData(Emoji[] emojis) {
for (int i = 0 ; i < emojis.length && i < emojiViews.length ; i++) {
Emoji emoji = emojis[i];
ImageView emojiView = emojiViews[i];
if (!emoji.getUrl().trim().isEmpty()) {
picasso.load(emoji.getUrl()).into(emojiViews[i]);
emojiView.setVisibility(View.VISIBLE);
}
emojiView.setOnClickListener(this);
}
groupLabel.setVisibility(View.GONE);
}
public void setLabel(String label) {
for (ImageView emojiView : emojiViews) {
emojiView.setVisibility(View.GONE);
}
groupLabel.setText(label);
groupLabel.setVisibility(View.VISIBLE);
}
public interface OnEmojiClickListener {
void onEmojiClick(int position, int index);
}
}

View File

@ -29,9 +29,9 @@ import org.nuclearfog.tag.Tagger;
import org.nuclearfog.tag.Tagger.OnTagClickListener;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
import org.nuclearfog.twidda.backend.utils.StringUtils;
@ -60,12 +60,12 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
private GlobalSettings settings;
private Picasso picasso;
private IconAdapter adapter;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private long tagId;
public MessageHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, EmojiLoader emojiLoader, OnItemClickListener listener) {
public MessageHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, TextEmojiLoader emojiLoader, OnItemClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message, parent, false));
this.settings = settings;
this.picasso = picasso;

View File

@ -27,9 +27,9 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.tag.Tagger;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.StringUtils;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -57,7 +57,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
private GlobalSettings settings;
private Picasso picasso;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private IconAdapter adapter;
private OnHolderClickListener listener;
@ -67,7 +67,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
private long tagId = 0L;
public StatusHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, EmojiLoader emojiLoader, OnHolderClickListener listener) {
public StatusHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, TextEmojiLoader emojiLoader, OnHolderClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_status, parent, false));
this.settings = settings;
this.picasso = picasso;

View File

@ -25,9 +25,9 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor.AsyncCallback;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.StringUtils;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
@ -51,7 +51,7 @@ public class UserHolder extends ViewHolder implements OnClickListener, AsyncCall
private View notificationDismiss;
private GlobalSettings settings;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private Picasso picasso;
private OnHolderClickListener listener;
@ -59,7 +59,7 @@ public class UserHolder extends ViewHolder implements OnClickListener, AsyncCall
private long tagId = 0L;
public UserHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, EmojiLoader emojiLoader, OnHolderClickListener listener, boolean enableDelete) {
public UserHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, TextEmojiLoader emojiLoader, OnHolderClickListener listener, boolean enableDelete) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user, parent, false));
this.settings = settings;
this.picasso = picasso;

View File

@ -21,9 +21,9 @@ import com.squareup.picasso.Transformation;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.async.AsyncExecutor;
import org.nuclearfog.twidda.backend.async.EmojiLoader;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.EmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiParam;
import org.nuclearfog.twidda.backend.async.TextEmojiLoader.EmojiResult;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.EmojiUtils;
import org.nuclearfog.twidda.backend.utils.StringUtils;
@ -49,7 +49,7 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
private Picasso picasso;
private GlobalSettings settings;
private OnHolderClickListener listener;
private EmojiLoader emojiLoader;
private TextEmojiLoader emojiLoader;
private boolean enableExtras, enableImages;
private long tagId;
@ -57,7 +57,7 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
/**
* @param parent Parent view from adapter
*/
public UserlistHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, EmojiLoader emojiLoader, OnHolderClickListener listener) {
public UserlistHolder(ViewGroup parent, GlobalSettings settings, Picasso picasso, TextEmojiLoader emojiLoader, OnHolderClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false));
CardView background = (CardView) itemView;
ViewGroup container = itemView.findViewById(R.id.item_list_container);

View File

@ -0,0 +1,34 @@
package org.nuclearfog.twidda.ui.dialogs;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.ui.adapter.EmojiAdapter;
public class EmojiPicker extends BottomSheetDialog {
private EmojiAdapter adapter;
public EmojiPicker(@NonNull Context context) {
super(context);
RecyclerView listView = new RecyclerView(context);
GlobalSettings settings = GlobalSettings.getInstance(context);
setContentView(listView);
BottomSheetBehavior<View> mBehavior = BottomSheetBehavior.from((View)listView.getParent());
mBehavior.setPeekHeight(500);
listView.setBackgroundColor(settings.getBackgroundColor());
adapter = new EmojiAdapter(context);
}
}

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/item_emoji_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<ImageView
android:id="@+id/item_emoji_1"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/item_emoji_2"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/item_emoji_3"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/item_emoji_4"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/item_emoji_5"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/item_emoji_6"
android:layout_width="@dimen/item_emoji_emoji_size"
android:layout_height="@dimen/item_emoji_emoji_size"
tools:ignore="ContentDescription" />
</LinearLayout>

View File

@ -11,11 +11,11 @@
<!--dimens of page_settings.xml-->
<dimen name="settings_toolbar_height">@dimen/toolbar_height</dimen>
<dimen name="settings_color_button_height">42sp</dimen>
<dimen name="settings_color_button_height">38sp</dimen>
<dimen name="settings_color_button_margin">2dp</dimen>
<dimen name="settings_color_button_stroke_width">2dp</dimen>
<dimen name="settings_color_button_corner_radius">4dp</dimen>
<dimen name="settings_cardview_padding">10dp</dimen>
<dimen name="settings_cardview_padding">6dp</dimen>
<dimen name="settings_textsize">20sp</dimen>
<dimen name="settings_icon_size">20sp</dimen>
<dimen name="settings_textsize_small">12sp</dimen>
@ -295,4 +295,7 @@
<dimen name="dialog_status_layout_margins">5dp</dimen>
<dimen name="dialog_status_dropdown_height">22sp</dimen>
<!--dimens of item_emoji.xml-->
<dimen name="item_emoji_emoji_size">48dp</dimen>
</resources>