package com.videogo.widget.pulltorefresh; import android.annotation.SuppressLint; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.videogo.widget.pulltorefresh.PullToRefreshBase.Orientation; @SuppressLint("ViewConstructor") public abstract class LoadingLayout extends FrameLayout { protected final boolean mHeaderOrFooter; protected final Orientation mScrollDirection; private View mContentView; private Runnable mPostRenderRunnable; public LoadingLayout(Context context, final boolean headerOrFooter, final Orientation scrollDirection) { super(context); mHeaderOrFooter = headerOrFooter; mScrollDirection = scrollDirection; } protected void setContentView(int layoutResID) { mContentView = LayoutInflater.from(getContext()).inflate(layoutResID, this, false); LayoutParams lp = (LayoutParams) mContentView.getLayoutParams(); if (mHeaderOrFooter) lp.gravity = mScrollDirection == Orientation.VERTICAL ? Gravity.BOTTOM : Gravity.RIGHT; else lp.gravity = mScrollDirection == Orientation.VERTICAL ? Gravity.TOP : Gravity.LEFT; addView(mContentView, lp); } public final void setHeight(int height) { ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) getLayoutParams(); lp.height = height; requestLayout(); } public final void setWidth(int width) { ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) getLayoutParams(); lp.width = width; requestLayout(); } public int getContentSize(Orientation orientation) { switch (orientation) { case HORIZONTAL: return mContentView.getWidth(); case VERTICAL: default: return mContentView.getHeight(); } } public abstract void pullToRefresh(); public abstract void refreshing(); public abstract void releaseToRefresh(); public abstract void onPull(float scaleOfLayout); public abstract void reset(); public abstract void disableRefresh(); public final void showInvisibleViews() { if (View.INVISIBLE == mContentView.getVisibility()) { mContentView.setVisibility(View.VISIBLE); } } public final void hideAllViews() { if (View.VISIBLE == mContentView.getVisibility()) { mContentView.setVisibility(View.INVISIBLE); } } public void postRenderRunnable(Runnable r) { mPostRenderRunnable = r; } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); boolean result = mScrollDirection == Orientation.VERTICAL ? (bottom - top) > 0 : (right - left) > 0; if (result && mPostRenderRunnable != null) { mPostRenderRunnable.run(); mPostRenderRunnable = null; } } }