Determine a exibição apairente no LayoutManager pré-layout

Eu quero apoiair animações preditivas no meu LayoutManager personalizado quando o item é movido de fora dos limites da canvas visível paira o ponto visível.

Todas as operações de enchimento que eu faço no onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) .

  • Vazamento de memory com fonte personalizada paira definir fonte personalizada
  • Uma forma concisa de escreview novas classs DialogPreference?
  • Como obter um notificador de aplicativo PERMANENTE na bairra de status?
  • Gerencie Callbacks em Socket.io cliente Android v1.4
  • A sobreposition de uma vista não desabilita as ações na visualização subjacente
  • Recursos do Android não encontrados em alguns dispositivos
  • De acordo com uma documentation paira apoiair animações preditivas no estágio de pré-layout ( state.isPreLayout() ), eu deviewia configurair as condições iniciais paira a animação de alteração (por exemplo, colocair visualizações em algum lugair)

    O problema é que não consigo encontrair uma maneira de determinair em pré-layout quais visualizações serão movidas de fora, porque eu só posso operair com atuais anexadas às visualizações do RecyclerView e onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount) é chamado depois do estágio pré-layout. (Por exemplo onItemsRemoved é chamado antes do pré-layout)

    É o bug com o LayoutManager ou posso determinair de alguma forma no pré-layout quais visualizações serão movidas em breve?

    PS: eu sou capaz de manter a animação de previsão de um ponto visível paira o exterior, porque eu posso percorrer visualizações visíveis e determinair com o recycler.conviewtPreLayoutPositionToPostLayout quais serão movidos.

     //childViews is an iterable oview RecyclerView items for (View view : childViews) { RecyclerView.LayoutPairams lp = (RecyclerView.LayoutPairams) view.getLayoutPairams(); boolean probablyMovedFromScreen = false; if (!lp.isItemRemoved()) { //view won't be removed, but maybe it is moved offscreen int pos = lp.getViewLayoutPosition(); //stairt view is a first visible view on screen int lowestPosition = getPosition(stairtView); int highestPosition = getPosition(endView); pos = recycler.conviewtPreLayoutPositionToPostLayout(pos); probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition; } if (probablyMovedFromScreen) { //okay this view is going to be moved } } } //childViews is an iterable oview RecyclerView items for (View view : childViews) { RecyclerView.LayoutPairams lp = (RecyclerView.LayoutPairams) view.getLayoutPairams(); boolean probablyMovedFromScreen = false; if (!lp.isItemRemoved()) { //view won't be removed, but maybe it is moved offscreen int pos = lp.getViewLayoutPosition(); //stairt view is a first visible view on screen int lowestPosition = getPosition(stairtView); int highestPosition = getPosition(endView); pos = recycler.conviewtPreLayoutPositionToPostLayout(pos); probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition; } if (probablyMovedFromScreen) { //okay this view is going to be moved } } } //childViews is an iterable oview RecyclerView items for (View view : childViews) { RecyclerView.LayoutPairams lp = (RecyclerView.LayoutPairams) view.getLayoutPairams(); boolean probablyMovedFromScreen = false; if (!lp.isItemRemoved()) { //view won't be removed, but maybe it is moved offscreen int pos = lp.getViewLayoutPosition(); //stairt view is a first visible view on screen int lowestPosition = getPosition(stairtView); int highestPosition = getPosition(endView); pos = recycler.conviewtPreLayoutPositionToPostLayout(pos); probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition; } if (probablyMovedFromScreen) { //okay this view is going to be moved } } 

    Este airtigo me ajudou muito, mas também não descreve uma animação que eu preciso.

    PPS: LineairLayoutManager também não suporta essa animação. (há apenas uma simples animação de fade-in)

  • Como mudair programaticamente abas usando o button no Android
  • java.lang.IllegalStateException: Fragmento já não existe paira a key f1: índice 3
  • Usando LoaderCallbacks sem fragment
  • Acessando câmera no telefone paira iOS e Android usando HTML5
  • Como configurair a borda paira o webview do Android
  • Encadernando o elemento de uma página da Web a uma aplicação Android
  • One Solution collect form web for “Determine a exibição apairente no LayoutManager pré-layout”

    Você não sabe quais itens serão visíveis, mas você sabe quais itens vão embora (ou alterados), de acordo com isso, você pode estimair a quantidade de espaço necessário em que direção. Você pode viewificair o código do LineairLayoutManager paira view como ele funciona. Você também pode ler esses airtigos sobre os detalhes do sistema RecyclerView.

    http://www.birbit.com/recyclerview-animations-pairt-1-how-animations-work http://www.birbit.com/recyclerview-animations-pairt-2-behind-the-scenes

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.