package com.partynetwork.myview.myprogresstip; import com.partynetwork.iparty.R; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; /** * 逻辑控制框架——统一控制处理执行类 * * @author youhei * @version moli 1.2.0 12/23/2010 * */ public class ProgressTip { /** 加载显示条最大高度 */ private final static int PROGRESS_HIGHT = 50; /** 上下文对象 */ private Context mContext; /** 加载进度外层Layout对象 */ private LinearLayout mProgressTipLayout; /** 动画对象:进度加载Progress控件显示动画 */ private Animation mAnimTipVisible; /** 动画对象:进度加载Progress控件隐藏动画 */ private Animation mAnimTipInvisible; public ProgressTip(Context context) { this.mContext = context; } /** * 设置加载进度背景图片 * * @param paramDrawable * 背景图片 */ public void setProgressBackgrandDrawable(Drawable paramDrawable) { if (null != mProgressTipLayout && null != paramDrawable) { mProgressTipLayout.setBackgroundDrawable(paramDrawable); } } /** * 设置加载进度背景颜色 * * @param paramColor * 背景颜色 */ public void setProgressBackgrandColor(int paramColor) { if (null != mProgressTipLayout) { mProgressTipLayout.setBackgroundColor(paramColor); } } /** * 设置加载进度背景颜色 * * @param paramResid * 背景图片资源ID */ public void setProgressBackgrandResource(int paramResid) { if (null != mProgressTipLayout) { mProgressTipLayout.setBackgroundResource(paramResid); } } /** * 显示加载提示 * */ public final void showProgress() { if (null != mProgressTipLayout && null != mAnimTipVisible) { mProgressTipLayout.setVisibility(View.VISIBLE); // 播放显示动画 mProgressTipLayout.startAnimation(mAnimTipVisible); } } /** * 隐藏加载提示 * */ public final void cancelProgress() { if (null != mProgressTipLayout && null != mAnimTipInvisible) { // 播放隐藏动画 mProgressTipLayout.startAnimation(mAnimTipInvisible); } } /** * 设置进度加载提示 * <p> * 需要将进度加载的Tip内容插入到的RelativeLayout对象参数, * 需要使用该进度加载提示功能的Activity,必须以一个RelativeLayout类型进行全体布局。 * * @param paramContext * 上下文对象 * @param paramResId * 表示内容的Layout资源ID * @return true 设置成功<br /> * false 设置失败 */ public final boolean setProgressTip(RelativeLayout viewGroup) { // 初次表示,插入控件 try { if (null != viewGroup) { // 插入进度加载Progress控件并设置不可见属性 viewGroup.addView(createTipContent()); mProgressTipLayout.setVisibility(View.INVISIBLE); // 加载动画 mAnimTipVisible = AnimationUtils.loadAnimation(mContext, R.anim.anim_progress_visible); mAnimTipInvisible = AnimationUtils.loadAnimation(mContext, R.anim.anim_progress_invisible); // 设置动画监听事件 mAnimTipInvisible.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation arg0) { mProgressTipLayout.setVisibility(View.INVISIBLE); } public void onAnimationRepeat(Animation arg0) { } public void onAnimationStart(Animation arg0) { } }); } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * 根据类别设置提示信息Layout * * @return 进度加载Progress控件实例 */ protected RelativeLayout createTipContent() { // 创建并设置进度条控件 ProgressBar progressBar = new ProgressBar(mContext); progressBar.setLayoutParams(new ViewGroup.LayoutParams(PROGRESS_HIGHT, PROGRESS_HIGHT)); progressBar.setPadding(10, 10, 10, 10); // 创建并设置进度提示文言 TextView tipText = new TextView(mContext); tipText.setLayoutParams(new ViewGroup.LayoutParams( LayoutParams.WRAP_CONTENT, PROGRESS_HIGHT)); tipText.setPadding(10, 0, 0, 0); tipText.setSingleLine(); tipText.setGravity(Gravity.CENTER); tipText.setText("数据正在处理中,请稍候..."); tipText.setTextColor(Color.WHITE); tipText.setTextSize(15); // 创建并设置加载表示Layout mProgressTipLayout = new LinearLayout(mContext); mProgressTipLayout.setLayoutParams(new ViewGroup.LayoutParams( LayoutParams.FILL_PARENT, PROGRESS_HIGHT)); mProgressTipLayout.setOrientation(LinearLayout.HORIZONTAL); mProgressTipLayout.setGravity(Gravity.CENTER); mProgressTipLayout.setPadding(10, 0, 10, 0); mProgressTipLayout.setHorizontalGravity(Gravity.CENTER); mProgressTipLayout.setVerticalGravity(Gravity.BOTTOM); // 设置进度加载Progress控件背景颜色 mProgressTipLayout.setBackgroundResource(R.drawable.flip_menu_gradient_bg); mProgressTipLayout.addView(progressBar, 0); mProgressTipLayout.addView(tipText, 1); // 创建并设置最外层Layout相关属性 RelativeLayout relaLayout = new RelativeLayout(mContext); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); params.setMargins(0, 0, 0, mContext.getResources() .getDimensionPixelSize(R.dimen.menu_head_height)); relaLayout.setLayoutParams(params); relaLayout.setPadding(0, 0, 0, 0); relaLayout.setGravity(Gravity.BOTTOM); relaLayout.setBackgroundColor(0x00ffffff);// 白色完全透明 relaLayout.addView(mProgressTipLayout, 0); return relaLayout; } }