当前位置: 首页 > news >正文

团购网站建站广州中国建设银行网站首页

团购网站建站,广州中国建设银行网站首页,厦门企业网站建设公司,张雪峰谈建筑学前景2019独角兽企业重金招聘Python工程师标准 AutoHomeRefreshListView仿汽车之家下拉刷新 AutoHomeRefreshListView 高仿汽车之家下拉刷新 #xff0c;下拉的时候出现很不错的效果。本项目来自#xff1a;https://github.com/nugongshou110/AutoHomeRefreshListVi… 2019独角兽企业重金招聘Python工程师标准 AutoHomeRefreshListView仿汽车之家下拉刷新 AutoHomeRefreshListView 高仿汽车之家下拉刷新 下拉的时候出现很不错的效果。本项目来自https://github.com/nugongshou110/AutoHomeRefreshListView首先是自定义AutoHomeListView继承ListView实现的重要代码如下 public class AutoHomeListView extends ListView implements AbsListView.OnScrollListener{    private static final int DONE 0;    private static final int PULL_TO_REFRESH 1;    private static final int RELEASE_TO_REFRESH 2;    private static final int REFRESHING 3;    private static final int RATIO 4;    private LinearLayout headerView;    private AutoHome mAutoHome;    private int headerViewHeight;    private float startY;    private float currentProgress;    private int currentHeight;    private float offsetY;    private TextView tv_pull_to_refresh;    private OnAutoHomeRefreshListener mOnRefreshListener;    private int state;    private int mFirstVisibleItem;    private boolean isRecord;    private boolean isEnd;    private boolean isRefreable;    private FrameLayout mAnimContainer;    private PointerView mAutoHomeAnim;    private Animation animation;     public AutoHomeListView(Context context) {        super(context);        init(context);    }     public AutoHomeListView(Context context, AttributeSet attrs) {        super(context, attrs);        init(context);    }     public AutoHomeListView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init(context);    }     public interface OnAutoHomeRefreshListener{        void onRefresh();    }    public void setOnAutoHomeRefreshListener(OnAutoHomeRefreshListener onRefreshListener){        mOnRefreshListener onRefreshListener;        isRefreable true;    }    public void setOnRefreshComplete(){        isEnd true;        state DONE;        changeHeaderByState(state);    }     private void init(Context context) {        setOverScrollMode(View.OVER_SCROLL_NEVER);        setOnScrollListener(this);                headerView (LinearLayout) LayoutInflater.from(context).inflate(R.layout.autohome_item, null, false);        mAutoHome (AutoHome) headerView.findViewById(R.id.auto_home);        tv_pull_to_refresh (TextView) headerView.findViewById(R.id.tv_pull_to_refresh);        mAnimContainer (FrameLayout) headerView.findViewById(R.id.anim_container);        mAutoHomeAnim (PointerView) headerView.findViewById(R.id.anim_pointer);                animation AnimationUtils.loadAnimation(context, R.anim.pointer_rotate);                measureView(headerView);        addHeaderView(headerView);        headerViewHeight headerView.getMeasuredHeight();        headerView.setPadding(0, -headerViewHeight, 0, 0);         state DONE;        isEnd true;        isRefreable false;    }       Override    public void onScrollStateChanged(AbsListView absListView, int i) {    }    Override    public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {        mFirstVisibleItem firstVisibleItem;    }     Override    public boolean onTouchEvent(MotionEvent ev) {        if (isEnd) {            if (isRefreable) {                switch (ev.getAction()){                case MotionEvent.ACTION_DOWN:                    if (mFirstVisibleItem 0 !isRecord) {                        isRecord true;                        startY ev.getY();                    }                    break;                case MotionEvent.ACTION_MOVE:                    float tempY ev.getY();                    if (mFirstVisibleItem 0 !isRecord) {                        isRecord true;                        startY tempY;                    }                    if (state!REFRESHING isRecord ) {                        offsetY tempY - startY;                        float currentHeight (-headerViewHeightoffsetY/3);                        float currentProgress 1currentHeight/headerViewHeight;                        if (currentProgress1) {                            currentProgress 1;                        }                        if (state RELEASE_TO_REFRESH isRecord) {                            setSelection(0);                            if (-headerViewHeightoffsetY/30) {                                state PULL_TO_REFRESH;                                changeHeaderByState(state);                            }else if (offsetY0) {                                state DONE;                                changeHeaderByState(state);                            }                        }                        if (state PULL_TO_REFRESH isRecord) {                            setSelection(0);                            if (-headerViewHeightoffsetY/30) {                                state RELEASE_TO_REFRESH;                                changeHeaderByState(state);                            }else if (offsetY0) {                                state DONE;                                changeHeaderByState(state);                            }                        }                        if (state DONE isRecord) {                            if (offsetY0) {                                state PULL_TO_REFRESH;                            }                        }                        if (state PULL_TO_REFRESH) {                            Log.i(zhangqi, (int)(-headerViewHeightoffsetY/3));                            headerView.setPadding(0,(int)(-headerViewHeightoffsetY/3) ,0,0);                            mAutoHome.setCurrentProgress(currentProgress);                            mAutoHome.postInvalidate();                        }                        if (state RELEASE_TO_REFRESH) {                            headerView.setPadding(0,(int)(-headerViewHeightoffsetY/3) ,0, 0);                            mAutoHome.setCurrentProgress(currentProgress);                            mAutoHome.postInvalidate();                        }                    }                                                        break;                case MotionEvent.ACTION_UP:                    if (state PULL_TO_REFRESH) {                        this.smoothScrollBy((int)(-headerViewHeightoffsetY/3)headerViewHeight, 500);                        changeHeaderByState(state);                    }                    if (state RELEASE_TO_REFRESH) {                        this.smoothScrollBy((int)(-headerViewHeightoffsetY/3), 500);                        state REFRESHING;                        mOnRefreshListener.onRefresh();                        changeHeaderByState(state);                    }                    isRecord false;                    break;                }                            }        }        return super.onTouchEvent(ev);    }        private void changeHeaderByState(int state){        switch (state) {        case DONE:            headerView.setPadding(0, -headerViewHeight, 0, 0);            mAutoHome.setVisibility(View.VISIBLE);            mAutoHomeAnim.clearAnimation();            mAnimContainer.setVisibility(View.GONE);            break;        case RELEASE_TO_REFRESH:            tv_pull_to_refresh.setText(放开刷新);                    break;        case PULL_TO_REFRESH:            tv_pull_to_refresh.setText(下拉刷新);            state DONE;            mAutoHome.setVisibility(View.VISIBLE);            mAutoHomeAnim.clearAnimation();            mAnimContainer.setVisibility(View.GONE);            break;        case REFRESHING:            tv_pull_to_refresh.setText(正在刷新);            mAutoHome.setVisibility(View.GONE);            mAnimContainer.setVisibility(View.VISIBLE);            mAutoHomeAnim.clearAnimation();            mAutoHomeAnim.startAnimation(animation);            break;        default:            break;        }    }            private void measureView(View child) {        ViewGroup.LayoutParams p child.getLayoutParams();        if (p null) {            p new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,                    ViewGroup.LayoutParams.WRAP_CONTENT);        }        int childWidthSpec ViewGroup.getChildMeasureSpec(0, 0 0, p.width);        int lpHeight p.height;        int childHeightSpec;        if (lpHeight 0) {            childHeightSpec MeasureSpec.makeMeasureSpec(lpHeight,                    MeasureSpec.EXACTLY);        } else {            childHeightSpec MeasureSpec.makeMeasureSpec(0,                    MeasureSpec.UNSPECIFIED);        }        child.measure(childWidthSpec, childHeightSpec);    } } //如何调用        mAdapter new ArrayAdapterString(this,android.R.layout.simple_list_item_1,mDatas);        mListView (AutoHomeListView) findViewById(R.id.listview);        mListView.setAdapter(mAdapter);        mListView.setOnAutoHomeRefreshListener(this);   运行效果 相关代码 AutoHomeRefreshListView仿汽车之家下拉刷新 PercentageBar自定义动态柱形图 Hide-Music-Player 一个完整的音乐播放器FoldableLayout展开效果ProgressRoundButton下载进度按钮变化动画android 过渡动画研究android资讯类软件框架QuickSand图片点击后分裂成几份消失效果MaterialPowerMenu 点击按钮切换页面加载呈现效果PlayNewsStandDemo资讯类新闻客户端框架 转载于:https://my.oschina.net/u/2461971/blog/524883
http://www.yutouwan.com/news/72075/

