package com.ab.fragment; import android.app.Fragment; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.ab.util.AbAnimationUtil; import com.ab.util.AbViewUtil; /** * © 2012 amsoft.cn * 名称:AbLoadDialogFragment.java * 描述:弹出加载框 * * @author 还如一梦中 * @version v1.0 * @date:2014-07-30 下午16:00:52 */ public class AbFragment extends Fragment { private int mLoadDrawable; private int mRefreshDrawable; public String mLoadMessage = "正在查询,请稍候"; public String mRefreshMessage = "请求出错,请重试"; private int mTextSize = 15; private int mTextColor = Color.WHITE; private RelativeLayout rootView = null; private View mContentView; private LinearLayout mLoadView = null; private LinearLayout mRefreshView = null; private TextView mLoadTextView = null; private ImageView mLoadImageView = null; private TextView mRefreshTextView = null; private ImageView mRefreshImageView = null; private View mIndeterminateView = null; private AbFragmentOnLoadListener mAbFragmentOnLoadListener = null; /** * 创建 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = new RelativeLayout(this.getActivity()); mContentView = onCreateContentView(inflater,container,savedInstanceState); //设置默认资源 setResource(); //先显示load showLoadView(); return rootView; } /** * 显示View的方法(需要实现) * @return */ public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return null; } /** * 设置用到的资源(需要实现) */ public void setResource() { } /** * 初始化加载View */ public void initLoadView() { mLoadView = new LinearLayout(this.getActivity()); mLoadView.setGravity(Gravity.CENTER); mLoadView.setOrientation(LinearLayout.VERTICAL); mLoadView.setPadding(20, 20, 20, 20); mLoadView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); mLoadImageView = new ImageView(this.getActivity()); mLoadImageView.setImageResource(mLoadDrawable); mLoadImageView.setScaleType(ScaleType.MATRIX); mLoadTextView = new TextView(this.getActivity()); mLoadTextView.setText(mLoadMessage); mLoadTextView.setTextColor(mTextColor); mLoadTextView.setTextSize(mTextSize); mLoadTextView.setPadding(5, 5, 5, 5); mLoadView.addView(mLoadImageView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mLoadView.addView(mLoadTextView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mLoadImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 执行刷新 load(v); } }); } /** * 初始化刷新View */ public void initRefreshView() { mRefreshView = new LinearLayout(this.getActivity()); mRefreshView.setGravity(Gravity.CENTER); mRefreshView.setOrientation(LinearLayout.VERTICAL); mRefreshView.setPadding(20, 20, 20, 20); mRefreshView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); mRefreshImageView = new ImageView(this.getActivity()); mRefreshImageView.setImageResource(mRefreshDrawable); mRefreshImageView.setScaleType(ScaleType.MATRIX); mRefreshTextView = new TextView(this.getActivity()); mRefreshTextView.setText(mRefreshMessage); mRefreshTextView.setTextColor(mTextColor); mRefreshTextView.setTextSize(mTextSize); mRefreshTextView.setPadding(5, 5, 5, 5); mRefreshView.addView(mRefreshImageView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mRefreshView.addView(mRefreshTextView, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mRefreshImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 执行刷新 load(v); } }); } /** * 显示加载View */ public void showLoadView() { if(rootView.getChildCount() > 0){ if(mLoadView == rootView.getChildAt(0)){ return; } } rootView.removeAllViews(); if(mLoadView == null){ initLoadView(); } AbViewUtil.removeSelfFromParent(mLoadView); rootView.addView(mLoadView); // 执行加载 load(mLoadImageView); } /** * 显示刷新View */ public void showRefreshView() { if(rootView.getChildCount() > 0){ if(mRefreshView == rootView.getChildAt(0)){ loadStop(mRefreshImageView); return; } } rootView.removeAllViews(); if(mRefreshView == null){ initRefreshView(); } AbViewUtil.removeSelfFromParent(mRefreshView); rootView.addView(mRefreshView); } /** * 显示内容View */ public void showContentView() { if(rootView.getChildCount() > 0){ if(mContentView == rootView.getChildAt(0)){ return; } } rootView.removeAllViews(); AbViewUtil.removeSelfFromParent(mContentView); rootView.addView(mContentView,new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } /** * 显示内容View */ public void showContentView(View view) { rootView.removeAllViews(); AbViewUtil.removeSelfFromParent(mContentView); mContentView = view; rootView.addView(mContentView,new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } /** * 加载完成调用 */ public void loadFinish(){ //停止动画 loadStop(mIndeterminateView); } /** * 加载结束 */ public void loadStop(final View view){ if(view == null){ return; } //停止动画 view.postDelayed(new Runnable(){ @Override public void run() { view.clearAnimation(); } }, 200); } /** * 加载调用 */ public void load(View v){ if(mAbFragmentOnLoadListener!=null){ mAbFragmentOnLoadListener.onLoad(); } mIndeterminateView = v; AbAnimationUtil.playRotateAnimation(mIndeterminateView, 300, Animation.INFINITE, Animation.RESTART); } /** * 获取内容View * @return */ public View getContentView() { return mContentView; } /** * 获取加载View文字的尺寸 * @return */ public int getTextSize() { return mTextSize; } /** * 设置加载View文字的尺寸 * @return */ public void setTextSize(int textSize) { this.mTextSize = textSize; } public int getTextColor() { return mTextColor; } public void setTextColor(int textColor) { this.mTextColor = textColor; } public void setLoadMessage(String message) { this.mLoadMessage = message; if(mLoadTextView!=null){ mLoadTextView.setText(mLoadMessage); } } public void setRefreshMessage(String message) { this.mRefreshMessage = message; if(mRefreshTextView!=null){ mRefreshTextView.setText(mRefreshMessage); } } public int getLoadDrawable() { return mLoadDrawable; } public void setLoadDrawable(int resid) { this.mLoadDrawable = resid; if(mLoadImageView != null){ mLoadImageView.setBackgroundResource(resid); } } public int getRefreshDrawable() { return mRefreshDrawable; } public void setRefreshDrawable(int resid) { this.mRefreshDrawable = resid; if(mRefreshImageView != null){ mRefreshImageView.setBackgroundResource(resid); } } public void setBackgroundColor(int backgroundColor) { rootView.setBackgroundColor(backgroundColor); } public AbFragmentOnLoadListener getAbFragmentOnLoadListener() { return mAbFragmentOnLoadListener; } public void setAbFragmentOnLoadListener( AbFragmentOnLoadListener abFragmentOnLoadListener) { this.mAbFragmentOnLoadListener = abFragmentOnLoadListener; } /** * 加载事件的接口. */ public interface AbFragmentOnLoadListener { /** * 加载 */ public void onLoad(); } }