1、简介

  ProgressBar继承与View类,直接子类有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子类有SeekBar和RatingBar!

android:max:进度条的最大值
android:progress:进度条已完成进度值
android:progressDrawable:设置轨道对应的Drawable对象
android:indeterminate:如果设置成true,则进度条不精确显示进度
android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象
android:indeterminateDuration:设置不精确显示进度的持续时间
android:secondaryProgress:二级进度条

2、简单使用

  头两个是系统自带,后面一个帧动画一个自定义View!

  xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".LoginActivity"><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"style="@android:style/Widget.ProgressBar.Large"/><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:max="100"android:progress="10"android:secondaryProgress="20"style="@android:style/Widget.ProgressBar.Horizontal"/><ImageViewandroid:id="@+id/imageview11"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/amin_pgbar"/><com.example.xianfengzhang.myapplication.CustomView.CirclePgBarandroid:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

  帧动画布局文件:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false" ><itemandroid:drawable="@drawable/loading_01"android:duration="200"/><itemandroid:drawable="@drawable/loading_02"android:duration="200"/><itemandroid:drawable="@drawable/loading_03"android:duration="200"/><itemandroid:drawable="@drawable/loading_04"android:duration="200"/><itemandroid:drawable="@drawable/loading_05"android:duration="200"/><itemandroid:drawable="@drawable/loading_06"android:duration="200"/><itemandroid:drawable="@drawable/loading_07"android:duration="200"/><itemandroid:drawable="@drawable/loading_08"android:duration="200"/><itemandroid:drawable="@drawable/loading_09"android:duration="200"/><itemandroid:drawable="@drawable/loading_10"android:duration="200"/><itemandroid:drawable="@drawable/loading_11"android:duration="200"/><itemandroid:drawable="@drawable/loading_12"android:duration="200"/>
</animation-list>

  帧动画Java文件:

public class LoginActivity extends AppCompatActivity  {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);// Set up the login form.
ImageView imageView = (ImageView)findViewById(R.id.imageview11);final AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getDrawable();imageView.postDelayed(new Runnable() {@Overridepublic void run() {animationDrawable.start();}},100);}
}

  自定义View:

package com.example.xianfengzhang.myapplication.CustomView;import android.annotation.SuppressLint;
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;/*** Created by xianfengzhang on 2017/12/22.*/@SuppressLint("ViewConstructor")
public class CirclePgBar extends View {private Paint mBackPaint;private Paint mFrontPaint;private Paint mTextPaint;private float mStrokeWidth = 50;private float mHalfStrokeWidth = mStrokeWidth / 2;private float mRadius = 200;private RectF mRect;private int mProgress = 0;//目标值,想改多少就改多少private int mTargetProgress = 90;private int mMax = 100;private int mWidth;private int mHeight;//    构造方法public CirclePgBar(Context context) {super(context);init();}public CirclePgBar(Context context, AttributeSet attrs) {super(context, attrs);init();}public CirclePgBar(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private  void init(){mBackPaint = new Paint();mBackPaint.setColor(Color.WHITE);//设置画笔颜色mBackPaint.setAntiAlias(true);//设置画笔锯齿效果mBackPaint.setStyle(Paint.Style.STROKE);//设置画笔风格(空心|实心)mBackPaint.setStrokeWidth(mStrokeWidth);//设置空心边框的宽度
mFrontPaint = new Paint();mFrontPaint.setColor(Color.GREEN);mFrontPaint.setAntiAlias(true);mFrontPaint.setStyle(Paint.Style.STROKE);mFrontPaint.setStrokeWidth(mStrokeWidth);mTextPaint = new Paint();mTextPaint.setColor(Color.GREEN);//设置字体颜色mTextPaint.setAntiAlias(true);mTextPaint.setTextSize(80);//设置字体大小mTextPaint.setTextAlign(Paint.Align.CENTER);//设置字体对齐方式
}//onMeasure(测量控件大小的方法) 重写onMeasure方法
    @Overrideprotected  void onMeasure(int widthMeasureSpec, int heightMeasureSpec){super.onMeasure(widthMeasureSpec, heightMeasureSpec);mWidth = getRealSize(widthMeasureSpec);mHeight = getRealSize(heightMeasureSpec);setMeasuredDimension(mWidth,mHeight);//保存测量的大小
    }
//onDraw绘制View自身的内容 重写onDraw方法
    @Overrideprotected void onDraw(Canvas canvas){initRect();float angle = mProgress/(float)mMax *360;canvas.drawCircle(mWidth/2,mHeight/2,mRadius,mBackPaint);canvas.drawArc(mRect,-90,angle,false,mFrontPaint);canvas.drawText(mProgress + "%",mWidth/2+mHalfStrokeWidth,mHeight/2+mHalfStrokeWidth,mTextPaint);if (mProgress < mTargetProgress){mProgress +=1;invalidate();}}public int getRealSize(int measureSpec) {int result = 1;int mode = MeasureSpec.getMode(measureSpec);//从提供的测量规范中获取模式int size = MeasureSpec.getSize(measureSpec);//从提供的测量规范中获取尺寸
//MeasureSpec其实就是尺寸和模式通过各种位运算计算出的一个整型值,它提供了三种模式,还有三个方法(合成约束、分离模式、分离尺寸)
//UNSPECIFIED(未指定):父控件没有对子控件施加任何约束,子控件可以得到任意想要的大小!
//EXACTLY(完全):父控件给子控件决定了确切大小,子控件将被限定在给定的边界里而忽略它本身大小。
//AT_MOST(至多):子控件至多达到指定大小的值。if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.UNSPECIFIED) {result = (int) (mRadius * 2 + mStrokeWidth);} else {result = size;}return result;}private void initRect() {if (mRect == null) {mRect = new RectF();int viewSize = (int) (mRadius * 2);int left = (mWidth - viewSize) / 2;int top = (mHeight - viewSize) / 2;int right = left + viewSize;int bottom = top + viewSize;mRect.set(left, top, right, bottom);}}
}

