xListViewHeader
来源:互联网 发布:积家 知乎 编辑:程序博客网 时间:2024/05/23 02:29
package lidabenshi.bwie.com.day10.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 lidabenshi.bwie.com.day10.R;/** * Created by 李大本事 on 2017/9/8. */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 LayoutParams lp = new LayoutParams( LayoutParams.FILL_PARENT, 0); // 时间TextView 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; LayoutParams lp = (LayoutParams) mContainer .getLayoutParams(); lp.height = height; mContainer.setLayoutParams(lp); } public int getVisiableHeight() { return mContainer.getHeight(); }}
阅读全文
0 0
- xlistviewheader
- XListViewHeader
- XListViewHeader
- XListViewHeader
- xListViewHeader
- XListViewHeader
- XListView 配置文件 需导入项目 类名:XListViewHeader
- 上拉加载下拉刷新(XListViewHeader)头部
- xlistviewFooter
- ANR异常
- 使用selector改变TextView的颜色
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- android studio中vector assets的使用说明
- xListViewHeader
- python中的一些函数
- 数据库视频—数据库、表的管理
- HashTable和HashMap的区别详解
- 线段树与动态规划(例题:poj2374,HDU3016)
- 顺序表基本操作(c实现)
- 通过淘宝的ip地址库获取ip地址通用类的实现(C#版)
- Codeforces 853A Planning
- Python中9种生成新对象的方法