iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中怎么实现淘宝下拉刷新效果
  • 550
分享到

Android中怎么实现淘宝下拉刷新效果

2023-05-30 17:05:04 550人浏览 独家记忆
摘要

Android中怎么实现淘宝下拉刷新效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。步骤:自定义一个view。(包含圆弧的绘制和箭头的显示和隐藏)2、自定义头部。1)、创建a

Android中怎么实现淘宝下拉刷新效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

步骤:

自定义一个view。(包含圆弧的绘制和箭头的显示和隐藏)
2、自定义头部。

1)、创建attrs文件

<declare-styleable name="TaoBaoView">     <attr name="ringProgressColor" fORMat="color" />     <attr name="ringWidth" format="dimension" />     <attr name="ringImage" format="reference" />     <attr name="ringmax" format="integer" />   </declare-styleable>

创建一个类 TaoBaoView.class

public class TaoBaoView extends View{     //圆环进度颜色   private int ringProgressColor;    //圆环的宽度   private float ringWidth;    //最大值   private int ringMax;    //中间的icon   private Bitmap ringImage;    //中间X坐标   private int centerX;    //中间Y坐标   private int centerY;    //画笔   private Paint mPaint;    //View宽度   private int width;    //View高度   private int height;    //进度   private int progress;    //半径   private int radius;    //是否显示图标   private boolean isshowIcon=true;     public TaoBaoView(Context context) {     this(context,null);   }    public TaoBaoView(Context context, AttributeSet attrs) {     this(context, attrs,0);   }    public TaoBaoView(Context context, AttributeSet attrs, int defStyleAttr) {     super(context, attrs, defStyleAttr);     TypedArray typedArray=context.obtainStyledAttributes(attrs, R.styleable.TaoBaoView);     ringProgressColor=typedArray.getColor(R.styleable.TaoBaoView_ringProgressColor, Color.GRAY);     ringWidth=typedArray.getDimension(R.styleable.TaoBaoView_ringWidth, 5);     ringMax=typedArray.getInteger(R.styleable.TaoBaoView_ringmax, 50);     ringImage= BitmapFactory.decodeResource(getResources(),         typedArray.getResourceId(R.styleable.TaoBaoView_ringImage,R.mipmap.jiantou));     init();    }    private void init() {     mPaint=new Paint();   }     @Override   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     super.onMeasure(widthMeasureSpec, heightMeasureSpec);      int widthMode=MeasureSpec.getMode(widthMeasureSpec);     int widthSize=MeasureSpec.getSize(widthMeasureSpec);     int heightMode=MeasureSpec.getMode(heightMeasureSpec);     int heightSize=MeasureSpec.getSize(heightMeasureSpec);      if(widthMode==MeasureSpec.AT_MOST)width=dp2px(30);     else width=widthSize;     if(heightMode==MeasureSpec.AT_MOST)height=dp2px(30);     else height=heightSize;     setMeasuredDimension(width,height);   }    @Override   protected void onLayout(boolean changed, int left, int top, int right, int bottom) {     super.onLayout(changed, left, top, right, bottom);     //获取中心点的位置     centerX=getWidth()/2;     centerY=getHeight()/2;     radius=(int) (centerX - ringWidth / 2);   }     @Override   protected void onSizeChanged(int w, int h, int oldw, int oldh) {     super.onSizeChanged(w, h, oldw, oldh);     //确定View的宽高     width = w;     height = h;   }    @Override   public void draw(canvas canvas) {     super.draw(canvas);      drawProgress(canvas);     drawImage(canvas);   }       private void drawImage(Canvas canvas) {     if(isShowIcon)     canvas.drawBitmap(ringImage,centerX-ringImage.getWidth()/2,centerY-ringImage.getHeight()/2,mPaint);   }       private void drawProgress(Canvas canvas) {      mPaint.setAntiAlias(true);     mPaint.setColor(ringProgressColor);     mPaint.setStrokeWidth(ringWidth);     //设置画笔样式     mPaint.setStyle(Paint.Style.STROKE);     RectF rectF=new RectF(centerX-radius,centerY-radius,centerX+radius,centerY+radius);     //绘制圆弧     canvas.drawArc(rectF,-110,-360*progress/ringMax,false,mPaint);   }        public int dp2px(int dp){     float density = getContext().getResources().getDisplayMetrics().density;     return (int) (dp * density + 0.5f);   }        public synchronized void setProgress(int progress){     if(progress<0){       progress=0;     }     if(progress>=ringMax){       progress=ringMax;     }     this.progress=progress;     postInvalidate();   }        public synchronized void setIsShowIcon(boolean isShow){     this.isShowIcon=isShow;   } }

创建一个headerLayout  下拉刷新头部

public class HeaderLayout extends LoadingLayoutBase {    private Context mContext;   private RotateAnimation refreshingAnimation;   private TextView ring_refresh_status;   private TaoBaoView mTaoBaoView;   private LinearLayout header_base;   private LinearLayout header_layout;    public HeaderLayout(Context context) {     this(context, PullToRefresHBase.Mode.PULL_FROM_START);   }    public HeaderLayout(Context context, PullToRefreshBase.Mode mode) {     super(context);     init(context,mode);   }    private void init(Context mContext,PullToRefreshBase.Mode mode) {     this.mContext=mContext;     LayoutInflater.from(mContext).inflate(R.layout.taobao_view, this);     header_base=(LinearLayout)findViewById(R.id.header_base);     header_layout=(LinearLayout)findViewById(R.id.refresh_header_content);     mTaoBaoView=(TaoBaoView)findViewById(R.id.taobao_view);     ring_refresh_status=(TextView)findViewById(R.id.taobao_tv);     refreshingAnimation = (RotateAnimation) AnimationUtils.loadAnimation(mContext, R.anim.rotating);     LinearInterpolator lir = new LinearInterpolator();     refreshingAnimation.setInterpolator(lir);     mTaoBaoView.setProgress(90);     LayoutParams lp = (LayoutParams) header_base.getLayoutParams();     lp.gravity = mode == PullToRefreshBase.Mode.PULL_FROM_END ? Gravity.TOP : Gravity.BOTTOM;     reset();   }    @Override   public int getContentSize() {     return header_layout.getHeight();   }       @Override   public void pullToRefresh() {     ring_refresh_status.setText("下拉刷新");     mTaoBaoView.setIsShowIcon(true);   }       @Override   public void releaseToRefresh() {     ring_refresh_status.setText("松开刷新");     mTaoBaoView.setIsShowIcon(false);   }       @Override   public void onPull(float scaleOfLayout) {     scaleOfLayout = scaleOfLayout > 1.0f ? 1.0f : scaleOfLayout;     int progress=(int) ((scaleOfLayout)*100);     mTaoBaoView.setProgress(progress>90?90:progress);    }       @Override   public void refreshing() {     mTaoBaoView.setIsShowIcon(false);     ring_refresh_status.setText("正在刷新");     mTaoBaoView.startAnimation(refreshingAnimation);   }    @Override   public void reset() {     mTaoBaoView.clearAnimation();   }    @Override   public void setPullLabel(CharSequence pullLabel) {    }    @Override   public void setRefreshingLabel(CharSequence refreshingLabel) {    }    @Override   public void setReleaseLabel(CharSequence releaseLabel) {    } }

在mainactivity中:

mPullToRefreshListView=(PullToRefreshListView)findViewById(R.id.list); mPullToRefreshListView.setHeaderLayout(new HeaderLayout(this));

看完上述内容,你们掌握Android中怎么实现淘宝下拉刷新效果的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Android中怎么实现淘宝下拉刷新效果

本文链接: https://www.lsjlt.com/news/219848.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中怎么实现淘宝下拉刷新效果
    Android中怎么实现淘宝下拉刷新效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。步骤:自定义一个view。(包含圆弧的绘制和箭头的显示和隐藏)2、自定义头部。1)、创建a...
    99+
    2023-05-30
  • Android自定义实现淘宝下拉刷新效果
    要实现淘宝下拉刷新效果,可以使用RecyclerView和SwipeRefreshLayout来实现,具体步骤如下:1. 在布局文件...
    99+
    2023-08-17
    Android
  • Android 实现的下拉刷新效果
    下面是自己实现的效果: 1、分析 可以将动画分解成: 睁眼毛驴绕着中心地球旋转,并且在到达地球中心时,切换为闭眼毛驴,最后发射出去 地球自我旋转,随着下拉而缓缓上升,达到半径距离后...
    99+
    2024-04-02
  • Android怎么自定义实现下拉刷新效果
    Android中自定义实现下拉刷新效果可以通过自定义View或者使用第三方库来实现。1. 自定义View:- 创建一个继承自View...
    99+
    2023-08-18
    Android
  • 如何实现淘宝JSsearch搜索下拉效果
    这篇文章主要介绍了如何实现淘宝JSsearch搜索下拉效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们下载JSsearch2.0 Co...
    99+
    2024-04-02
  • Android中怎么通过自定义控件实现下拉刷新效果
    本篇文章给大家分享的是有关Android中怎么通过自定义控件实现下拉刷新效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。@Override  protec...
    99+
    2023-05-30
    android
  • Spring怎么实现上拉刷新和下拉加载效果
    这篇文章主要介绍Spring怎么实现上拉刷新和下拉加载效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!导依赖:compile 'com.android.support:recyclerview-v...
    99+
    2023-05-30
    spring
  • Android自定义实现顶部粘性下拉刷新效果
    本文实例为大家分享了Android实现顶部粘性下拉刷新效果的具体代码,供大家参考,具体内容如下学习:视频地址 activity_view_mv代码<?xml version="1.0" encoding="utf-8"?...
    99+
    2023-05-30
    android 顶部粘性 下拉刷新
  • Android仿京东、天猫下拉刷新效果
    说到下拉刷新,相信大家都不陌生,现在基本上每个项目都会用到。我们公司的项目一直都是使用SwipeRefreshLayout,官方的Material Design风格,好用少Bug。现在下拉刷新大概有下面几种实现方式:一种是直接包在ListV...
    99+
    2023-05-31
    android 下拉刷新 roi
  • 微信小程序实现下拉刷新效果
    微信小程序实现下拉刷新效果微信小程序作为一种轻量级的移动应用开发平台,近年来在移动应用行业得到了广泛的应用和发展。下拉刷新是常见的交互效果,可以在列表页面中,当用户下拉页面时自动刷新内容,提升用户体验和数据的及时更新。本文将介绍如何在微信小...
    99+
    2023-11-21
    微信小程序 实现 下拉刷新
  • MUI如何实现上拉加载和下拉刷新效果
    这篇文章主要介绍了MUI如何实现上拉加载和下拉刷新效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。编写存储过程分页(此处使用T-SQL)C...
    99+
    2024-04-02
  • Android中ListView下拉刷新的实现代码
    Android中ListView下拉刷新实现效果图:ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考。那我就不解释,直接上代码了。这里需要自己重写一下ListView,重写代码如下:p...
    99+
    2023-05-31
    android listview 下拉刷新
  • Android简洁的下拉放大刷新效果示例
    序言国庆放假过后眼看一年又要过完了,年初指望着已经有一年的经验本以为自己不是刚出校的学生以为翅膀已经硬了,打算辞职换新工作,一面试才发现自己就是个垃圾,什么oninterceptEvent,dispatchTouchEvent ,Aysnc...
    99+
    2023-05-30
    android 下拉放大刷新 roi
  • Android应用中怎么实现一个下拉刷新功能
    Android应用中怎么实现一个下拉刷新功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、下拉才出现的视图pull_to_refresh_header.xml<x...
    99+
    2023-05-31
    android roi
  • Ajax+Servlet如何实现无刷新下拉联动效果
    小编给大家分享一下Ajax+Servlet如何实现无刷新下拉联动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!大类下拉框:页面加载的时候就初始化大类的下拉选项,通过后台代码去数据库里面...
    99+
    2024-04-02
  • vue3怎么实现淘宝放大镜效果
    实现效果实现思路我们实现动图的淘宝放大镜的效果需要4步。1.完成小图盒子、遮罩、大图盒子布局2.实现鼠标移动到小图盒子显示遮罩和大图盒子3.实现鼠标移动遮罩在小图盒子移动4.实现遮罩的移动范围不能超出小图盒子,且移动时带动大图图片移动完成小...
    99+
    2023-05-19
    Vue3
  • 微信小程序如何实现下拉刷新和上拉分页效果
    这篇文章主要介绍“微信小程序如何实现下拉刷新和上拉分页效果”,在日常操作中,相信很多人在微信小程序如何实现下拉刷新和上拉分页效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现下拉刷新和上拉分...
    99+
    2023-06-30
  • Android中怎么利用ViewDragHelper实现一个淘宝拖动加载效果
    本篇文章为大家展示了Android中怎么利用ViewDragHelper实现一个淘宝拖动加载效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。创建自定义ViewGroup:package ...
    99+
    2023-05-30
    android viewdraghelper
  • Android RecyclerView设置下拉刷新的实现方法
    Android RecyclerView设置下拉刷新的实现方法1 集成 SwipeRefreshLayout1 xml布局文件中使用<android.support.v4.widget.SwipeRefreshLayout andr...
    99+
    2023-05-30
    android recyclerview recycle
  • 小程序怎么实现上拉刷新下拉加载
    这篇文章主要介绍“小程序怎么实现上拉刷新下拉加载”,在日常操作中,相信很多人在小程序怎么实现上拉刷新下拉加载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么实现上拉刷新下拉加载”的疑惑有所帮助!接下来...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作