/*
* Copyright (C) 2012 www.amsoft.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ab.view.pullview;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.ab.util.AbViewUtil;
// TODO: Auto-generated Javadoc
/**
* © 2012 amsoft.cn
* 名称:AbListViewFooter.java
* 描述:加载更多Footer View类.
*
* @author 还如一梦中
* @version v1.0
* @date:2013-01-17 下午11:52:13
*/
public class AbListViewFooter extends LinearLayout {
/** The m context. */
private Context mContext;
/** The m state. */
private int mState = -1;
/** The Constant STATE_READY. */
public final static int STATE_READY = 1;
/** The Constant STATE_LOADING. */
public final static int STATE_LOADING = 2;
/** The Constant STATE_NO. */
public final static int STATE_NO = 3;
/** The Constant STATE_EMPTY. */
public final static int STATE_EMPTY = 4;
/** The footer view. */
private LinearLayout footerView;
/** The footer progress bar. */
private ProgressBar footerProgressBar;
/** The footer text view. */
private TextView footerTextView;
/** The footer content height. */
private int footerHeight;
/**
* Instantiates a new ab list view footer.
*
* @param context the context
*/
public AbListViewFooter(Context context) {
super(context);
initView(context);
}
/**
* Instantiates a new ab list view footer.
*
* @param context the context
* @param attrs the attrs
*/
public AbListViewFooter(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
setState(STATE_READY);
}
/**
* Inits the view.
*
* @param context the context
*/
private void initView(Context context) {
mContext = context;
//底部刷新
footerView = new LinearLayout(context);
//设置布局 水平方向
footerView.setOrientation(LinearLayout.HORIZONTAL);
footerView.setGravity(Gravity.CENTER);
footerView.setMinimumHeight(AbViewUtil.scaleValue(mContext,100));
footerTextView = new TextView(context);
footerTextView.setGravity(Gravity.CENTER_VERTICAL);
setTextColor(Color.rgb(107, 107, 107));
AbViewUtil.setTextSize(footerTextView,30);
AbViewUtil.setPadding(footerView, 0, 10, 0, 10);
footerProgressBar = new ProgressBar(context,null,android.R.attr.progressBarStyle);
footerProgressBar.setVisibility(View.GONE);
LinearLayout.LayoutParams layoutParamsWW = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layoutParamsWW.gravity = Gravity.CENTER;
layoutParamsWW.width = AbViewUtil.scaleValue(mContext, 50);
layoutParamsWW.height = AbViewUtil.scaleValue(mContext, 50);
layoutParamsWW.rightMargin = AbViewUtil.scaleValue(mContext, 10);
footerView.addView(footerProgressBar,layoutParamsWW);
LinearLayout.LayoutParams layoutParamsWW1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
footerView.addView(footerTextView,layoutParamsWW1);
LinearLayout.LayoutParams layoutParamsFW = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
addView(footerView,layoutParamsFW);
//获取View的高度
AbViewUtil.measureView(this);
footerHeight = this.getMeasuredHeight();
}
/**
* 设置当前状态.
*
* @param state the new state
*/
public void setState(int state) {
if (state == STATE_READY) {
footerView.setVisibility(View.VISIBLE);
footerTextView.setVisibility(View.VISIBLE);
footerProgressBar.setVisibility(View.GONE);
footerTextView.setText("载入更多");
} else if (state == STATE_LOADING) {
footerView.setVisibility(View.VISIBLE);
footerTextView.setVisibility(View.VISIBLE);
footerProgressBar.setVisibility(View.VISIBLE);
footerTextView.setText("正在加载...");
}else if(state == STATE_NO){
footerView.setVisibility(View.GONE);
footerTextView.setVisibility(View.VISIBLE);
footerProgressBar.setVisibility(View.GONE);
footerTextView.setText("没有了!");
}else if(state == STATE_EMPTY){
footerView.setVisibility(View.GONE);
footerTextView.setVisibility(View.GONE);
footerProgressBar.setVisibility(View.GONE);
footerTextView.setText("没有数据");
}
mState = state;
}
/**
* Gets the visiable height.
* @return the visiable height
*/
public int getVisiableHeight() {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)footerView.getLayoutParams();
return lp.height;
}
/**
* 隐藏footerView.
*/
public void hide() {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) footerView.getLayoutParams();
lp.height = 0;
footerView.setLayoutParams(lp);
footerView.setVisibility(View.GONE);
}
/**
* 显示footerView.
*/
public void show() {
footerView.setVisibility(View.VISIBLE);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) footerView.getLayoutParams();
lp.height = LayoutParams.WRAP_CONTENT;
footerView.setLayoutParams(lp);
}
/**
* 描述:设置字体颜色.
*
* @param color the new text color
*/
public void setTextColor(int color){
footerTextView.setTextColor(color);
}
/**
* 描述:设置字体大小.
*
* @param size the new text size
*/
public void setTextSize(int size){
footerTextView.setTextSize(size);
}
/**
* 描述:设置背景颜色.
*
* @param color the new background color
*/
public void setBackgroundColor(int color){
footerView.setBackgroundColor(color);
}
/**
* 描述:获取Footer ProgressBar,用于设置自定义样式.
*
* @return the footer progress bar
*/
public ProgressBar getFooterProgressBar() {
return footerProgressBar;
}
/**
* 描述:设置Footer ProgressBar样式.
*
* @param indeterminateDrawable the new footer progress bar drawable
*/
public void setFooterProgressBarDrawable(Drawable indeterminateDrawable) {
footerProgressBar.setIndeterminateDrawable(indeterminateDrawable);
}
/**
* 描述:获取高度.
*
* @return the footer height
*/
public int getFooterHeight() {
return footerHeight;
}
/**
* 设置高度.
*
* @param height 新的高度
*/
public void setVisiableHeight(int height) {
if (height < 0) height = 0;
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) footerView.getLayoutParams();
lp.height = height;
footerView.setLayoutParams(lp);
}
/**
* Gets the state.
*
* @return the state
*/
public int getState(){
return mState;
}
}