diff --git a/app/src/main/java/app/fedilab/android/activities/TootActivity.java b/app/src/main/java/app/fedilab/android/activities/TootActivity.java index 8ac030f19..386748984 100644 --- a/app/src/main/java/app/fedilab/android/activities/TootActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/TootActivity.java @@ -284,6 +284,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, private EditText wysiwygEditText; private String url_for_media; private UpdateAccountInfoAsyncTask.SOCIAL social; + List emojis; @Override protected void onCreate(Bundle savedInstanceState) { @@ -1897,7 +1898,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, picker.show(getSupportFragmentManager(), "COUNTRY_PICKER"); return true; case R.id.action_emoji: - final List emojis = new CustomEmojiDAO(getApplicationContext(), db).getAllEmojis(account.getInstance()); + emojis = new CustomEmojiDAO(getApplicationContext(), db).getAllEmojis(account.getInstance()); final AlertDialog.Builder builder = new AlertDialog.Builder(this, style); int paddingPixel = 15; float density = getResources().getDisplayMetrics().density; diff --git a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java index 4fb766e20..81218b153 100644 --- a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java @@ -21,9 +21,6 @@ import androidx.annotation.Nullable; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.os.Handler; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -40,7 +37,6 @@ import com.github.penfeizhou.animation.gif.GifDrawable; import com.github.penfeizhou.animation.gif.decode.GifParser; import java.io.File; -import java.lang.ref.WeakReference; import java.util.List; import app.fedilab.android.R; @@ -57,11 +53,13 @@ public class CustomEmojiAdapter extends ArrayAdapter { private Context context; private List emojis; + private CustomEmojiAdapter customEmojiAdapter; public CustomEmojiAdapter(@NonNull Context context, int resource, List emojis) { super(context, resource, resource); this.context = context; this.emojis = emojis; + customEmojiAdapter = this; } @Override @@ -102,7 +100,27 @@ public class CustomEmojiAdapter extends ArrayAdapter { .into(new SimpleTarget() { @Override public void onResourceReady(@NonNull File resourceFile, @Nullable Transition transition) { - new transform(context, emoji,resourceFile, imageView).execute(); + //new transform(context, emoji,resourceFile, imageView).execute(); + Drawable resource; + SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false); + if( !disableAnimatedEmoji) { + if (GifParser.isGif(resourceFile.getAbsolutePath())) { + resource = GifDrawable.fromFile(resourceFile.getAbsolutePath()); + emoji.setDrawable(resource); + } else if (APNGParser.isAPNG(resourceFile.getAbsolutePath())) { + resource = APNGDrawable.fromFile(resourceFile.getAbsolutePath()); + emoji.setDrawable(resource); + } else { + resource = Drawable.createFromPath(resourceFile.getAbsolutePath()); + emoji.setDrawable(resource); + + } + }else{ + resource = Drawable.createFromPath(resourceFile.getAbsolutePath()); + emoji.setDrawable(resource); + } + customEmojiAdapter.notifyDataSetChanged(); } }); }else{ @@ -110,51 +128,4 @@ public class CustomEmojiAdapter extends ArrayAdapter { } return convertView; } - - - - private static class transform extends AsyncTask { - - private WeakReference contextWeakReference; - private File resourceFile; - private Emojis emoji; - private WeakReference imageViewWeakReference; - - transform(Context context, Emojis emoji, File resource, ImageView imageView) { - this.contextWeakReference = new WeakReference<>(context); - this.resourceFile = resource; - this.emoji = emoji; - this.imageViewWeakReference = new WeakReference<>(imageView); - } - - @Override - protected Drawable doInBackground(Void... params) { - Drawable resource; - SharedPreferences sharedpreferences = contextWeakReference.get().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false); - if( !disableAnimatedEmoji) { - if (GifParser.isGif(resourceFile.getAbsolutePath())) { - resource = GifDrawable.fromFile(resourceFile.getAbsolutePath()); - emoji.setDrawable(resource); - } else if (APNGParser.isAPNG(resourceFile.getAbsolutePath())) { - resource = APNGDrawable.fromFile(resourceFile.getAbsolutePath()); - emoji.setDrawable(resource); - } else { - resource = Drawable.createFromPath(resourceFile.getAbsolutePath()); - emoji.setDrawable(resource); - - } - }else{ - resource = Drawable.createFromPath(resourceFile.getAbsolutePath()); - emoji.setDrawable(resource); - } - return resource; - } - - @Override - protected void onPostExecute(Drawable result) { - - imageViewWeakReference.get().setImageDrawable(result); - } - } } \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 41e28d297..df8c95312 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -221,6 +221,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct private List lstHolders; private final Object lock = new Object(); + private List emojisPicker; private Runnable updateAnimatedEmoji = new Runnable() { @Override @@ -1170,7 +1171,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - final List emojis = new CustomEmojiDAO(context, db).getAllEmojis(Helper.getLiveInstance(context)); + emojisPicker = new CustomEmojiDAO(context, db).getAllEmojis(Helper.getLiveInstance(context)); final AlertDialog.Builder builder = new AlertDialog.Builder(context, style); int paddingPixel = 15; float density = context.getResources().getDisplayMetrics().density; @@ -1181,14 +1182,14 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } }); builder.setTitle(R.string.insert_emoji); - if( emojis != null && emojis.size() > 0) { + if( emojisPicker != null && emojisPicker.size() > 0) { GridView gridView = new GridView(context); - gridView.setAdapter(new CustomEmojiAdapter(context, android.R.layout.simple_list_item_1, emojis)); + gridView.setAdapter(new CustomEmojiAdapter(context, android.R.layout.simple_list_item_1, emojisPicker)); gridView.setNumColumns(5); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - holder.quick_reply_text.getText().insert(holder.quick_reply_text.getSelectionStart(), " :" + emojis.get(position).getShortcode()+": "); + holder.quick_reply_text.getText().insert(holder.quick_reply_text.getSelectionStart(), " :" + emojisPicker.get(position).getShortcode()+": "); alertDialogEmoji.dismiss(); } }); diff --git a/app/src/main/res/layout/drawer_notification.xml b/app/src/main/res/layout/drawer_notification.xml index 6a09a2676..46920a7da 100644 --- a/app/src/main/res/layout/drawer_notification.xml +++ b/app/src/main/res/layout/drawer_notification.xml @@ -137,7 +137,7 @@ android:orientation="vertical">