XListView 配置文件 需导入项目 类名:XListViewHeader

    xiaoxiao2025-05-24  8

    

    package org.com.cctest.view;

    /**  * @file XListViewHeader.java  * @create Apr 18, 2012 5:22:27 PM  * @author Maxwin  * @description XListView's header  */

    import com.example.xlistviewtest.R;

    import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView;

    public class XListViewHeader extends LinearLayout {  private LinearLayout mContainer;  private ImageView mArrowImageView;  private ProgressBar mProgressBar;  private TextView mHintTextView;  private int mState = STATE_NORMAL;

     private Animation mRotateUpAnim;  private Animation mRotateDownAnim;    private final int ROTATE_ANIM_DURATION = 180;    public final static int STATE_NORMAL = 0;  public final static int STATE_READY = 1;  public final static int STATE_REFRESHING = 2;

     public XListViewHeader(Context context) {   super(context);   initView(context);  }

     /**   * @param context   * @param attrs   */  public XListViewHeader(Context context, AttributeSet attrs) {   super(context, attrs);   initView(context);  }

     private void initView(Context context) {   // ��ʼ�������������ˢ��view�߶�Ϊ0   LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(     LayoutParams.FILL_PARENT, 0);   mContainer = (LinearLayout) LayoutInflater.from(context).inflate(     R.layout.xlistview_header, null);   addView(mContainer, lp);   setGravity(Gravity.BOTTOM);

      mArrowImageView = (ImageView)findViewById(R.id.xlistview_header_arrow);   mHintTextView = (TextView)findViewById(R.id.xlistview_header_hint_textview);   mProgressBar = (ProgressBar)findViewById(R.id.xlistview_header_progressbar);      mRotateUpAnim = new RotateAnimation(0.0f, -180.0f,     Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,     0.5f);   mRotateUpAnim.setDuration(ROTATE_ANIM_DURATION);   mRotateUpAnim.setFillAfter(true);   mRotateDownAnim = new RotateAnimation(-180.0f, 0.0f,     Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,     0.5f);   mRotateDownAnim.setDuration(ROTATE_ANIM_DURATION);   mRotateDownAnim.setFillAfter(true);  }

     public void setState(int state) {   if (state == mState) return ;      if (state == STATE_REFRESHING) { // ��ʾ���    mArrowImageView.clearAnimation();    mArrowImageView.setVisibility(View.INVISIBLE);    mProgressBar.setVisibility(View.VISIBLE);   } else { // ��ʾ��ͷͼƬ    mArrowImageView.setVisibility(View.VISIBLE);    mProgressBar.setVisibility(View.INVISIBLE);   }      switch(state){   case STATE_NORMAL:    if (mState == STATE_READY) {     mArrowImageView.startAnimation(mRotateDownAnim);    }    if (mState == STATE_REFRESHING) {     mArrowImageView.clearAnimation();    }    mHintTextView.setText(R.string.xlistview_header_hint_normal);    break;   case STATE_READY:    if (mState != STATE_READY) {     mArrowImageView.clearAnimation();     mArrowImageView.startAnimation(mRotateUpAnim);     mHintTextView.setText(R.string.xlistview_header_hint_ready);    }    break;   case STATE_REFRESHING:    mHintTextView.setText(R.string.xlistview_header_hint_loading);    break;    default:   }      mState = state;  }    public void setVisiableHeight(int height) {   if (height < 0)    height = 0;   LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContainer     .getLayoutParams();   lp.height = height;   mContainer.setLayoutParams(lp);  }

     public int getVisiableHeight() {   return mContainer.getHeight();  }

    }

    转载请注明原文地址: https://ju.6miu.com/read-1299230.html
    最新回复(0)