From 07f0349367fb334fc9f435efe3212a2b17fa08d5 Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 29 Apr 2020 16:00:34 +0900 Subject: [PATCH] refactor utils namespace --- .../gramophone/adapter/PlaylistAdapter.java | 6 - .../adapter/song/AlbumSongAdapter.java | 1 - .../gramophone/util/ArtistSignatureUtil.java | 43 ---- .../gramophone/util/CalendarUtil.java | 14 +- .../kabouzeid/gramophone/util/FileUtil.java | 203 ------------------ .../kabouzeid/gramophone/util/ImageUtil.java | 7 +- .../kabouzeid/gramophone/util/MusicUtil.java | 115 +--------- .../gramophone/util/PhonographColorUtil.java | 7 +- .../gramophone/util/PlaylistsUtil.java | 3 - .../gramophone/util/PreferenceUtil.java | 2 + .../gramophone/util/SwipeAndDragHelper.java | 2 +- .../com/kabouzeid/gramophone/util/Util.java | 7 +- .../kabouzeid/gramophone/util/ViewUtil.java | 4 +- 13 files changed, 21 insertions(+), 393 deletions(-) delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/util/ArtistSignatureUtil.java delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/util/FileUtil.java diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java index b7cde095..1bedd13f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -1,6 +1,5 @@ package com.kabouzeid.gramophone.adapter; -import android.content.Context; import android.graphics.PorterDuff; import android.os.Build; import androidx.annotation.LayoutRes; @@ -12,10 +11,8 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.PopupMenu; -import android.widget.Toast; import com.kabouzeid.appthemehelper.util.ATHUtil; -import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; @@ -25,15 +22,12 @@ import com.kabouzeid.gramophone.helper.menu.PlaylistMenuHelper; import com.kabouzeid.gramophone.helper.menu.SongsMenuHelper; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.loader.PlaylistSongLoader; -import com.kabouzeid.gramophone.misc.WeakContextAsyncTask; import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.playlist.AbsSmartPlaylist; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; -import com.kabouzeid.gramophone.util.PlaylistsUtil; -import java.io.IOException; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/AlbumSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/AlbumSongAdapter.java index ff20b208..e207d618 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/AlbumSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/AlbumSongAdapter.java @@ -10,7 +10,6 @@ import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.MusicUtil; -import java.util.ArrayList; import java.util.List; public class AlbumSongAdapter extends SongAdapter { diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/ArtistSignatureUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/ArtistSignatureUtil.java deleted file mode 100644 index 25269a69..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/util/ArtistSignatureUtil.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.kabouzeid.gramophone.util; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.SharedPreferences; -import androidx.annotation.NonNull; - -import com.bumptech.glide.signature.StringSignature; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class ArtistSignatureUtil { - private static final String ARTIST_SIGNATURE_PREFS = "artist_signatures"; - - private static ArtistSignatureUtil sInstance; - - private final SharedPreferences mPreferences; - - private ArtistSignatureUtil(@NonNull final Context context) { - mPreferences = context.getSharedPreferences(ARTIST_SIGNATURE_PREFS, Context.MODE_PRIVATE); - } - - public static ArtistSignatureUtil getInstance(@NonNull final Context context) { - if (sInstance == null) { - sInstance = new ArtistSignatureUtil(context.getApplicationContext()); - } - return sInstance; - } - - @SuppressLint("CommitPrefEdits") - public void updateArtistSignature(String artistName) { - mPreferences.edit().putLong(artistName, System.currentTimeMillis()).commit(); - } - - public long getArtistSignatureRaw(String artistName) { - return mPreferences.getLong(artistName, 0); - } - - public StringSignature getArtistSignature(String artistName) { - return new StringSignature(String.valueOf(getArtistSignatureRaw(artistName))); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/CalendarUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/CalendarUtil.java index e951a236..3c53a41a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/CalendarUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/CalendarUtil.java @@ -3,9 +3,6 @@ package com.kabouzeid.gramophone.util; import java.util.Calendar; import java.util.GregorianCalendar; -/** - * @author Eugene Cheung (arkon) - */ public class CalendarUtil { private static final long MS_PER_MINUTE = 60 * 1000; private static final long MS_PER_DAY = 24 * 60 * MS_PER_MINUTE; @@ -23,7 +20,8 @@ public class CalendarUtil { */ public long getElapsedToday() { // Time elapsed so far today - return (calendar.get(Calendar.HOUR_OF_DAY) * 60 + calendar.get(Calendar.MINUTE)) * MS_PER_MINUTE + return (calendar.get(Calendar.HOUR_OF_DAY) * 60 + + calendar.get(Calendar.MINUTE)) * MS_PER_MINUTE + calendar.get(Calendar.SECOND) * 1000 + calendar.get(Calendar.MILLISECOND); } @@ -63,9 +61,8 @@ public class CalendarUtil { * @return Time elapsed this month in milliseconds. */ public long getElapsedMonth() { - // Today + rest of this month - return getElapsedToday() + - ((calendar.get(Calendar.DAY_OF_MONTH) - 1) * MS_PER_DAY); + // Today and the rest of this month + return getElapsedToday() + ((calendar.get(Calendar.DAY_OF_MONTH) - 1) * MS_PER_DAY); } /** @@ -75,7 +72,7 @@ public class CalendarUtil { * @return Time elapsed this month and the last numMonths months in milliseconds. */ public long getElapsedMonths(int numMonths) { - // Today + rest of this month + // Today and the rest of this month long elapsed = getElapsedMonth(); // Previous numMonths months @@ -108,7 +105,6 @@ public class CalendarUtil { int year = calendar.get(Calendar.YEAR); while (month > Calendar.JANUARY) { elapsed += getDaysInMonth(year, month) * MS_PER_DAY; - month--; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/FileUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/FileUtil.java deleted file mode 100644 index 7661a58e..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/util/FileUtil.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.kabouzeid.gramophone.util; - -import android.content.Context; -import android.database.Cursor; -import android.provider.MediaStore; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import android.webkit.MimeTypeMap; - -import com.kabouzeid.gramophone.loader.SongLoader; -import com.kabouzeid.gramophone.loader.SortedCursor; -import com.kabouzeid.gramophone.model.Song; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public final class FileUtil { - private FileUtil() { - } - - @NonNull - public static List matchFilesWithMediaStore(@NonNull Context context, @Nullable List files) { - return SongLoader.getSongs(makeSongCursor(context, files)); - } - - @Nullable - public static SortedCursor makeSongCursor(@NonNull final Context context, @Nullable final List files) { - String selection = null; - String[] paths = null; - - if (files != null) { - paths = toPathArray(files); - - if (files.size() > 0 && files.size() < 999) { // 999 is the max amount Androids SQL implementation can handle. - selection = MediaStore.Audio.AudioColumns.DATA + " IN (" + makePlaceholders(files.size()) + ")"; - } - } - - Cursor songCursor = SongLoader.makeSongCursor(context, selection, selection == null ? null : paths); - - return songCursor == null ? null : new SortedCursor(songCursor, paths, MediaStore.Audio.AudioColumns.DATA); - } - - private static String makePlaceholders(int len) { - StringBuilder sb = new StringBuilder(len * 2 - 1); - sb.append("?"); - for (int i = 1; i < len; i++) { - sb.append(",?"); - } - return sb.toString(); - } - - @Nullable - private static String[] toPathArray(@Nullable List files) { - if (files != null) { - String[] paths = new String[files.size()]; - for (int i = 0; i < files.size(); i++) { - paths[i] = safeGetCanonicalPath(files.get(i)); - } - return paths; - } - return null; - } - - @NonNull - public static List listFiles(@NonNull File directory, @Nullable FileFilter fileFilter) { - List fileList = new LinkedList<>(); - File[] found = directory.listFiles(fileFilter); - if (found != null) { - Collections.addAll(fileList, found); - } - return fileList; - } - - @NonNull - public static List listFilesDeep(@NonNull File directory, @Nullable FileFilter fileFilter) { - List files = new LinkedList<>(); - internalListFilesDeep(files, directory, fileFilter); - return files; - } - - @NonNull - public static List listFilesDeep(@NonNull Collection files, @Nullable FileFilter fileFilter) { - List resFiles = new LinkedList<>(); - for (File file : files) { - if (file.isDirectory()) { - internalListFilesDeep(resFiles, file, fileFilter); - } else if (fileFilter == null || fileFilter.accept(file)) { - resFiles.add(file); - } - } - return resFiles; - } - - private static void internalListFilesDeep(@NonNull Collection files, @NonNull File directory, @Nullable FileFilter fileFilter) { - File[] found = directory.listFiles(fileFilter); - - if (found != null) { - for (File file : found) { - if (file.isDirectory()) { - internalListFilesDeep(files, file, fileFilter); - } else { - files.add(file); - } - } - } - } - - public static boolean fileIsMimeType(File file, String mimeType, MimeTypeMap mimeTypeMap) { - if (mimeType == null || mimeType.equals("*/*")) { - return true; - } else { - // get the file mime type - String filename = file.toURI().toString(); - int dotPos = filename.lastIndexOf('.'); - if (dotPos == -1) { - return false; - } - String fileExtension = filename.substring(dotPos + 1).toLowerCase(); - String fileType = mimeTypeMap.getMimeTypeFromExtension(fileExtension); - if (fileType == null) { - return false; - } - // check the 'type/subtype' pattern - if (fileType.equals(mimeType)) { - return true; - } - // check the 'type/*' pattern - int mimeTypeDelimiter = mimeType.lastIndexOf('/'); - if (mimeTypeDelimiter == -1) { - return false; - } - String mimeTypeMainType = mimeType.substring(0, mimeTypeDelimiter); - String mimeTypeSubtype = mimeType.substring(mimeTypeDelimiter + 1); - if (!mimeTypeSubtype.equals("*")) { - return false; - } - int fileTypeDelimiter = fileType.lastIndexOf('/'); - if (fileTypeDelimiter == -1) { - return false; - } - String fileTypeMainType = fileType.substring(0, fileTypeDelimiter); - return fileTypeMainType.equals(mimeTypeMainType); - } - } - - public static String stripExtension(String str) { - if (str == null) return null; - int pos = str.lastIndexOf('.'); - if (pos == -1) return str; - return str.substring(0, pos); - } - - public static String readFromStream(InputStream is) throws Exception { - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - StringBuilder sb = new StringBuilder(); - String line; - while ((line = reader.readLine()) != null) { - if (sb.length() > 0) sb.append("\n"); - sb.append(line); - } - reader.close(); - return sb.toString(); - } - - public static String read(File file) throws Exception { - FileInputStream fin = new FileInputStream(file); - String ret = readFromStream(fin); - fin.close(); - return ret; - } - - public static String safeGetCanonicalPath(File file) { - try { - return file.getCanonicalPath(); - } catch (IOException e) { - e.printStackTrace(); - return file.getAbsolutePath(); - } - } - - public static File safeGetCanonicalFile(File file) { - try { - return file.getCanonicalFile(); - } catch (IOException e) { - e.printStackTrace(); - return file.getAbsoluteFile(); - } - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/ImageUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/ImageUtil.java index 5fa9ea8f..c2851c0f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/ImageUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/ImageUtil.java @@ -19,9 +19,6 @@ import java.io.InputStream; import com.kabouzeid.appthemehelper.util.TintHelper; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class ImageUtil { public static int calculateInSampleSize(int width, int height, int reqWidth) { @@ -60,6 +57,7 @@ public class ImageUtil { if (maxForSmallerSize >= width) { return src; } + float ratio = (float) height / width; dstWidth = maxForSmallerSize; dstHeight = Math.round(maxForSmallerSize * ratio); @@ -67,6 +65,7 @@ public class ImageUtil { if (maxForSmallerSize >= height) { return src; } + float ratio = (float) width / height; dstWidth = Math.round(maxForSmallerSize * ratio); dstHeight = maxForSmallerSize; @@ -91,6 +90,7 @@ public class ImageUtil { if (Build.VERSION.SDK_INT >= 21) { return res.getDrawable(resId, theme); } + return VectorDrawableCompat.create(res, resId, theme); } @@ -116,6 +116,5 @@ public class ImageUtil { public static Bitmap resize(InputStream stream, int scaledWidth, int scaledHeight) { final Bitmap bitmap = BitmapFactory.decodeStream(stream); return Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true); - } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index a2439354..5b6fe7b2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -29,16 +29,11 @@ import com.kabouzeid.gramophone.model.Genre; import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.Song; -import org.jellyfin.apiclient.interaction.ApiClient; - import java.io.File; import java.io.IOException; import java.util.List; import java.util.Locale; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class MusicUtil { public static Uri getSongFileUri(Song song) { return Uri.parse(App.getApiClient().getApiUrl() + "/Audio/" + song.id + "/stream?static=true"); @@ -127,6 +122,7 @@ public class MusicUtil { for (int i = 0; i < songs.size(); i++) { duration += songs.get(i).duration; } + return duration; } @@ -142,15 +138,8 @@ public class MusicUtil { } } - /** - * Build a concatenated string from the provided arguments - * The intended purpose is to show extra annotations - * to a music library item. - * Ex: for a given album --> buildInfoString(album.artist, album.songCount) - */ @NonNull - public static String buildInfoString(@Nullable final String string1, @Nullable final String string2) - { + public static String buildInfoString(@Nullable final String string1, @Nullable final String string2) { // Skip empty strings if (TextUtils.isEmpty(string1)) { //noinspection ConstantConditions @@ -170,104 +159,6 @@ public class MusicUtil { return trackNumberToFix % 1000; } - public static void insertAlbumArt(@NonNull Context context, int albumId, String path) { - ContentResolver contentResolver = context.getContentResolver(); - - Uri artworkUri = Uri.parse("content://media/external/audio/albumart"); - contentResolver.delete(ContentUris.withAppendedId(artworkUri, albumId), null, null); - - ContentValues values = new ContentValues(); - values.put("album_id", albumId); - values.put("_data", path); - - contentResolver.insert(artworkUri, values); - } - - public static void deleteAlbumArt(@NonNull Context context, int albumId) { - ContentResolver contentResolver = context.getContentResolver(); - Uri localUri = Uri.parse("content://media/external/audio/albumart"); - contentResolver.delete(ContentUris.withAppendedId(localUri, albumId), null, null); - } - - @NonNull - public static File createAlbumArtFile() { - return new File(createAlbumArtDir(), String.valueOf(System.currentTimeMillis())); - } - - @NonNull - @SuppressWarnings("ResultOfMethodCallIgnored") - public static File createAlbumArtDir() { - File albumArtDir = new File(Environment.getExternalStorageDirectory(), "/albumthumbs/"); - if (!albumArtDir.exists()) { - albumArtDir.mkdirs(); - try { - new File(albumArtDir, ".nomedia").createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return albumArtDir; - } - - public static void deleteTracks(@NonNull final Context context, @NonNull final List songs) { - final String[] projection = new String[]{ - BaseColumns._ID, MediaStore.MediaColumns.DATA - }; - final StringBuilder selection = new StringBuilder(); - selection.append(BaseColumns._ID + " IN ("); - for (int i = 0; i < songs.size(); i++) { - selection.append(songs.get(i).id); - if (i < songs.size() - 1) { - selection.append(","); - } - } - selection.append(")"); - - try { - final Cursor cursor = context.getContentResolver().query( - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection.toString(), - null, null); - if (cursor != null) { - // Step 1: Remove selected tracks from the current playlist, as well - // as from the album art cache - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - final int id = cursor.getInt(0); - final Song song = SongLoader.getSong(context, id); - MusicPlayerRemote.removeFromQueue(song); - cursor.moveToNext(); - } - - // Step 2: Remove selected tracks from the database - context.getContentResolver().delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, - selection.toString(), null); - - // Step 3: Remove files from card - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - final String name = cursor.getString(1); - try { // File.delete can throw a security exception - final File f = new File(name); - if (!f.delete()) { - // I'm not sure if we'd ever get here (deletion would - // have to fail, but no exception thrown) - Log.e("MusicUtils", "Failed to delete file " + name); - } - cursor.moveToNext(); - } catch (@NonNull final SecurityException ex) { - cursor.moveToNext(); - } catch (NullPointerException e) { - Log.e("MusicUtils", "Failed to find file " + name); - } - } - cursor.close(); - } - context.getContentResolver().notifyChange(Uri.parse("content://media"), null); - Toast.makeText(context, context.getString(R.string.deleted_x_songs, songs.size()), Toast.LENGTH_SHORT).show(); - } catch (SecurityException ignored) { - } - } - public static boolean isFavoritePlaylist(@NonNull final Context context, @NonNull final Playlist playlist) { return playlist.name != null && playlist.name.equals(context.getString(R.string.favorites)); } @@ -303,12 +194,14 @@ public class MusicUtil { @NonNull public static String getSectionName(@Nullable String musicMediaTitle) { if (TextUtils.isEmpty(musicMediaTitle)) return ""; + musicMediaTitle = musicMediaTitle.trim().toLowerCase(); if (musicMediaTitle.startsWith("the ")) { musicMediaTitle = musicMediaTitle.substring(4); } else if (musicMediaTitle.startsWith("a ")) { musicMediaTitle = musicMediaTitle.substring(2); } + if (musicMediaTitle.isEmpty()) return ""; return String.valueOf(musicMediaTitle.charAt(0)).toUpperCase(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PhonographColorUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PhonographColorUtil.java index 0143d3fa..8c172238 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PhonographColorUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PhonographColorUtil.java @@ -10,9 +10,6 @@ import com.kabouzeid.appthemehelper.util.ColorUtil; import java.util.Collections; import java.util.Comparator; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class PhonographColorUtil { @Nullable @@ -40,6 +37,7 @@ public class PhonographColorUtil { return Collections.max(palette.getSwatches(), SwatchComparator.getInstance()).getRgb(); } } + return fallback; } @@ -50,6 +48,7 @@ public class PhonographColorUtil { if (sInstance == null) { sInstance = new SwatchComparator(); } + return sInstance; } @@ -64,6 +63,7 @@ public class PhonographColorUtil { while (ColorUtil.isColorLight(backgroundColor)) { backgroundColor = ColorUtil.darkenColor(backgroundColor); } + return backgroundColor; } @@ -72,6 +72,7 @@ public class PhonographColorUtil { while (!ColorUtil.isColorLight(backgroundColor)) { backgroundColor = ColorUtil.lightenColor(backgroundColor); } + return backgroundColor; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PlaylistsUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PlaylistsUtil.java index 7a7db9fc..2b9c43e1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PlaylistsUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PlaylistsUtil.java @@ -10,9 +10,6 @@ import com.kabouzeid.gramophone.model.Song; import java.util.List; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class PlaylistsUtil { public static boolean doesPlaylistExist(@NonNull final Context context, final String name) { return false; diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 5a6a5166..2d01a530 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -126,6 +126,7 @@ public final class PreferenceUtil { for (NowPlayingScreen nowPlayingScreen : NowPlayingScreen.values()) { if (nowPlayingScreen.id == id) return nowPlayingScreen; } + return NowPlayingScreen.CARD; } @@ -251,6 +252,7 @@ public final class PreferenceUtil { interval = calendarUtil.getElapsedMonth(); break; } + return (System.currentTimeMillis() - interval) / 1000; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/SwipeAndDragHelper.java b/app/src/main/java/com/kabouzeid/gramophone/util/SwipeAndDragHelper.java index 51c1dca0..b4bcd727 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/SwipeAndDragHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/SwipeAndDragHelper.java @@ -45,12 +45,12 @@ public class SwipeAndDragHelper extends ItemTouchHelper.Callback { float alpha = 1 - (Math.abs(dX) / recyclerView.getWidth()); viewHolder.itemView.setAlpha(alpha); } + super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } public interface ActionCompletionContract { void onViewMoved(int oldPosition, int newPosition); } - } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java index 4500b89f..0a6c3b13 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java @@ -20,9 +20,6 @@ import android.view.inputmethod.InputMethodManager; import com.kabouzeid.gramophone.R; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class Util { public static int getActionBarSize(@NonNull Context context) { @@ -51,8 +48,7 @@ public class Util { public static void setAllowDrawUnderStatusBar(@NonNull Window window) { window.getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } public static void hideSoftKeyboard(@Nullable Activity activity) { @@ -87,5 +83,4 @@ public class Util { return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } else return false; } - } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java index ff8b596e..71f28dca 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java @@ -24,9 +24,6 @@ import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.kabouzeid.gramophone.R; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; -/** - * @author Karim Abou Zeid (kabouzeid) - */ public class ViewUtil { public final static int PHONOGRAPH_ANIM_TIME = 1000; @@ -51,6 +48,7 @@ public class ViewUtil { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f)); } + animator.setDuration(PHONOGRAPH_ANIM_TIME); return animator; }