package me.next.slidebottompanel; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.FrameLayout; /** * Created by NeXT on 15/8/3. */ public class DarkFrameLayout extends FrameLayout { public static final int MAX_ALPHA = 0X9f; private int alpha = 0x00; private Paint mFadePaint; private SlideBottomPanel slideBottomPanel; public DarkFrameLayout(Context context) { this(context, null); } public DarkFrameLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public DarkFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mFadePaint = new Paint(); } @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); drawFade(canvas); } private void drawFade(Canvas canvas) { mFadePaint.setColor(Color.argb(alpha, 0, 0, 0)); canvas.drawRect(0, 0, getMeasuredWidth(), getHeight(), mFadePaint); } public void fade(boolean fade) { alpha = fade ? 0x8f : 0x00; invalidate(); } public void fade(int alpha) { this.alpha = alpha; invalidate(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return slideBottomPanel.isPanelShowing(); } public int getCurrentAlpha() { return alpha; } public void setSlideBottomPanel(SlideBottomPanel slideBottomPanel) { this.slideBottomPanel = slideBottomPanel; } }