void moveLastCardToTop() { //replace views CardDraggableView lastCard = draggableViews.removeLast(); draggableViews.addFirst(lastCard); //reorganize views Z order removeAllViews(); int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = numberOfCards - 1; i >= 0; i--) { addView(draggableViews.get(i)); } checkScrollFinished(); }
void moveFirstCardToStack() { //replace views CardDraggableView firstCard = draggableViews.removeFirst(); draggableViews.addLast(firstCard); //reorganize views Z order removeAllViews(); int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = numberOfCards - 1; i >= 0; i--) { addView(draggableViews.get(i)); } adapterPosition++; updateAdapter(); dispatchAdapterPositionToListeners(); checkScrollFinished(); }
protected void onViewInflated() { int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = numberOfCards - 1; i >= 0; i--) { CardDraggableView draggableView = generateDraggableView(); draggableView.setDraggable(false); updateDraggableView(draggableView); draggableViews.addFirst(draggableView); addView(draggableView); } notifyDataSetChanged(); }
@Test public void testOnViewInflated() throws Exception { //Given given(shuffleSettings.getNumberOfDisplayedCards()).willReturn(3); //When shuffle.onViewInflated(); //Then assertThat(shuffle.draggableViews).hasSize(3); verify(shuffle, times(3)).updateDraggableView(any(CardDraggableView.class)); verify(shuffle, times(3)).addView(any(View.class)); verify(shuffle, times(1)).updateAdapter(); verify(shuffle, times(1)).setFirstCardDraggable(); }
@Test public void testMoveFirstCardToStack() throws Exception { //Give final List<View> viewsList = new ArrayList<>(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { viewsList.add((View) invocation.getArguments()[0]); return null; } }).when(shuffle).addView(any(View.class)); shuffle.adapterPosition = 4; given(shuffleSettings.getNumberOfDisplayedCards()).willReturn(3); CardDraggableView draggableView1 = mockDraggableView(); CardDraggableView draggableView2 = mockDraggableView(); CardDraggableView draggableView3 = mockDraggableView(); shuffle.draggableViews.addAll(Arrays.asList(draggableView1, draggableView2, draggableView3)); //When shuffle.moveFirstCardToStack(); //Then assertThat(shuffle.draggableViews.get(0)).isEqualTo(draggableView2); assertThat(shuffle.draggableViews.get(1)).isEqualTo(draggableView3); assertThat(shuffle.draggableViews.get(2)).isEqualTo(draggableView1); verify(shuffle).removeAllViews(); assertThat(viewsList.get(0)).isEqualTo(draggableView1); assertThat(viewsList.get(1)).isEqualTo(draggableView3); assertThat(viewsList.get(2)).isEqualTo(draggableView2); assertThat(shuffle.adapterPosition).isEqualTo(5); }
int itemCount = shuffleAdapter.getItemCount(); if (itemCount != 0) { int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = 0; i < numberOfCards; i++) { int position = adapterPosition + i;
@Test public void testUpdateAdapter_firstTime() throws Exception { //Given given(shuffleSettings.getNumberOfDisplayedCards()).willReturn(3); shuffle.adapterPosition = 0; CardDraggableView draggableView1 = mockDraggableView(); CardDraggableView draggableView2 = mockDraggableView(); CardDraggableView draggableView3 = mockDraggableView(); shuffle.draggableViews.addAll(Arrays.asList(draggableView1, draggableView2, draggableView3)); Shuffle.Adapter shuffleAdapter = mock(Shuffle.Adapter.class); Shuffle.ViewHolder mockHolder = mock(Shuffle.ViewHolder.class); { given(shuffleAdapter.getItemCount()).willReturn(10); given(shuffleAdapter.getItemViewType(anyInt())).willReturn(1); mockHolder.itemView = mock(View.class); given(shuffleAdapter.onCreateViewHolder(any(ViewGroup.class), anyInt())).willReturn(mockHolder); } //When shuffle.setShuffleAdapter(shuffleAdapter); //Then verify(shuffleAdapter).onCreateViewHolder(eq(draggableView1), anyInt()); verify(shuffleAdapter).onCreateViewHolder(eq(draggableView2), anyInt()); verify(shuffleAdapter).onCreateViewHolder(eq(draggableView3), anyInt()); verify(draggableView1.getContent()).removeAllViews(); verify(draggableView1.getContent()).addView(eq(mockHolder.itemView)); assertThat(mockHolder.position).isEqualTo(2); verify(shuffleAdapter).onBindViewHolder(eq(mockHolder), eq(0)); verify(shuffleAdapter).onBindViewHolder(eq(mockHolder), eq(1)); }
public void updateViewsPositions(float percentX, float percentY) { if (shuffle != null) { final ShuffleSettings shuffleSettings = shuffle.getShuffleSettings(); float percent = shuffleSettings.isVertical() ? percentY : percentX; int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = 1; i < numberOfCards; ++i) { DraggableView view = shuffle.getDraggableView(i); float myScale = shuffleSettings.getScaleForPosition(i); float nextScale = shuffleSettings.getScaleForPosition(i - 1); float percentAbs = myScale + (nextScale - myScale) * Math.abs(percent); ViewCompat.setScaleX(view, percentAbs); ViewCompat.setScaleY(view, percentAbs); float myTranslationY = shuffleSettings.getTranslationYForPosition(i); if (shuffleSettings.isStackFromTop()) { myTranslationY *= -1; } float nextTranslationY = shuffleSettings.getTranslationYForPosition(i - 1); if (shuffleSettings.isStackFromTop()) { nextTranslationY *= -1; } float translationY = myTranslationY - Math.abs(percent) * (myTranslationY - nextTranslationY); ViewCompat.setTranslationY(view, translationY); float myTranslationX = shuffleSettings.getTranslationXForPosition(i); float nextTranslationX = shuffleSettings.getTranslationXForPosition(i - 1); float translationX = myTranslationX - Math.abs(percent) * (myTranslationX - nextTranslationX); ViewCompat.setTranslationX(view, translationX); } } }
int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); int position = numberOfCards - 1; float scale = shuffleSettings.getScaleForPosition(position);
final ShuffleSettings shuffleSettings = shuffle.getShuffleSettings(); final int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); final int position = numberOfCards - 1;