To me it looks like an Activity transition where the translateZ
value is modified. But since the Telegram Android client is open source, we can just take a look at it.
It looks like the Telegram devs use a lot of custom code instead of relying on the android SDK.
The DialogsActivity
which extends a BaseFragment
but is neither an Android Activity
nor an Android Fragment
since BaseFragment
doesn't extend any of them, has the following method for the transition:
private void setSlideTransitionProgress(float progress) {
if (SharedConfig.getDevicePerformanceClass() == SharedConfig.PERFORMANCE_CLASS_LOW) {
return;
}
slideFragmentProgress = progress;
if (fragmentView != null) {
fragmentView.invalidate();
}
if (filterTabsView != null) {
float s = 1f - 0.05f * (1f - slideFragmentProgress);
filterTabsView.getListView().setScaleX(s);
filterTabsView.getListView().setScaleY(s);
filterTabsView.getListView().setTranslationX((isDrawerTransition ? AndroidUtilities.dp(4) : -AndroidUtilities.dp(4)) * (1f - slideFragmentProgress));
filterTabsView.getListView().setPivotX(isDrawerTransition ? filterTabsView.getMeasuredWidth() : 0);
filterTabsView.getListView().setPivotY(0);
filterTabsView.invalidate();
}
}