public class ViewsCoordinator<ID>
extends java.lang.Object
I.e. we need to have both 'to' and 'from' views which represent same item in
RecyclerView and ViewPager to start transition between them.
But when ViewPager is scrolled we may also need to scroll RecyclerView to reveal
corresponding item's view.
Method request(Object) should be called when particular item needs to be synced.
This method will trigger methods ViewsCoordinator.OnRequestViewListener.onRequestView(Object) of
listeners set by setFromListener and
setToListener methods.
When views were requested this class starts waiting for 'from' and 'to' views to be provided
with setFromView(Object, View) (or setFromPos(Object, ViewPosition)) and
setToView(Object, AnimatorView) methods. When both views are ready method
ViewsCoordinator.OnViewsReadyListener.onViewsReady(Object) will be triggered.
| Modifier and Type | Class and Description |
|---|---|
static interface |
ViewsCoordinator.OnRequestViewListener<ID> |
static interface |
ViewsCoordinator.OnViewsReadyListener<ID> |
| Constructor and Description |
|---|
ViewsCoordinator() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
cleanupRequest() |
ViewPosition |
getFromPos() |
android.view.View |
getFromView() |
ID |
getRequestedId() |
AnimatorView |
getToView() |
boolean |
isReady() |
protected void |
onFromViewChanged(android.view.View fromView,
ViewPosition fromPos) |
protected void |
onToViewChanged(AnimatorView old,
AnimatorView view) |
protected void |
onViewsReady(ID id)
Called when both 'from' and 'to' views are ready for given index.
|
void |
request(ID id) |
void |
setFromListener(ViewsCoordinator.OnRequestViewListener<ID> listener) |
void |
setFromNone(ID id)
Notifies that 'from' view is ready even if there is no such view.
|
void |
setFromPos(ID id,
ViewPosition fromPos) |
void |
setFromView(ID id,
android.view.View fromView) |
void |
setReadyListener(ViewsCoordinator.OnViewsReadyListener<ID> listener) |
void |
setToListener(ViewsCoordinator.OnRequestViewListener<ID> listener) |
void |
setToView(ID id,
AnimatorView toView) |
public void setFromListener(@NonNull
ViewsCoordinator.OnRequestViewListener<ID> listener)
public void setToListener(@NonNull
ViewsCoordinator.OnRequestViewListener<ID> listener)
public void setReadyListener(@Nullable
ViewsCoordinator.OnViewsReadyListener<ID> listener)
public void request(@NonNull
ID id)
public ID getRequestedId()
public android.view.View getFromView()
onViewsReady(Object) is called both this method and
getFromPos() may still return null, see setFromNone(Object).public ViewPosition getFromPos()
onViewsReady(Object) is called, both this method and
getFromView() may still return null, see setFromNone(Object).public AnimatorView getToView()
onViewsReady(Object) is called,
but before new request (request(Object)).public void setFromView(@NonNull
ID id,
@NonNull
android.view.View fromView)
public void setFromPos(@NonNull
ID id,
@NonNull
ViewPosition fromPos)
public void setFromNone(@NonNull
ID id)
id - Item ID for related 'to' viewprotected void onFromViewChanged(@Nullable
android.view.View fromView,
@Nullable
ViewPosition fromPos)
public void setToView(@NonNull
ID id,
@NonNull
AnimatorView toView)
protected void onToViewChanged(@Nullable
AnimatorView old,
@NonNull
AnimatorView view)
public boolean isReady()
protected void onViewsReady(@NonNull
ID id)
Note, that this method will be called each time 'from' or 'to' views are changed.
id - Item ID used for views lookupgetFromView(),
getFromPos(),
getToView()protected void cleanupRequest()