Android编程实现类似于圆形ProgressBar的进度条效果

Android编程实现类似于圆形ProgressBar的进度条效果,第1张

概述本文实例讲述了Android编程实现类似于圆形ProgressBar的进度条效果。分享给大家供大家参考,具体如下:

本文实例讲述了AndroID编程实现类似于圆形Progressbar的进度条效果。分享给大家供大家参考,具体如下:

我们要实现一个类似于小米分享中的圆形播放进度条,androID自带的圆形Progressbar是默认自动旋转的,所以无法实现,于是我们想到了使用自定义一个VIEw,来实现这种效果。

首先来看看自己定义的VIEw

package cn.easymobi.application.bell.common;import androID.content.Context;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.Paint;import androID.graphics.RectF;import androID.util.AttributeSet;import androID.vIEw.VIEw;public class ProgressVIEw extends VIEw{  private float fArcNum;  private float fMax;  private float density;  public float getDensity() {    return density;  }  public voID setDensity(float density) {    this.density = density;  }  public ProgressVIEw(Context context) {    super(context);  }  public ProgressVIEw(Context context,AttributeSet attrs) {    super(context,attrs);  }  protected voID onDraw(Canvas canvas) {    // Todo auto-generated method stub    super.onDraw(canvas);    Paint paint=new Paint();    if(fArcNum>0)      {      paint.setcolor(color.GRAY);      paint.setFlags(Paint.ANTI_AliAS_FLAG);      canvas.drawCircle(40*density/2,40*density/2,paint);    }    paint.setcolor(color.YELLOW);    paint.setFlags(Paint.ANTI_AliAS_FLAG);    //paint.setstrokeWIDth(2);    RectF rect=new RectF(0,40*density,40*density);    canvas.drawArc(rect,-90,fArcNum,true,paint);    paint.setcolor(color.BLACK);    paint.setFlags(Paint.ANTI_AliAS_FLAG);    canvas.drawCircle(40*density/2,40*density/2-5,paint);  }  public voID setProgress(float num) {    fArcNum = (num/fMax) * 360;  }  public float getfArcNum() {    return fArcNum;  }  public voID setfArcNum(float fArcNum) {    this.fArcNum = fArcNum;  }  public float getfMax() {    return fMax;  }  public voID setfMax(float fMax) {    this.fMax = fMax;  }}

我们通过重写VIEw的onDraw方法,根据fArcNum好fMax来判断当前播放到的位置,然后不停的刷新改VIEw就实现了这个效果。至于画弧,是采用了drawArc方法,然后通过在其内部画圆遮盖多余部分实现。

下面是MediaPlayer与该VIEw的同步处理,核心代码如下

// *******************************************************************// Func: playAudio//// by: Sun// 2011.9.1// *******************************************************************public voID playAudio(final String path,final Progressbar pb) {  Thread thread = new Thread(new Runnable() {    public voID run() {      try {        if (mpMediaPlayer != null) {          mpMediaPlayer.stop();          mpMediaPlayer.release();          mpMediaPlayer = null;        }        mpMediaPlayer = new MediaPlayer();        mpMediaPlayer.setDataSource(path);        mpMediaPlayer.prepare();        mpMediaPlayer.setonPreparedListener(new OnPreparedListener() {          public voID onPrepared(MediaPlayer mp) {            pb.setVisibility(Progressbar.GONE);            frontPv.setfMax(mpMediaPlayer.getDuration());            frontPv.setProgress(0);            mpMediaPlayer.start();            refrash = new Thread(new Runnable() {              public voID run() {                try {                  while (frontPv.getfArcNum() <= 360 && mpMediaPlayer.isPlaying()) {                    if (bIsOver)                      break;                    frontPv.setProgress(mpMediaPlayer.getCurrentposition());                    Thread.sleep(1000);                    mHandle.sendEmptyMessage(MSG_REFRESH_UI);                  }                  mHandle.sendEmptyMessage(MSG_PLAY_OVER);                }                catch (Exception e) {                  e.printstacktrace();                }              }            });            refrash.start();          }        });      }      catch (Exception e) {        e.printstacktrace();      }    }  });  thread.start();}

其中frontPv是我们自己定义的vIEw,最后发送handler是调用invalIDate方法刷新该 vIEw,mpMediaPlayers是我们定义的MediaPlayer对象。我们通过在进程中每隔一秒更新frontPv当中的fArcNum并且 刷新实现转动的动画效果。

更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体 *** 作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家AndroID程序设计有所帮助。

您可能感兴趣的文章:android ListView和ProgressBar(进度条控件)的使用方法Android三种方式实现ProgressBar自定义圆形进度条Android ProgressBar进度条和ProgressDialog进度框的展示DEMOAndroid ProgressBar进度条使用详解Android编程之ProgressBar圆形进度条颜色设置方法Android之ProgressBar即时显示下载进度详解Android编程实现自定义ProgressBar样式示例(背景色及一级、二级进度条颜色)Android ProgressBar直线进度条的实例代码Android开发之ProgressBar字体随着进度条的加载而滚动Android使用动画设置ProgressBar进度的方法 总结

以上是内存溢出为你收集整理的Android编程实现类似于圆形ProgressBar的进度条效果全部内容,希望文章能够帮你解决Android编程实现类似于圆形ProgressBar的进度条效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142888.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存