Анимация общего элемента не сглаживается с помощью декорации элемента просмотра (OverlapDecoration) - PullRequest
0 голосов
/ 07 февраля 2020

Я использовал общий элемент с RecyclerView Item и Item Decoration (Перекрывающийся элемент в RecyclerView), когда мы нажимаем Item, он не сглаживается совместно используемым элементом.

Негладкая ссылка на видео: https://drive.google.com/file/d/17T3cYAeq8jFSilVA-mmT5ccUCbUyHTZs/view?usp=drivesdk

если я не использую Художественное оформление элемента (перекрывающийся элемент в RecyclerView), анимация общего элемента плавная

Плавное видео Ссылка: https://drive.google.com/file/d/17VIp4vp4SkazxeLvz0S9C0uQD4qZIxE_/view?usp=drivesdk

Список общих элементов кода активности

 ViewCompat.setTransitionName(card_view, getResources().getString(R.string.transition));
    ActivityOptionsCompat transition = ActivityOptionsCompat.makeSceneTransitionAnimation(this, card_view, getResources().getString(R.string.transition));
    Intent intent = new Intent(this, DetailActivity.class);
    intent.putExtra("data", item);
    ActivityCompat.startActivityForResult(MainActivity.this, intent, DETAIL_REQ, transition.toBundle());

Подробно Код активности

@Override
public void onBackPressed() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setExitTransition(null);
        finishAfterTransition();
    }else {
        supportFinishAfterTransition();
    }}

стиль приложения ниже

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item>
    <item name="android:windowAllowEnterTransitionOverlap" tools:targetApi="lollipop">false</item>
    <item name="android:windowAllowReturnTransitionOverlap" tools:targetApi="lollipop">false</item>

    <item name="android:windowSharedElementEnterTransition" tools:targetApi="lollipop">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition" tools:targetApi="lollipop">@android:transition/move</item>
</style>

Код украшения перекрытия

public class OverlapDecoration extends RecyclerView.ItemDecoration {

//Following code from : http://stackoverflow.com/questions/27633454/how-to-overlap-items-in-linearlayoutmanager-recyclerview-like-stacking-cards
private final int overlap;


public OverlapDecoration(int overlap) {
    this.overlap = overlap;
}


@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    super.getItemOffsets(outRect, view, parent, state);

    final int itemPosition = parent.getChildAdapterPosition(view);
    if (itemPosition == 0) {
        outRect.set(0, 0, 0, 0);
    } else {
        outRect.set(0, overlap, 0, 0);
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...