你的位置:首页 > 软件开发 > 操作系统 > Android—自定义控件实现ListView下拉刷新

Android—自定义控件实现ListView下拉刷新

发布时间:2016-04-14 00:00:20
这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家):首先下拉未松手时候手机显示这样的界面:下面的代码是自定的扎样的控件:package co ...

Android—自定义控件实现ListView下拉刷新

这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家):

首先下拉未松手时候手机显示这样的界面:

Android—自定义控件实现ListView下拉刷新

下面的代码是自定的扎样的控件:

package com.dhsr.smartID.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.example.sirelinkscanapp.R;/** * 自定义控件,完成下拉时候ListView显示“图标及提示正在刷新……”的布局 * * @author cyf * */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);	}	/**	 * “ 松开即可刷新……正在刷新……”的布局	 * 	 * @param context	 */	private void initView(Context context) {		// 初始情况,设置下拉刷新view高度为0		LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(				LayoutParams.MATCH_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);	}	/**	 * 根据下拉状态执行相应的功能,开始以及停止相应的动画	 * 	 * @param state	 */	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();	}}

原标题:Android—自定义控件实现ListView下拉刷新

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录