Replace Hauler with Slidr to avoid weird behaviour in SubsamplingScaleImageView.

This commit is contained in:
Alex Ning 2020-07-14 22:45:21 +08:00
parent 19c2d0b979
commit 67cb832c46
9 changed files with 94 additions and 150 deletions

View File

@ -93,7 +93,6 @@ dependencies {
implementation 'com.atlassian.commonmark:commonmark:0.13.1' implementation 'com.atlassian.commonmark:commonmark:0.13.1'
implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.google.code.gson:gson:2.8.6'
implementation 'me.zhanghai.android.fastscroll:library:1.1.2' implementation 'me.zhanghai.android.fastscroll:library:1.1.2'
implementation "com.thefuntasty.hauler:core:3.1.0"
// androidX startup for auto-init // androidX startup for auto-init
implementation "androidx.startup:startup-runtime:1.0.0-alpha01" implementation "androidx.startup:startup-runtime:1.0.0-alpha01"
//crashy //crashy

View File

@ -43,7 +43,7 @@
android:name=".Activity.ViewImgurMediaActivity" android:name=".Activity.ViewImgurMediaActivity"
android:configChanges="orientation|screenSize|layoutDirection" android:configChanges="orientation|screenSize|layoutDirection"
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"
android:theme="@style/AppTheme.Draggable" /> android:theme="@style/AppTheme.SlidableWithActionBar" />
<activity <activity
android:name=".Activity.ReportActivity" android:name=".Activity.ReportActivity"
android:label="@string/report_activity_label" android:label="@string/report_activity_label"
@ -294,12 +294,12 @@
<activity <activity
android:name=".Activity.ViewImageOrGifActivity" android:name=".Activity.ViewImageOrGifActivity"
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"
android:theme="@style/AppTheme.Draggable" /> android:theme="@style/AppTheme.SlidableWithActionBar" />
<activity <activity
android:name=".Activity.ViewVideoActivity" android:name=".Activity.ViewVideoActivity"
android:configChanges="orientation|screenSize|layoutDirection" android:configChanges="orientation|screenSize|layoutDirection"
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"
android:theme="@style/AppTheme.Draggable" /> android:theme="@style/AppTheme.SlidableWithActionBar" />
<activity <activity
android:name=".Activity.ViewPostDetailActivity" android:name=".Activity.ViewPostDetailActivity"
android:parentActivityName=".Activity.MainActivity" android:parentActivityName=".Activity.MainActivity"

View File

@ -42,8 +42,9 @@ import com.github.piasy.biv.loader.ImageLoader;
import com.github.piasy.biv.loader.glide.GlideImageLoader; import com.github.piasy.biv.loader.glide.GlideImageLoader;
import com.github.piasy.biv.view.BigImageView; import com.github.piasy.biv.view.BigImageView;
import com.github.piasy.biv.view.GlideImageViewFactory; import com.github.piasy.biv.view.GlideImageViewFactory;
import com.thefuntasty.hauler.DragDirection; import com.r0adkll.slidr.Slidr;
import com.thefuntasty.hauler.HaulerView; import com.r0adkll.slidr.model.SlidrConfig;
import com.r0adkll.slidr.model.SlidrPosition;
import java.io.File; import java.io.File;
@ -77,8 +78,8 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa
public static final String FILE_NAME_KEY = "FNK"; public static final String FILE_NAME_KEY = "FNK";
public static final String POST_TITLE_KEY = "PTK"; public static final String POST_TITLE_KEY = "PTK";
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0; private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
@BindView(R.id.hauler_view_view_image_or_gif_activity) /*@BindView(R.id.hauler_view_view_image_or_gif_activity)
HaulerView mHaulerView; HaulerView mHaulerView;*/
@BindView(R.id.progress_bar_view_image_or_gif_activity) @BindView(R.id.progress_bar_view_image_or_gif_activity)
ProgressBar mProgressBar; ProgressBar mProgressBar;
@BindView(R.id.image_view_view_image_or_gif_activity) @BindView(R.id.image_view_view_image_or_gif_activity)
@ -133,7 +134,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa
actionBar.setHomeAsUpIndicator(upArrow); actionBar.setHomeAsUpIndicator(upArrow);
actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.transparentActionBarAndExoPlayerControllerColor))); actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.transparentActionBarAndExoPlayerControllerColor)));
mHaulerView.setOnDragDismissedListener(dragDirection -> finish()); Slidr.attach(this, new SlidrConfig.Builder().position(SlidrPosition.VERTICAL).build());
mediaDownloader = new MediaDownloaderImpl(); mediaDownloader = new MediaDownloaderImpl();
@ -158,11 +159,11 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int windowHeight = displayMetrics.heightPixels; int windowHeight = displayMetrics.heightPixels;
mHaulerView.setOnDragDismissedListener(dragDirection -> { /*mHaulerView.setOnDragDismissedListener(dragDirection -> {
int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down; int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down;
finish(); finish();
overridePendingTransition(0, slide); overridePendingTransition(0, slide);
}); });*/
mLoadErrorLinearLayout.setOnClickListener(view -> { mLoadErrorLinearLayout.setOnClickListener(view -> {
mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.VISIBLE);

View File

@ -20,8 +20,9 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.thefuntasty.hauler.DragDirection; import com.r0adkll.slidr.Slidr;
import com.thefuntasty.hauler.HaulerView; import com.r0adkll.slidr.model.SlidrConfig;
import com.r0adkll.slidr.model.SlidrPosition;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
@ -65,8 +66,6 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
public static final int IMGUR_TYPE_IMAGE = 2; public static final int IMGUR_TYPE_IMAGE = 2;
private static final String IMGUR_IMAGES_STATE = "IIS"; private static final String IMGUR_IMAGES_STATE = "IIS";
@BindView(R.id.hauler_view_view_imgur_media_activity)
HaulerView haulerView;
@BindView(R.id.progress_bar_view_imgur_media_activity) @BindView(R.id.progress_bar_view_imgur_media_activity)
ProgressBar progressBar; ProgressBar progressBar;
@BindView(R.id.view_pager_view_imgur_media_activity) @BindView(R.id.view_pager_view_imgur_media_activity)
@ -129,11 +128,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa
images = savedInstanceState.getParcelableArrayList(IMGUR_IMAGES_STATE); images = savedInstanceState.getParcelableArrayList(IMGUR_IMAGES_STATE);
} }
haulerView.setOnDragDismissedListener(dragDirection -> { Slidr.attach(this, new SlidrConfig.Builder().position(SlidrPosition.VERTICAL).build());
int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down;
finish();
overridePendingTransition(0, slide);
});
if (images == null) { if (images == null) {
fetchImgurMedia(imgurId); fetchImgurMedia(imgurId);

View File

@ -46,8 +46,9 @@ import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import com.thefuntasty.hauler.DragDirection; import com.r0adkll.slidr.Slidr;
import com.thefuntasty.hauler.HaulerView; import com.r0adkll.slidr.model.SlidrConfig;
import com.r0adkll.slidr.model.SlidrPosition;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
@ -84,8 +85,6 @@ public class ViewVideoActivity extends AppCompatActivity {
private static final String IS_MUTE_STATE = "IMS"; private static final String IS_MUTE_STATE = "IMS";
private static final String VIDEO_DOWNLOAD_URL_STATE = "VDUS"; private static final String VIDEO_DOWNLOAD_URL_STATE = "VDUS";
private static final String VIDEO_URI_STATE = "VUS"; private static final String VIDEO_URI_STATE = "VUS";
@BindView(R.id.hauler_view_view_video_activity)
HaulerView haulerView;
@BindView(R.id.coordinator_layout_view_video_activity) @BindView(R.id.coordinator_layout_view_video_activity)
CoordinatorLayout coordinatorLayout; CoordinatorLayout coordinatorLayout;
@BindView(R.id.progress_bar_view_video_activity) @BindView(R.id.progress_bar_view_video_activity)
@ -165,11 +164,7 @@ public class ViewVideoActivity extends AppCompatActivity {
params.rightMargin = getResources().getDimensionPixelSize(resourceId); params.rightMargin = getResources().getDimensionPixelSize(resourceId);
} }
haulerView.setOnDragDismissedListener(dragDirection -> { Slidr.attach(this, new SlidrConfig.Builder().position(SlidrPosition.VERTICAL).build());
int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down;
finish();
overridePendingTransition(0, slide);
});
mediaDownloader = new MediaDownloaderImpl(); mediaDownloader = new MediaDownloaderImpl();

View File

@ -1,57 +1,44 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.thefuntasty.hauler.HaulerView xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/hauler_view_view_image_or_gif_activity" android:id="@+id/hauler_view_view_image_or_gif_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:dragUpEnabled="true" android:background="@android:color/black"
tools:application="ml.docilealligator.infinityforreddit.Activity.ViewImageActivity"> tools:application="ml.docilealligator.infinityforreddit.Activity.ViewImageActivity">
<androidx.core.widget.NestedScrollView <ProgressBar
android:id="@+id/progress_bar_view_image_or_gif_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<com.github.piasy.biv.view.BigImageView
android:id="@+id/image_view_view_image_or_gif_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"> app:optimizeDisplay="true"
app:tapToRetry="false"
app:initScaleType="centerInside" />
<RelativeLayout <LinearLayout
android:id="@+id/load_image_error_linear_layout_view_image_or_gif_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableTop="@drawable/ic_error_outline_white_24dp"
android:fontFamily="?attr/font_family"
android:gravity="center"
android:text="@string/error_loading_image_tap_to_retry"
android:textColor="@android:color/white"
android:textSize="?attr/font_default" />
<ProgressBar </LinearLayout>
android:id="@+id/progress_bar_view_image_or_gif_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<com.github.piasy.biv.view.BigImageView </RelativeLayout>
android:id="@+id/image_view_view_image_or_gif_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:optimizeDisplay="true"
app:tapToRetry="false"
app:initScaleType="centerInside" />
<LinearLayout
android:id="@+id/load_image_error_linear_layout_view_image_or_gif_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableTop="@drawable/ic_error_outline_white_24dp"
android:fontFamily="?attr/font_family"
android:gravity="center"
android:text="@string/error_loading_image_tap_to_retry"
android:textColor="@android:color/white"
android:textSize="?attr/font_default" />
</LinearLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</com.thefuntasty.hauler.HaulerView>

View File

@ -1,54 +1,39 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.thefuntasty.hauler.HaulerView xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/hauler_view_view_imgur_media_activity" android:id="@+id/hauler_view_view_imgur_media_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:dragUpEnabled="true"
tools:context=".Activity.ViewImgurMediaActivity"> tools:context=".Activity.ViewImgurMediaActivity">
<androidx.core.widget.NestedScrollView <ProgressBar
android:id="@+id/progress_bar_view_imgur_media_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"> android:id="@+id/view_pager_view_imgur_media_activity" />
<RelativeLayout <LinearLayout
android:id="@+id/load_image_error_linear_layout_view_imgur_media_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_error_outline_white_24dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@android:color/white"
android:text="@string/error_loading_image_tap_to_retry"
android:textSize="?attr/font_default"
android:fontFamily="?attr/font_family" />
<ProgressBar </LinearLayout>
android:id="@+id/progress_bar_view_imgur_media_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<androidx.viewpager.widget.ViewPager </RelativeLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_pager_view_imgur_media_activity" />
<LinearLayout
android:id="@+id/load_image_error_linear_layout_view_imgur_media_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_error_outline_white_24dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@android:color/white"
android:text="@string/error_loading_image_tap_to_retry"
android:textSize="?attr/font_default"
android:fontFamily="?attr/font_family" />
</LinearLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</com.thefuntasty.hauler.HaulerView>

View File

@ -1,40 +1,25 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.thefuntasty.hauler.HaulerView <androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/hauler_view_view_video_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:keepScreenOn="true" android:keepScreenOn="true"
app:dragUpEnabled="true" android:id="@+id/coordinator_layout_view_video_activity"
tools:application="ml.docilealligator.infinityforreddit.Activity.ViewVideoActivity"> tools:application="ml.docilealligator.infinityforreddit.Activity.ViewVideoActivity">
<androidx.core.widget.NestedScrollView <com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/player_view_view_video_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"> app:controller_layout_id="@layout/exo_playback_control_view"/>
<androidx.coordinatorlayout.widget.CoordinatorLayout <ProgressBar
android:id="@+id/coordinator_layout_view_video_activity" android:id="@+id/progress_bar_view_video_activity"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="match_parent"> android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
<com.google.android.exoplayer2.ui.PlayerView </androidx.coordinatorlayout.widget.CoordinatorLayout>
android:id="@+id/player_view_view_video_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:controller_layout_id="@layout/exo_playback_control_view"/>
<ProgressBar
android:id="@+id/progress_bar_view_video_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.core.widget.NestedScrollView>
</com.thefuntasty.hauler.HaulerView>

View File

@ -32,6 +32,13 @@
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
</style> </style>
<style name="AppTheme.SlidableWithActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowBackground">@android:color/black</item>
<item name="android:fontFamily">?attr/font_family</item>
</style>
<style name="AppTheme.SlidableWithTranslucentWindow" parent="AppTheme.Slidable"> <style name="AppTheme.SlidableWithTranslucentWindow" parent="AppTheme.Slidable">
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
</style> </style>
@ -40,16 +47,6 @@
<item name="android:statusBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item>
</style> </style>
<style name="AppTheme.Draggable" parent="AppTheme">
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowBackground">@android:color/black</item>
<item name="android:fontFamily">?attr/font_family</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar"> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
<item name="android:fontFamily">?attr/font_family</item> <item name="android:fontFamily">?attr/font_family</item>
</style> </style>