Android基础控件ProgressBar进度条的使用
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进度条的使用相关推荐
- android基础 [超级详细android常用控件解析(ScollView控件,ProgressBar进度条,PopupWindow控件)]
目录 1 章节目录 2 ScollView控件 2.1 ScrollView简介 2.2 ScrollView使用 2.3 常用属性及方法 3 ProgressBar进度条 3.1 简介 3.2 常用 ...
- android的三个基础控件,Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条...
xml文件: android:centerColor="#00ff00" android:endColor="#0000ff" android:startCol ...
- Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条
ProgressBar自定义的介绍.动画效果实现.附加三个漂亮的进度条 shape属性介绍: corners 圆角 gradient 渐变 padding 内容离边界距离 size 大小 ...
- Android中的常用控件之进度条(ProgressBar)
ProgressBar的常用属性 style(进度条的样式,默认为圆形:用style="?android:attr/progressBarStyleHorizontal"可以将进度 ...
- Android基础控件——ViewFlipper的使用,仿淘宝头条垂直滚动广告条
ViewFlipper的使用,仿淘宝头条垂直滚动广告条 学习,学习,学以致用 ViewFlipper是安卓自带的控件,很多人可能很少知道这个控件,这个控件很简单,也很好理解,能不能用上实战就看你们的本 ...
- Android基础控件——TabLayout的使用、仿爱奇艺导航条
TabLayout的使用.仿爱奇艺导航条 学习,学习,学以致用,让基础控件贴近实战效果 TabLayout是Google新推出的Material Design的控件之一,TabLayout的使用必须结 ...
- Android高级UI组件progressbar进度条
前两天学习了datepicker日历,time picker时间以及chronrmeter计时器的基础控件,今天浅浅了解一下Android其中的一个高级UI组件progressbar吧,进度条基本是每 ...
- Android学习笔记之progressBar(进度条)
一.说明 <1>在某项延续性工作的进展过程中为了不让用户觉得程序死掉了,需要有个活动的进度条,表示此过程正在进行中. <2>在某些操作的进度中的可视指示器,为用户呈现操作的进度 ...
- Android:基础控件按键文本框输入框制作登录页面
基础控件之Button,TextView,EditText,ImageView Button:按键 TextView:文本框 EditText:输入框 ImageView:图片 那我们新建一个工程研究 ...
最新文章
- 在Android中使用Android Ksoap2调用WebService
- Vue 路由 过渡动效 数据获取
- 需要注意的小问题------闹的笑话
- Unable to locate package错误解决办法
- 【学员分享】PMcaff阿德老师精(diao)彩(bao)传道的9条干货
- BT5 设置Ubuntu主题和字体
- Java基础知识编写一个HelloWorld案例
- 2016 版 Laravel 系列入门教程(三)【最适合中国人的 Laravel 教程】
- 搜索树判断 (25 分)(先序建立二叉树)
- ubuntu12.04-- vi 使用
- MATLAB深度学习layer、options参数浅析与文章推荐
- 菜鸟的B4A(B4X)开发成长日志
- Thinkpad SL400 功能键介绍
- 音乐相册android studio,手机音乐相册制作软件哪个好用?2018音乐相册制作软件推荐...
- 消除“Permission is only granted to system apps”错误
- uis向3d投影全息界面的连续演化。
- Niagara内容示例 1.3 Simple GPU Emitter
- Android从零开始搭建MVVM架构(3)——ViewModel
- Spring Boot Spring Cloud 区分 开发环境 测试环境 预发布环境(灰度环境) 正式环境
- 阿里云windows服务器配置环境以及发布项目