/**
* @file XFooterView.java
* @create Mar 31, 2012 9:33:43 PM
* @author Maxwin
* @description XListView's footer
*/
package com.wise.list;
import com.wise.wawc.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.widget.LinearLayout;
import android.widget.TextView;
public class XListViewFooter extends LinearLayout {
/**
* footer一般状态,显示“查看更多”
*/
public final static int STATE_NORMAL = 0;
/**
* footer准备状态,显示“松开加载更多”
*/
public final static int STATE_READY = 1;
/**
* footer加载状态,显示进度条
*/
public final static int STATE_LOADING = 2;
private Context mContext;
private View mContentView;
private View ll_xlistview_footer;
private View xlistview_footer_iv;
private TextView mHintView;
public XListViewFooter(Context context) {
super(context);
initView(context);
}
public XListViewFooter(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
/**
* 控件的3个状态
* @param state
*/
public void setState(int state) {
ll_xlistview_footer.setVisibility(View.INVISIBLE);
xlistview_footer_iv.clearAnimation();
if (state == STATE_READY) {
mHintView.setVisibility(View.VISIBLE);
} else if (state == STATE_LOADING) {
mHintView.setVisibility(View.INVISIBLE);
ll_xlistview_footer.setVisibility(View.VISIBLE);
Animation operatingAnim = AnimationUtils.loadAnimation(mContext, R.anim.tip_fast);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
if (operatingAnim != null) {
xlistview_footer_iv.startAnimation(operatingAnim);
}
} else {
mHintView.setVisibility(View.INVISIBLE);
}
}
public void setBottomMargin(int height) {
if (height < 0) return ;
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
lp.bottomMargin = height;
mContentView.setLayoutParams(lp);
}
public int getBottomMargin() {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
return lp.bottomMargin;
}
/**
* 一般状态
*/
public void normal() {
mHintView.setVisibility(View.INVISIBLE);
ll_xlistview_footer.setVisibility(View.GONE);
xlistview_footer_iv.clearAnimation();
}
/**
* 加载状态
*/
public void loading() {
mHintView.setVisibility(View.INVISIBLE);
ll_xlistview_footer.setVisibility(View.VISIBLE);
Animation operatingAnim = AnimationUtils.loadAnimation(mContext, R.anim.tip_fast);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
if (operatingAnim != null) {
xlistview_footer_iv.startAnimation(operatingAnim);
}
}
/**
* 隐藏底部
*/
public void hide() {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
lp.height = 0;
mContentView.setLayoutParams(lp);
}
/**
* 显示底部
*/
public void show() {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
lp.height = LayoutParams.WRAP_CONTENT;
mContentView.setLayoutParams(lp);
}
/**
* 初始化控件
* @param context
*/
private void initView(Context context) {
mContext = context;
LinearLayout moreView = (LinearLayout)LayoutInflater.from(mContext).inflate(R.layout.xlistview_footer, null);
addView(moreView);
moreView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
mContentView = moreView.findViewById(R.id.xlistview_footer_content);
xlistview_footer_iv = moreView.findViewById(R.id.xlistview_footer_iv);
ll_xlistview_footer = moreView.findViewById(R.id.ll_xlistview_footer);
mHintView = (TextView)moreView.findViewById(R.id.xlistview_footer_hint_textview);
}
}