Android Open Source - SwitchTabs X List View Header






From Project

Back to project page SwitchTabs.

License

The source code is released under:

Apache License

If you think the Android project SwitchTabs listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * @file XListViewHeader.java//from  ww  w.j a v a  2 s . co  m
 * @create Apr 18, 2012 5:22:27 PM
 * @author Maxwin
 * @description XListView's header
 */
package com.normal.testdemo.view;

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;
import com.normal.testdemo.R;

public class XListViewHeader extends LinearLayout {
  public final static int STATE_NORMAL = 0;
  private int mState = STATE_NORMAL;
  public final static int STATE_READY = 1;
  public final static int STATE_REFRESHING = 2;
  private final int ROTATE_ANIM_DURATION = 180;
  private LinearLayout mContainer;
  private ImageView mArrowImageView;
  private ProgressBar mProgressBar;
  private TextView mHintTextView;
  private Animation mRotateUpAnim;
  private Animation mRotateDownAnim;

  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 int getVisiableHeight() {
    return mContainer.getHeight();
  }

  public void setVisiableHeight(int height) {
    if (height < 0)
      height = 0;
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContainer
        .getLayoutParams();
    lp.height = height;
    mContainer.setLayoutParams(lp);
  }

}




Java Source Code List

com.normal.testdemo.activitys.MainActivity.java
com.normal.testdemo.activitys.SplashActivity.java
com.normal.testdemo.adapters.HotelListAdapter.java
com.normal.testdemo.adapters.SectionsPagerAdapter.java
com.normal.testdemo.beans.Hotel.java
com.normal.testdemo.beans.Hotels.java
com.normal.testdemo.fragments.PlaceholderFragment.java
com.normal.testdemo.utils.AsynImageLoader.java
com.normal.testdemo.utils.Utils.java
com.normal.testdemo.view.XListViewFooter.java
com.normal.testdemo.view.XListViewHeader.java
com.normal.testdemo.view.XListView.java