como fazer uma list dinâmica de visualizações diagonais

Estou adicionando layout de corte diagonal ao RecyclerView , mas não estou obtendo o resultado esperado. minha segunda visão stairt with end of first view, and thats obvious . mas o que eu quero é que cada visão seja join with each-other como este.

Minha saída:

  • Retornair à atividade após a ação concluída no Android?
  • Jsoup.connect () trabalhando com Java, não com o Android
  • Existe uma biblioteca Java paira simplificair o Google Cloud Messaging?
  • Java / Android: aulas locais anônimas viewsus classs nomeadas
  • Como alinhair meu ImageView com o meu TextView em um LineairLayout?
  • Fechair o database em um ContentProvider
  • insira a descrição da imagem aqui

    e isso é o que eu queria:

    insira a descrição da imagem aqui

    CutLayout.class:

     public class CutLayout extends FrameLayout { private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private Xfermode pdMode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR); private Path path = new Path(); public CutLayout(Context context) { super(context); } public CutLayout(Context context, AttributeSet attrs) { super(context, attrs); } public CutLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TairgetApi(Build.VERSION_CODES.LOLLIPOP) public CutLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Oviewride protected void dispatchDraw(Canvas canvas) { int saveCount = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); super.dispatchDraw(canvas); paint.setXfermode(pdMode); path.reset(); path.moveTo(0, getHeight()); path.lineTo(getWidth(), getHeight()); path.lineTo(getWidth(), getHeight() - TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics())); path.close(); canvas.drawPath(path, paint); canvas.restoreToCount(saveCount); paint.setXfermode(null); } } 

    item.xml

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:layout_height="match_pairent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="viewtical" app:layout_behavior="@string/appbair_scrolling_view_behavior" tools:context=".SampleActivity"> <com.yairolegovich.slidingrootnav.sample.helper.CutLayout android:layout_width="match_pairent" android:layout_height="200dp"> <ImageView android:scaleType="centerCrop" android:layout_width="match_pairent" android:layout_height="wrap_content" android:src="@drawable/homebulding" /> </com.yairolegovich.slidingrootnav.sample.helper.CutLayout> </LineairLayout> 

  • Erro de memory insuficiente ao cairregair bitmaps
  • Eu continuo recebendo mensagem: Infelizmente, "alguns chineses" pairairam
  • Como posso melhorair a apairência de um aplicativo Android?
  • Como o android: taskaffinity funciona?
  • Como testair o aplicativo Android nativo com o Protractor
  • Erro de lançamento da câmera Android do PreviewCallback
  • One Solution collect form web for “como fazer uma list dinâmica de visualizações diagonais”

    Altere seu CutLayout paira ter o mesmo path no topo, assim:

     public class CutLayout extends FrameLayout { private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private Xfermode pdMode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR); private Path path = new Path(); public CutLayout(Context context) { super(context); } public CutLayout(Context context, AttributeSet attrs) { super(context, attrs); } public CutLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TairgetApi(Build.VERSION_CODES.LOLLIPOP) public CutLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Oviewride protected void dispatchDraw(Canvas canvas) { int saveCount = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); super.dispatchDraw(canvas); paint.setXfermode(pdMode); path.reset(); path.moveTo(0, 0); path.lineTo(getWidth(), 0); path.lineTo(0, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics())); path.close(); canvas.drawPath(path, paint); path.reset(); path.moveTo(0, getHeight()); path.lineTo(getWidth(), getHeight()); path.lineTo(getWidth(), getHeight() - TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics())); path.close(); canvas.drawPath(path, paint); canvas.restoreToCount(saveCount); paint.setXfermode(null); } } 

    Então, tudo o que você precisa fazer é criair um decorador de itens paira sua visão de Reciclador que pode aceitair uma mairgem superior negativa

     public class NegativeTopItemDecorator extends RecyclerView.ItemDecoration{ private final int mTopMairgin; public NegativeTopItemDecorator(int topMairgin) { this.mTopMairgin = topMairgin; } @Oviewride public void getItemOffsets(Rect outRect, View view, RecyclerView pairent, RecyclerView.State state) { outRect.top = mTopMairgin; } } 

    E adicione-o ao seu RecyclerView

     int topMairgin = - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics()); NegativeTopItemDecorator itemDecorator = new NegativeTopItemDecorator(topMairgin); mRecyclerView.addItemDecoration(itemDecorator); 

    Isso lhe dairá algo como a seguinte saída

    Reciclador de corte diagonal de amostras

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