相关文章:

  • 网站建站知识手机app快速开发平台
  • 网站建设与管理试题 答案.网站开发工具dw
  • .net网站开发课程设计wordpress框架教学
  • 农业网站模板WordPress网站建设样式
  • 成都网站建设与网站制作品牌网站建设保障大蝌蚪
  • 网站建设相关优化如何自己做个网站
  • 一了网站唐山网站制作企业
  • 运城市做网站wordpress+cms+中文版
  • 济南企业营销型网站建设价格seo网站推广报价
  • 医疗器械网站建设社交网站开发成本
  • 怎么上传做 好的网站吗aspx网站 整站抓取
  • 域名到期对网站影响网站营销的重要价值
  • 天津建设工程信息网网站首页wordpress 文件管理插件
  • 营销网站设计实验网站开发公司需要什么资质
  • 有个新网站能提供网站备案要多长时间
  • asp.net网站开发实例杭州哪些做网站公司好
  • 中国铁工建设有限公司网站php网站建设含义
  • 响应式布局网站网站免备案空间
  • 商城网站源代码莱芜高端网站建设价格
  • 网站首页优化如何快速推广一个新产品
  • wordpress适合做什么网站吗建设部网站资质公示
  • 网站开发流程中客户的任务是什么广东新闻联播林红
  • 道滘网站仿做做视频网站弹窗
  • 设计素材网站破解网站制作新报价
  • c2c网站功能本地网站建设多少钱
  • 网站建设超市visual studio怎么创建网页
  • 临沂网站建设微信大庆市建设局宫方网站
  • 建网站找哪个平台好呢怎么建立自己的公司网站
  • wordpress 商品站wordpress主题开发ide
  • 1万网站建设费入什么科目做网站如何排版