content: //package com.wanjian.sak.layer.adapter;
  //
  //import android.content.Context;
  //import android.graphics.Canvas;
  //import android.graphics.Region;
  //import android.view.View;
  //import android.view.ViewGroup;
  //
  //import com.wanjian.sak.layer.AbsLayer;
  //
  //
  ///**
  // * Created by wanjian on 2016/10/23.
  // */
  //
  //public abstract class LayerAdapter extends AbsLayer {
  //    private int mStartLayer;
  //    private int mEndLayer;
  //    private boolean isClip;
  //
  //    public LayerAdapter(Context context) {
  //        super(context);
  //    }
  //
  //    @Override
  //    protected void onUiUpdate(Canvas canvas, View rootView) {
  //        mStartLayer = getStartRange();
  //        mEndLayer = getEndRange();
  //        isClip = isClipDraw();
  //        layerCount(canvas, rootView, 0);
  //    }
  //
  //
  //    private void layerCount(Canvas canvas, View view, int curLayer) {
  //        if (!getViewFilter().filter(view)) {
  //            return;
  //        }
  //        if (curLayer > mEndLayer) {
  //            return;
  //        }
  //        canvas.save();
  //        if (curLayer >= mStartLayer) {
  //            drawLayer(canvas, view, curLayer);
  //        }
  //        if (!(view instanceof ViewGroup)) {
  //            canvas.restore();
  //            return;
  //        }
  //
  //        clipIfNeeded(canvas, view, curLayer);
  //
  //        ViewGroup vg = ((ViewGroup) view);
  //        for (int i = 0, len = vg.getChildCount(); i < len; i++) {
  //            View child = vg.getChildAt(i);
  //            layerCount(canvas, child, curLayer + 1);
  //        }
  //
  //        canvas.restore();
  //    }
  //
  //    private void clipIfNeeded(Canvas canvas, View view, int curLayer) {
  //        if (!isClip) {
  //            return;
  //        }
  //
  //        int w = view.getWidth();
  //        int h = view.getHeight();
  //        canvas.clipRect(0
  //                , 0
  //                , w
  //                , h
  //                , Region.Op.INTERSECT);
  //    }
  //
  //
  //    private void drawLayer(Canvas canvas, View view, int curLayer) {
  //        int pl = 0;
  //        int pt = 0;
  //        if (curLayer == 1) {
  //            View decorView = (View) view.getParent();
  //            pl = decorView.getPaddingLeft();
  //            pt = decorView.getPaddingTop();
  //        }//view.getLocationInWindow();
  //        canvas.translate(view.getX() - pl - view.getScrollX(), view.getY() - pt - view.getScrollY());
  //        int count = canvas.save();
  //        onDrawLayer(canvas, view);
  //        canvas.restoreToCount(count);
  //    }
  //
  //    protected abstract void onDrawLayer(Canvas canvas, View view);
  //}
  