转载于:https://www.cnblogs.com/xianfeng-zhang/p/8085673.html

Android基础控件ProgressBar进度条的使用相关推荐

  1. android基础 [超级详细android常用控件解析(ScollView控件,ProgressBar进度条,PopupWindow控件)]

    目录 1 章节目录 2 ScollView控件 2.1 ScrollView简介 2.2 ScrollView使用 2.3 常用属性及方法 3 ProgressBar进度条 3.1 简介 3.2 常用 ...

  2. android的三个基础控件,Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条...

    xml文件: android:centerColor="#00ff00" android:endColor="#0000ff" android:startCol ...

  3. Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条

    ProgressBar自定义的介绍.动画效果实现.附加三个漂亮的进度条 shape属性介绍: corners 圆角   gradient 渐变   padding 内容离边界距离   size 大小 ...

  4. Android中的常用控件之进度条(ProgressBar)

    ProgressBar的常用属性 style(进度条的样式,默认为圆形:用style="?android:attr/progressBarStyleHorizontal"可以将进度 ...

  5. Android基础控件——ViewFlipper的使用,仿淘宝头条垂直滚动广告条

    ViewFlipper的使用,仿淘宝头条垂直滚动广告条 学习,学习,学以致用 ViewFlipper是安卓自带的控件,很多人可能很少知道这个控件,这个控件很简单,也很好理解,能不能用上实战就看你们的本 ...

  6. Android基础控件——TabLayout的使用、仿爱奇艺导航条

    TabLayout的使用.仿爱奇艺导航条 学习,学习,学以致用,让基础控件贴近实战效果 TabLayout是Google新推出的Material Design的控件之一,TabLayout的使用必须结 ...

  7. Android高级UI组件progressbar进度条

    前两天学习了datepicker日历,time picker时间以及chronrmeter计时器的基础控件,今天浅浅了解一下Android其中的一个高级UI组件progressbar吧,进度条基本是每 ...

  8. Android学习笔记之progressBar(进度条)

    一.说明 <1>在某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中. <2>在某些操作的进度中的可视指示器,为用户呈现操作的进度 ...

  9. Android:基础控件按键文本框输入框制作登录页面

    基础控件之Button,TextView,EditText,ImageView Button:按键 TextView:文本框 EditText:输入框 ImageView:图片 那我们新建一个工程研究 ...

最新文章

  1. 在Android中使用Android Ksoap2调用WebService
  2. Vue 路由 过渡动效 数据获取
  3. 需要注意的小问题------闹的笑话
  4. Unable to locate package错误解决办法
  5. 【学员分享】PMcaff阿德老师精(diao)彩(bao)传道的9条干货
  6. BT5 设置Ubuntu主题和字体
  7. Java基础知识编写一个HelloWorld案例
  8. 2016 版 Laravel 系列入门教程(三)【最适合中国人的 Laravel 教程】
  9. 搜索树判断 (25 分)(先序建立二叉树)
  10. ubuntu12.04-- vi 使用
  11. MATLAB深度学习layer、options参数浅析与文章推荐
  12. 菜鸟的B4A(B4X)开发成长日志
  13. Thinkpad SL400 功能键介绍
  14. 音乐相册android studio,手机音乐相册制作软件哪个好用?2018音乐相册制作软件推荐...
  15. 消除“Permission is only granted to system apps”错误
  16. uis向3d投影全息界面的连续演化。
  17. Niagara内容示例 1.3 Simple GPU Emitter
  18. Android从零开始搭建MVVM架构(3)——ViewModel
  19. Spring Boot Spring Cloud 区分 开发环境 测试环境 预发布环境(灰度环境) 正式环境
  20. 阿里云windows服务器配置环境以及发布项目

热门文章

  1. 万户OA应变大考验之新员工学习篇
  2. 【WPF】提高InkAnalyer手写汉字识别的准确率
  3. extract和extractValue的差别
  4. 「干货」什么Linux是邮件服务器?
  5. CentOS VS Ubuntu,谁才是更好的 Linux 版本?
  6. 人声处理_10款免费的人声处理工具
  7. 扩展 日历_日历功能的拓展:Apple Watch能在屏幕上显示年日历
  8. 查询常量、表达式、函数
  9. MySQL高级 - 锁 - InnoDB行锁 - 基本演示
  10. SpringSecurity分布式整合之资源服务器搭建和测试