From d8ddad9522596a6f8fb2e5a5d46ba74f6ed1e234 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Fri, 19 Apr 2019 12:01:41 +0800 Subject: Fixed voting state inconsistency after orientation change in ViewPostDetailActivity. Fixed title could not be shown properly in CollapsingToolbarLayout in ViewSubredditDetailActivity and ViewUserDetailActivity. --- .../infinityforreddit/CommentAdapter.java | 349 --------------------- .../infinityforreddit/ViewPostDetailActivity.java | 24 +- .../ViewSubredditDetailActivity.java | 49 +-- .../infinityforreddit/ViewUserDetailActivity.java | 49 +-- 4 files changed, 37 insertions(+), 434 deletions(-) delete mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/CommentAdapter.java diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAdapter.java deleted file mode 100644 index ca0ec181..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAdapter.java +++ /dev/null @@ -1,349 +0,0 @@ -package ml.docilealligator.infinityforreddit; - -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.graphics.ColorFilter; -import android.net.Uri; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.multilevelview.models.RecyclerViewItem; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import androidx.annotation.NonNull; -import androidx.browser.customtabs.CustomTabsIntent; -import androidx.core.content.ContextCompat; -import androidx.paging.PagedListAdapter; -import androidx.recyclerview.widget.DiffUtil; -import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import butterknife.ButterKnife; -import retrofit2.Retrofit; -import ru.noties.markwon.SpannableConfiguration; -import ru.noties.markwon.view.MarkwonView; - -public class CommentAdapter extends PagedListAdapter { - private Context mContext; - private Retrofit mRetrofit; - private Retrofit mOauthRetrofit; - private SharedPreferences mSharedPreferences; - private RecyclerView mRecyclerView; - private String subredditNamePrefixed; - private String article; - private Locale locale; - - private NetworkState networkState; - private RetryLoadingMoreCallback retryLoadingMoreCallback; - - interface RetryLoadingMoreCallback { - void retryLoadingMore(); - } - - CommentAdapter(Context context, Retrofit retrofit, Retrofit oauthRetrofit, - SharedPreferences sharedPreferences, RecyclerView recyclerView, - String subredditNamePrefixed, String article, Locale locale) { - super(DIFF_CALLBACK); - mContext = context; - mRetrofit = retrofit; - mOauthRetrofit = oauthRetrofit; - mSharedPreferences = sharedPreferences; - mRecyclerView = recyclerView; - this.subredditNamePrefixed = subredditNamePrefixed; - this.article = article; - this.locale = locale; - } - - static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { - @Override - public boolean areItemsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) { - return commentData.getId().equals(t1.getId()); - } - - @Override - public boolean areContentsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) { - return commentData.getCommentContent().equals(t1.getCommentContent()); - } - }; - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { - return new CommentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { - final CommentData commentItem = getItem(i); - - String authorPrefixed = "u/" + commentItem.getAuthor(); - ((CommentViewHolder) viewHolder).authorTextView.setText(authorPrefixed); - ((CommentViewHolder) viewHolder).authorTextView.setOnClickListener(view -> { - Intent intent = new Intent(mContext, ViewUserDetailActivity.class); - intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, commentItem.getAuthor()); - mContext.startActivity(intent); - }); - - ((CommentViewHolder) viewHolder).commentTimeTextView.setText(commentItem.getCommentTime()); - SpannableConfiguration spannableConfiguration = SpannableConfiguration.builder(mContext).linkResolver((view, link) -> { - if(link.startsWith("/u/")) { - Intent intent = new Intent(mContext, ViewUserDetailActivity.class); - intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, link.substring(3)); - mContext.startActivity(intent); - } else if(link.startsWith("/r/")) { - Intent intent = new Intent(mContext, ViewSubredditDetailActivity.class); - intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, link.substring(3)); - mContext.startActivity(intent); - } else { - CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); - // add share action to menu list - builder.addDefaultShareMenuItem(); - builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary)); - CustomTabsIntent customTabsIntent = builder.build(); - customTabsIntent.launchUrl(mContext, Uri.parse(link)); - } - }).build(); - - ((CommentViewHolder) viewHolder).commentMarkdownView.setMarkdown(spannableConfiguration, commentItem.getCommentContent()); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore())); - - ((CommentViewHolder) viewHolder).verticalBlock.getLayoutParams().width = commentItem.getDepth() * 16; - if(commentItem.hasReply()) { - setExpandButton(((CommentViewHolder) viewHolder).expandButton, commentItem.isExpanded()); - } - - ((CommentViewHolder) viewHolder).expandButton.setOnClickListener(view -> { - if(commentItem.hasChildren() && commentItem.getChildren().size() > 0) { - setExpandButton(((CommentViewHolder) viewHolder).expandButton, commentItem.isExpanded()); - } else { - ((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar.setVisibility(View.VISIBLE); - FetchComment.fetchComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(), - locale, false, commentItem.getDepth(), new FetchComment.FetchCommentListener() { - @Override - public void onFetchCommentSuccess(List commentData, - String parentId, ArrayList children) { - commentItem.addChildren((List) commentData); - ((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar - .setVisibility(View.GONE); - ((CommentViewHolder) viewHolder).expandButton - .setImageResource(R.drawable.ic_expand_less_black_20dp); - - /*ParseComment.parseComment(response, new ArrayList<>(), - locale, false, commentItem.getDepth(), - new ParseComment.ParseCommentListener() { - @Override - public void onParseCommentSuccess(List commentData, - String parentId, String children) { - commentItem.addChildren((List) commentData); - ((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar - .setVisibility(View.GONE); - ((CommentViewHolder) viewHolder).expandButton - .setImageResource(R.drawable.ic_expand_less_black_20dp); - } - - @Override - public void onParseCommentFailed() { - ((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar - .setVisibility(View.GONE); - } - });*/ - } - - @Override - public void onFetchCommentFailed() { - ((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar - .setVisibility(View.GONE); - } - }); - } - }); - - switch (commentItem.getVoteType()) { - case 1: - ((CommentViewHolder) viewHolder).upvoteButton - .setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN); - break; - case 2: - ((CommentViewHolder) viewHolder).downvoteButton - .setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN); - break; - } - - ((CommentViewHolder) viewHolder).upvoteButton.setOnClickListener(view -> { - final boolean isDownvotedBefore = ((CommentViewHolder) viewHolder).downvoteButton.getColorFilter() != null; - final ColorFilter minusButtonColorFilter = ((CommentViewHolder) viewHolder).downvoteButton.getColorFilter(); - ((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter(); - - if (((CommentViewHolder) viewHolder).upvoteButton.getColorFilter() == null) { - ((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN); - if(isDownvotedBefore) { - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 2)); - } else { - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1)); - } - - VoteThing.voteThing(mOauthRetrofit,mSharedPreferences, new VoteThing.VoteThingListener() { - @Override - public void onVoteThingSuccess(int position1) { - commentItem.setVoteType(1); - if(isDownvotedBefore) { - commentItem.setScore(commentItem.getScore() + 2); - } else { - commentItem.setScore(commentItem.getScore() + 1); - } - } - - @Override - public void onVoteThingFail(int position1) { - Toast.makeText(mContext, "Cannot upvote this comment", Toast.LENGTH_SHORT).show(); - ((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter(); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore())); - ((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(minusButtonColorFilter); - } - }, commentItem.getFullName(), RedditUtils.DIR_UPVOTE, ((CommentViewHolder) viewHolder).getAdapterPosition()); - } else { - //Upvoted before - ((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter(); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 1)); - - VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() { - @Override - public void onVoteThingSuccess(int position1) { - commentItem.setVoteType(0); - commentItem.setScore(commentItem.getScore() - 1); - } - - @Override - public void onVoteThingFail(int position1) { - Toast.makeText(mContext, "Cannot unvote this comment", Toast.LENGTH_SHORT).show(); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1)); - ((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN); - commentItem.setScore(commentItem.getScore() + 1); - } - }, commentItem.getFullName(), RedditUtils.DIR_UNVOTE, ((CommentViewHolder) viewHolder).getAdapterPosition()); - } - }); - - ((CommentViewHolder) viewHolder).downvoteButton.setOnClickListener(view -> { - final boolean isUpvotedBefore = ((CommentViewHolder) viewHolder).upvoteButton.getColorFilter() != null; - - final ColorFilter upvoteButtonColorFilter = ((CommentViewHolder) viewHolder).upvoteButton.getColorFilter(); - ((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter(); - - if (((CommentViewHolder) viewHolder).downvoteButton.getColorFilter() == null) { - ((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN); - if (isUpvotedBefore) { - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 2)); - } else { - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 1)); - } - - VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() { - @Override - public void onVoteThingSuccess(int position12) { - commentItem.setVoteType(-1); - if(isUpvotedBefore) { - commentItem.setScore(commentItem.getScore() - 2); - } else { - commentItem.setScore(commentItem.getScore() - 1); - } - } - - @Override - public void onVoteThingFail(int position12) { - Toast.makeText(mContext, "Cannot downvote this comment", Toast.LENGTH_SHORT).show(); - ((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter(); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore())); - ((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(upvoteButtonColorFilter); - } - }, commentItem.getFullName(), RedditUtils.DIR_DOWNVOTE, viewHolder.getAdapterPosition()); - } else { - //Down voted before - ((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter(); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1)); - - VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() { - @Override - public void onVoteThingSuccess(int position12) { - commentItem.setVoteType(0); - commentItem.setScore(commentItem.getScore()); - } - - @Override - public void onVoteThingFail(int position12) { - Toast.makeText(mContext, "Cannot unvote this comment", Toast.LENGTH_SHORT).show(); - ((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN); - ((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore())); - commentItem.setScore(commentItem.getScore()); - } - }, commentItem.getFullName(), RedditUtils.DIR_UNVOTE, viewHolder.getAdapterPosition()); - } - }); - } - - @Override - public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { - ((CommentMultiLevelRecyclerViewAdapter.CommentViewHolder) holder).expandButton.setVisibility(View.GONE); - ((CommentMultiLevelRecyclerViewAdapter.CommentViewHolder) holder).loadMoreCommentsProgressBar.setVisibility(View.GONE); - } - - @Override - public int getItemCount() { - if(hasExtraRow()) { - return super.getItemCount() + 1; - } - return super.getItemCount(); - } - - private boolean hasExtraRow() { - return networkState != null && networkState.getStatus() != NetworkState.Status.SUCCESS; - } - - void setNetworkState(NetworkState newNetworkState) { - NetworkState previousState = this.networkState; - boolean previousExtraRow = hasExtraRow(); - this.networkState = newNetworkState; - boolean newExtraRow = hasExtraRow(); - if (previousExtraRow != newExtraRow) { - if (previousExtraRow) { - notifyItemRemoved(super.getItemCount()); - } else { - notifyItemInserted(super.getItemCount()); - } - } else if (newExtraRow && !previousState.equals(newNetworkState)) { - notifyItemChanged(getItemCount() - 1); - } - } - - private void setExpandButton(ImageView expandButton, boolean isExpanded) { - // set the icon based on the current state - expandButton.setVisibility(View.VISIBLE); - expandButton.setImageResource(isExpanded ? R.drawable.ic_expand_less_black_20dp : R.drawable.ic_expand_more_black_20dp); - } - - class CommentViewHolder extends RecyclerView.ViewHolder { - @BindView(R.id.author_text_view_item_post_comment) TextView authorTextView; - @BindView(R.id.comment_time_text_view_item_post_comment) TextView commentTimeTextView; - @BindView(R.id.comment_markdown_view_item_post_comment) MarkwonView commentMarkdownView; - @BindView(R.id.plus_button_item_post_comment) ImageView upvoteButton; - @BindView(R.id.score_text_view_item_post_comment) TextView scoreTextView; - @BindView(R.id.minus_button_item_post_comment) ImageView downvoteButton; - @BindView(R.id.expand_button_item_post_comment) ImageView expandButton; - @BindView(R.id.load_more_comments_progress_bar) ProgressBar loadMoreCommentsProgressBar; - @BindView(R.id.reply_button_item_post_comment) ImageView replyButton; - @BindView(R.id.vertical_block_item_post_comment) View verticalBlock; - - CommentViewHolder(View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - } - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java index 56302115..fb449ac6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java @@ -69,7 +69,8 @@ public class ViewPostDetailActivity extends AppCompatActivity { private RequestManager glide; private int orientation; - private String orientationState = "OS"; + private static String ORIENTATION_STATE = "OS"; + private static final String POST_STATE = "PS"; private Post mPost; private int postListPosition = -1; @@ -136,9 +137,13 @@ public class ViewPostDetailActivity extends AppCompatActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); - orientation = getResources().getConfiguration().orientation; - - mPost = getIntent().getExtras().getParcelable(EXTRA_POST_DATA); + if(savedInstanceState == null) { + orientation = getResources().getConfiguration().orientation; + mPost = getIntent().getExtras().getParcelable(EXTRA_POST_DATA); + } else { + orientation = savedInstanceState.getInt(ORIENTATION_STATE); + mPost = savedInstanceState.getParcelable(POST_STATE); + } if(getIntent().hasExtra(EXTRA_POST_LIST_POSITION)) { postListPosition = getIntent().getExtras().getInt(EXTRA_POST_LIST_POSITION); @@ -576,7 +581,7 @@ public class ViewPostDetailActivity extends AppCompatActivity { @Subscribe public void onVoteEvent(VoteEventToDetailActivity event) { - if(mPost.getId() == event.postId) { + if(mPost.getId().equals(event.postId)) { mPost.setVoteType(event.voteType); mScoreTextView.setText(Integer.toString(mPost.getScore() + event.voteType)); } @@ -595,13 +600,8 @@ public class ViewPostDetailActivity extends AppCompatActivity { @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putInt(orientationState, orientation); - } - - @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) { - super.onRestoreInstanceState(savedInstanceState); - orientation = savedInstanceState.getInt(orientationState); + outState.putInt(ORIENTATION_STATE, orientation); + outState.putParcelable(POST_STATE, mPost); } @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java index 3531dfbd..e5f94cf3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java @@ -11,10 +11,15 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProviders; + import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; import com.bumptech.glide.request.RequestOptions; -import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.chip.Chip; import com.google.android.material.snackbar.Snackbar; @@ -28,11 +33,6 @@ import SubredditDatabase.SubredditRoomDatabase; import SubredditDatabase.SubredditViewModel; import SubscribedSubredditDatabase.SubscribedSubredditDao; import SubscribedSubredditDatabase.SubscribedSubredditRoomDatabase; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; import butterknife.BindView; import butterknife.ButterKnife; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; @@ -82,9 +82,6 @@ public class ViewSubredditDetailActivity extends AppCompatActivity { ((Infinity) getApplication()).getmNetworkComponent().inject(this); - final Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - //Get status bar height int statusBarHeight = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); @@ -92,40 +89,20 @@ public class ViewSubredditDetailActivity extends AppCompatActivity { statusBarHeight = getResources().getDimensionPixelSize(resourceId); } - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); - params.topMargin = statusBarHeight; - String subredditName = getIntent().getExtras().getString(EXTRA_SUBREDDIT_NAME_KEY); String title = "r/" + subredditName; subredditNameTextView.setText(title); + CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity); - AppBarLayout appBarLayout = findViewById(R.id.app_bar_layout_view_subreddit_detail_activity); + collapsingToolbarLayout.setTitleEnabled(false); - appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { - int previousVerticalOffset = 0; - int scrollRange = -1; + Toolbar toolbar = findViewById(R.id.toolbar); + toolbar.setTitle(title); + setSupportActionBar(toolbar); - @Override - public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { - if(scrollRange == -1) { - scrollRange = appBarLayout.getTotalScrollRange(); - } else { - if(verticalOffset < previousVerticalOffset) { - //Scroll down - if(scrollRange - Math.abs(verticalOffset) <= toolbar.getHeight()) { - collapsingToolbarLayout.setTitle(title); - } - } else { - //Scroll up - if(scrollRange - Math.abs(verticalOffset) > toolbar.getHeight()) { - collapsingToolbarLayout.setTitle(" ");//carefull there should a space between double quote otherwise it wont work - } - } - previousVerticalOffset = verticalOffset; - } - } - }); + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); + params.topMargin = statusBarHeight; subscribedSubredditDao = SubscribedSubredditRoomDatabase.getDatabase(this).subscribedSubredditDao(); glide = Glide.with(this); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java index 22ead232..00b9fe4b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java @@ -10,10 +10,15 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProviders; + import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; import com.bumptech.glide.request.RequestOptions; -import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.chip.Chip; import com.google.android.material.snackbar.Snackbar; @@ -27,11 +32,6 @@ import User.UserDao; import User.UserData; import User.UserRoomDatabase; import User.UserViewModel; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; import butterknife.BindView; import butterknife.ButterKnife; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; @@ -74,15 +74,11 @@ public class ViewUserDetailActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_user_detail); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); ButterKnife.bind(this); ((Infinity) getApplication()).getmNetworkComponent().inject(this); - setSupportActionBar(toolbar); - //Get status bar height int statusBarHeight = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); @@ -90,40 +86,19 @@ public class ViewUserDetailActivity extends AppCompatActivity { statusBarHeight = getResources().getDimensionPixelSize(resourceId); } - ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); - params.topMargin = statusBarHeight; - String userName = getIntent().getExtras().getString(EXTRA_USER_NAME_KEY); String title = "u/" + userName; userNameTextView.setText(title); CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_user_detail_activity); - AppBarLayout appBarLayout = findViewById(R.id.app_bar_layout_view_user_detail_activity); + collapsingToolbarLayout.setTitleEnabled(false); - appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { - int previousVerticalOffset = 0; - int scrollRange = -1; + Toolbar toolbar = findViewById(R.id.toolbar); + toolbar.setTitle(title); + setSupportActionBar(toolbar); - @Override - public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { - if(scrollRange == -1) { - scrollRange = appBarLayout.getTotalScrollRange(); - } else { - if(verticalOffset < previousVerticalOffset) { - //Scroll down - if(scrollRange - Math.abs(verticalOffset) <= toolbar.getHeight()) { - collapsingToolbarLayout.setTitle(title); - } - } else { - //Scroll up - if(scrollRange - Math.abs(verticalOffset) > toolbar.getHeight()) { - collapsingToolbarLayout.setTitle(" ");//carefull there should a space between double quote otherwise it wont work - } - } - previousVerticalOffset = verticalOffset; - } - } - }); + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); + params.topMargin = statusBarHeight; subscribedUserDao = SubscribedUserRoomDatabase.getDatabase(this).subscribedUserDao(); glide = Glide.with(this); -- cgit v1.2.3