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;
}
}