package org.witness.informacam.app.views; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; public class TwoViewSlideLayout extends ViewGroup { private float mSeparatorPosition = 0.8f; public TwoViewSlideLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public TwoViewSlideLayout(Context context, AttributeSet attrs) { super(context, attrs); } public TwoViewSlideLayout(Context context) { super(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ super.onMeasure(widthMeasureSpec, heightMeasureSpec); int separatorPosition = (int) (getMeasuredHeight() * mSeparatorPosition); int wspec = MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY); for(int i=0; i < getChildCount(); i++) { View v = getChildAt(i); if ( i == 0) v.measure(wspec, MeasureSpec.makeMeasureSpec( separatorPosition, MeasureSpec.EXACTLY)); else v.measure(wspec, MeasureSpec.makeMeasureSpec( getMeasuredHeight() - separatorPosition, MeasureSpec.EXACTLY)); } } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int separatorPosition = (int) (t + ((b - t) * mSeparatorPosition)); for (int i = 0; i < this.getChildCount(); i++) { View child = this.getChildAt(i); if (i == 0) { child.layout(0, 0, r - l, separatorPosition); } else { child.layout(0, separatorPosition, r - l, b - t); } } } public void collapse() { mSeparatorPosition = 0; this.requestLayout(); } public void expand() { mSeparatorPosition = 0.8f; this.requestLayout(); } public void fullscreen () { mSeparatorPosition = 1f; this.requestLayout(); } }