diff options
author | emasty <emasty@gmail.com> | 2019-12-29 15:28:57 +0300 |
---|---|---|
committer | emasty <emasty@gmail.com> | 2019-12-29 16:19:26 +0300 |
commit | 0d1dfc65aec6574cb6c7f1c5b62ff920b3232722 (patch) | |
tree | 1aa1f7d02559f9b0a2fe729d2aae8da12d5a4cca /News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java | |
parent | 1d3c059afafd5eef8eeaf3ac17c1d733c7ba179e (diff) |
Fix to comply with coding standard, fixed animation glitch
Signed-off-by: emasty <emasty@gmail.com>
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java')
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java | 72 |
1 files changed, 40 insertions, 32 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java index 666b8b4b..6c1df062 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java @@ -49,14 +49,12 @@ import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.core.view.GestureDetectorCompat; -import androidx.core.widget.ImageViewCompat; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; import com.google.android.material.floatingactionbutton.FloatingActionButton; @@ -685,14 +683,18 @@ public class NewsReaderDetailFragment extends Fragment { * A movement up is required to prevent accidentally marking articles as read. */ private class FastMarkReadMotionListener implements View.OnTouchListener { - private boolean markAsRead = false; private View fabMarkAllAsRead; - private float originX, originY, dx, dy; - ImageView circle; + private ImageView targetView; + + private boolean markAsRead = false; + private float originX, + originY; + private float dx, + dy; public FastMarkReadMotionListener(View fabMarkAllAsRead) { this.fabMarkAllAsRead = fabMarkAllAsRead; - this.circle = (ImageView)fabMarkAllAsRead.findViewById(R.id.target_done_all); + this.targetView = (ImageView)fabMarkAllAsRead.findViewById(R.id.target_done_all); } @Override @@ -705,7 +707,11 @@ public class NewsReaderDetailFragment extends Fragment { this.moveFAB(v, event); break; case MotionEvent.ACTION_UP: - this.stopUserInteractionProcess(v, this.markAsRead); + this.stopUserInteractionProcess(v); + break; + default: + // Do nothing + break; } return true; } @@ -720,15 +726,16 @@ public class NewsReaderDetailFragment extends Fragment { private void startUserInteractionProcess(View v, MotionEvent event) { // Save start location of movement and button - originX = v.getX(); - originY = v.getY(); - dx = v.getX() - event.getRawX(); - dy = v.getY() - event.getRawY(); + this.originX = v.getX(); + this.originY = v.getY(); + this.dx = v.getX() - event.getRawX(); + this.dy = v.getY() - event.getRawY(); + this.markAsRead = false; // Start animation of target - circle.setImageResource(R.drawable.fa_all_read_target); - circle.setVisibility(View.VISIBLE); - ((Animatable)circle.getDrawable()).start(); + this.targetView.setImageResource(R.drawable.fa_all_read_target); + this.targetView.setVisibility(View.VISIBLE); + ((Animatable)this.targetView.getDrawable()).start(); } /** @@ -741,8 +748,8 @@ public class NewsReaderDetailFragment extends Fragment { * @param event motion event for v */ private void moveFAB(View v, MotionEvent event) { - v.setX(event.getRawX() + dx); - v.setY(event.getRawY() + dy); + v.setX(event.getRawX() + this.dx); + v.setY(event.getRawY() + this.dy); this.checkLocation(event); } @@ -754,26 +761,25 @@ public class NewsReaderDetailFragment extends Fragment { * @param evt MotionEvent of all read FAB */ private void checkLocation(MotionEvent evt) { - View targetView = fabMarkAllAsRead.findViewById(R.id.target_done_all); // Location on screen for target is required as motion event returns location on screen int[] location = new int[2]; - targetView.getLocationOnScreen(location); + this.targetView.getLocationOnScreen(location); Rect r = new Rect(location[0], location[1], (location[0] + targetView.getWidth()), (location[1] + targetView.getHeight())); if (r.contains((int)evt.getRawX(), (int)evt.getRawY())) { - if (!markAsRead) { + if (!this.markAsRead) { this.markAsRead = true; - circle.setImageResource(R.drawable.fa_all_read_target_success); - ((Animatable)circle.getDrawable()).start(); + this.targetView.setImageResource(R.drawable.fa_all_read_target_success); + ((Animatable) this.targetView.getDrawable()).start(); } } else { if (this.markAsRead) { this.markAsRead = false; - circle.setImageResource(R.drawable.fa_all_read_target); - ((Animatable)circle.getDrawable()).start(); + this.targetView.setImageResource(R.drawable.fa_all_read_target); + ((Animatable) this.targetView.getDrawable()).start(); } } @@ -785,11 +791,9 @@ public class NewsReaderDetailFragment extends Fragment { * - A success animation is shown of all articles will be marked as read * - Target view is hidden again * - * @param success if all articles should be marked as read + * @param v view of fab */ - private void stopUserInteractionProcess(View v, boolean success) { - ((Animatable)circle.getDrawable()).stop(); - + private void stopUserInteractionProcess(View v) { if (this.markAsRead) { Animation anim_success = AnimationUtils.loadAnimation(NewsReaderDetailFragment.this.getContext(), R.anim.all_read_success); @@ -801,17 +805,21 @@ public class NewsReaderDetailFragment extends Fragment { @Override public void onAnimationEnd(Animation animation) { - circle.setVisibility(View.INVISIBLE); + ((Animatable)targetView.getDrawable()).stop(); + targetView.setVisibility(View.INVISIBLE); } @Override - public void onAnimationRepeat(Animation animation) {} + public void onAnimationRepeat(Animation animation) { + //Nothing to do here for now + } }); - circle.startAnimation(anim_success); + this.targetView.startAnimation(anim_success); this.markAllAsReadForCurrentView(); } else { - circle.setVisibility(View.INVISIBLE); - v.animate().x(originX).y(originY).setDuration(100).setStartDelay(0).start(); + this.targetView.setVisibility(View.INVISIBLE); + v.animate().x(this.originX).y(this.originY).setDuration(100).setStartDelay(0).start(); + ((Animatable)this.targetView.getDrawable()).stop(); } } |