Animate layout changes in item_post_compact.xml.

This commit is contained in:
Alex Ning 2020-09-26 10:10:51 +08:00
parent 428734bdde
commit b47422fd75
3 changed files with 49 additions and 6 deletions

View File

@ -16,6 +16,7 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
@ -782,9 +783,15 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
}
if (mCompactLayoutToolbarHiddenByDefault) {
((PostCompactBaseViewHolder) holder).bottomConstraintLayout.setVisibility(View.GONE);
mCallback.delayTransition();
ViewGroup.LayoutParams params = (LinearLayout.LayoutParams) ((PostCompactBaseViewHolder) holder).bottomConstraintLayout.getLayoutParams();
params.height = 0;
((PostCompactBaseViewHolder) holder).bottomConstraintLayout.setLayoutParams(params);
} else {
((PostCompactBaseViewHolder) holder).bottomConstraintLayout.setVisibility(View.VISIBLE);
ViewGroup.LayoutParams params = (LinearLayout.LayoutParams) ((PostCompactBaseViewHolder) holder).bottomConstraintLayout.getLayoutParams();
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
((PostCompactBaseViewHolder) holder).bottomConstraintLayout.setLayoutParams(params);
mCallback.delayTransition();
}
if (mShowDividerInCompactLayout) {
@ -1319,6 +1326,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
void typeChipClicked(int filter);
void currentlyBindItem(int position);
void delayTransition();
}
public class PostBaseViewHolder extends RecyclerView.ViewHolder {
@ -2819,10 +2828,16 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
itemView.setOnLongClickListener(view -> {
if (mLongPressToHideToolbarInCompactLayout) {
if (bottomConstraintLayout.getVisibility() == View.VISIBLE) {
bottomConstraintLayout.setVisibility(View.GONE);
if (bottomConstraintLayout.getLayoutParams().height == 0) {
ViewGroup.LayoutParams params = (LinearLayout.LayoutParams) bottomConstraintLayout.getLayoutParams();
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
bottomConstraintLayout.setLayoutParams(params);
mCallback.delayTransition();
} else {
bottomConstraintLayout.setVisibility(View.VISIBLE);
mCallback.delayTransition();
ViewGroup.LayoutParams params = (LinearLayout.LayoutParams) bottomConstraintLayout.getLayoutParams();
params.height = 0;
bottomConstraintLayout.setLayoutParams(params);
}
}
return true;

View File

@ -42,6 +42,8 @@ import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.transition.AutoTransition;
import androidx.transition.TransitionManager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
@ -441,6 +443,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
maxPosition = position;
}
}
@Override
public void delayTransition() {
TransitionManager.beginDelayedTransition(mPostRecyclerView, new AutoTransition());
}
});
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
@ -488,6 +495,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
maxPosition = position;
}
}
@Override
public void delayTransition() {
TransitionManager.beginDelayedTransition(mPostRecyclerView, new AutoTransition());
}
});
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
@ -537,6 +549,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
maxPosition = position;
}
}
@Override
public void delayTransition() {
TransitionManager.beginDelayedTransition(mPostRecyclerView, new AutoTransition());
}
});
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
@ -585,6 +602,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
maxPosition = position;
}
}
@Override
public void delayTransition() {
TransitionManager.beginDelayedTransition(mPostRecyclerView, new AutoTransition());
}
});
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
@ -624,6 +646,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
maxPosition = position;
}
}
@Override
public void delayTransition() {
TransitionManager.beginDelayedTransition(mPostRecyclerView, new AutoTransition());
}
});
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(mOauthRetrofit, accessToken,

View File

@ -3,7 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:orientation="vertical"
android:animateLayoutChanges="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"