mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 03:07:26 +01:00
Add an error view when loading the image fails in ViewImageActivity.
This commit is contained in:
parent
1bd9ba61c6
commit
17ccccfa0e
@ -28,7 +28,8 @@
|
||||
</option>
|
||||
<option name="values">
|
||||
<map>
|
||||
<entry key="outputName" value="ic_error_outline_black_24dp" />
|
||||
<entry key="color" value="ffffff" />
|
||||
<entry key="outputName" value="ic_error_outline_white_24dp" />
|
||||
<entry key="sourceFile" value="$USER_HOME$" />
|
||||
</map>
|
||||
</option>
|
||||
|
@ -24,10 +24,12 @@ import android.support.v7.app.AppCompatActivity;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
@ -59,6 +61,10 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
static final String IMAGE_URL_KEY = "IUK";
|
||||
static final String FILE_NAME_KEY = "FNK";
|
||||
|
||||
private ProgressBar mProgressBar;
|
||||
private GestureImageView mImageView;
|
||||
private LinearLayout mLoadErrorLinearLayout;
|
||||
|
||||
private boolean isActionBarHidden = false;
|
||||
private boolean isDownloading = false;
|
||||
|
||||
@ -72,6 +78,8 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
private float touchY = -1.0f;
|
||||
private float zoom = 1.0f;
|
||||
|
||||
private boolean isSwiping = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -88,8 +96,20 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
setTitle(text);
|
||||
|
||||
final RelativeLayout relativeLayout = findViewById(R.id.parent_relative_layout_view_image_activity);
|
||||
final GestureImageView imageView = findViewById(R.id.image_view_view_image_activity);
|
||||
final ProgressBar progressBar = findViewById(R.id.progress_bar_view_image_activity);
|
||||
mImageView = findViewById(R.id.image_view_view_image_activity);
|
||||
mProgressBar = findViewById(R.id.progress_bar_view_image_activity);
|
||||
mLoadErrorLinearLayout = findViewById(R.id.load_image_error_linear_layout_view_image_activity);
|
||||
|
||||
mLoadErrorLinearLayout.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(!isSwiping) {
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
mLoadErrorLinearLayout.setVisibility(View.GONE);
|
||||
loadImage();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
final float pxHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
|
||||
@ -134,10 +154,13 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
loadImage();
|
||||
|
||||
swipe = new Swipe();
|
||||
swipe.setListener(new SimpleSwipeListener() {
|
||||
@Override
|
||||
public void onSwipingUp(final MotionEvent event) {
|
||||
isSwiping = true;
|
||||
float nowY = event.getY();
|
||||
float offset;
|
||||
if (touchY == -1.0f) {
|
||||
@ -147,21 +170,22 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
totalLengthY += offset;
|
||||
touchY = nowY;
|
||||
imageView.animate()
|
||||
mImageView.animate()
|
||||
.y(totalLengthY)
|
||||
.setDuration(0)
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(totalLengthY)
|
||||
.setDuration(0)
|
||||
.start();
|
||||
Log.i("total length", Float.toString(totalLengthY));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSwipedUp(final MotionEvent event) {
|
||||
imageView.animate()
|
||||
.y(0)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
|
||||
Log.i("total length", Float.toString(totalLengthY));
|
||||
if (totalLengthY < -pxHeight / 8) {
|
||||
imageView.animate()
|
||||
mImageView.animate()
|
||||
.y(-pxHeight)
|
||||
.setDuration(300)
|
||||
.setListener(new Animator.AnimatorListener() {
|
||||
@ -186,8 +210,17 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
})
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(-pxHeight)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
} else {
|
||||
imageView.animate()
|
||||
isSwiping = false;
|
||||
mImageView.animate()
|
||||
.y(0)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(0)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
@ -200,6 +233,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public void onSwipingDown(final MotionEvent event) {
|
||||
isSwiping = true;
|
||||
float nowY = event.getY();
|
||||
float offset;
|
||||
if (touchY == -1.0f) {
|
||||
@ -209,7 +243,11 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
totalLengthY += offset;
|
||||
touchY = nowY;
|
||||
imageView.animate()
|
||||
mImageView.animate()
|
||||
.y(totalLengthY)
|
||||
.setDuration(0)
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(totalLengthY)
|
||||
.setDuration(0)
|
||||
.start();
|
||||
@ -218,7 +256,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public boolean onSwipedDown(final MotionEvent event) {
|
||||
if (totalLengthY > pxHeight / 8) {
|
||||
imageView.animate()
|
||||
mImageView.animate()
|
||||
.y(pxHeight)
|
||||
.setDuration(300)
|
||||
.setListener(new Animator.AnimatorListener() {
|
||||
@ -243,8 +281,17 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
})
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(pxHeight)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
} else {
|
||||
imageView.animate()
|
||||
isSwiping = false;
|
||||
mImageView.animate()
|
||||
.y(0)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
mLoadErrorLinearLayout.animate()
|
||||
.y(0)
|
||||
.setDuration(300)
|
||||
.start();
|
||||
@ -257,7 +304,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
imageView.getController().addOnStateChangeListener(new GestureController.OnStateChangeListener() {
|
||||
mImageView.getController().addOnStateChangeListener(new GestureController.OnStateChangeListener() {
|
||||
@Override
|
||||
public void onStateChanged(State state) {
|
||||
zoom = state.getZoom();
|
||||
@ -269,22 +316,9 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
imageView.getController().getSettings().setPanEnabled(true);
|
||||
mImageView.getController().getSettings().setPanEnabled(true);
|
||||
|
||||
Glide.with(this).load(mImageUrl).listener(new RequestListener<Drawable>() {
|
||||
@Override
|
||||
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
return false;
|
||||
}
|
||||
}).apply(new RequestOptions().fitCenter()).into(imageView);
|
||||
|
||||
imageView.setOnClickListener(new View.OnClickListener() {
|
||||
mImageView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (isActionBarHidden) {
|
||||
@ -307,6 +341,23 @@ public class ViewImageActivity extends AppCompatActivity {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadImage() {
|
||||
Glide.with(this).load(mImageUrl).listener(new RequestListener<Drawable>() {
|
||||
@Override
|
||||
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
mLoadErrorLinearLayout.setVisibility(View.VISIBLE);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
return false;
|
||||
}
|
||||
}).apply(new RequestOptions().fitCenter()).into(mImageView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
mMenu = menu;
|
||||
|
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M11,15h2v2h-2zM11,7h2v6h-2zM11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/>
|
||||
</vector>
|
@ -20,4 +20,21 @@
|
||||
android:layout_height="match_parent"
|
||||
app:gest_fillViewport="true" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/load_image_error_linear_layout_view_image_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/tap_to_retry" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -11,6 +11,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="#FFFFFF"
|
||||
android:id="@+id/linear_layout_view_post_detail">
|
||||
|
||||
<RelativeLayout
|
||||
@ -18,9 +19,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
@ -34,11 +33,13 @@
|
||||
<TextView
|
||||
android:id="@+id/subreddit_text_view_best_post_item"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_toStartOf="@id/stickied_post_image_view_best_post_item"
|
||||
android:layout_toEndOf="@id/subreddit_icon_circle_image_view_best_post_item"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="#E91E63"/>
|
||||
|
||||
<ImageView
|
||||
@ -48,14 +49,16 @@
|
||||
android:layout_toStartOf="@id/post_time_text_view_best_post_item"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:tint="@color/colorPrimary"/>
|
||||
android:tint="@color/colorPrimary"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/post_time_text_view_best_post_item"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"/>
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center_vertical"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@ -82,7 +85,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/rounded_corner"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:textColor="@android:color/white"/>
|
||||
|
||||
@ -92,6 +95,7 @@
|
||||
android:layout_height="24dp"
|
||||
android:layout_toEndOf="@id/type_text_view_item_best_post"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
@ -224,6 +228,6 @@
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#E0E0E0"/>
|
||||
android:background="#F0F0F0"/>
|
||||
|
||||
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user