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

贵阳建站模板泰州网站排名seo

贵阳建站模板,泰州网站排名seo,上海广告网站建设,wordpress 纯文字主题文章目录 一、进度条的属性和方法1.控件常用属性2.控件常用方法 二、系统提供的进度条1.圆形进度条用法:2.横线进度条用法 三、自定义进度条总结 一、进度条的属性和方法 1.控件常用属性 android:max:进度条的最大值 android:progress:进度…

文章目录

  • 一、进度条的属性和方法
    • 1.控件常用属性
    • 2.控件常用方法
  • 二、系统提供的进度条
    • 1.圆形进度条用法:
    • 2.横线进度条用法
  • 三、自定义进度条
  • 总结


一、进度条的属性和方法

1.控件常用属性

android:max:进度条的最大值
android:progress:进度条已完成进度值
android:progressDrawable:设置轨道对应的Drawable对象
android:indeterminate:如果设置成true,则进度条不精确显示进度
android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象
android:indeterminateDuration:设置不精确显示进度的持续时间
android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!

2.控件常用方法

getMax():返回这个进度条的范围的上限
getProgress():返回进度
getSecondaryProgress():返回次要进度
incrementProgressBy(int diff):指定增加的进度
isIndeterminate():指示进度条是否在不确定模式下
setIndeterminate(boolean indeterminate):设置不确定模式下

二、系统提供的进度条

系统系统了四种进度条:分别是Small,Inverse,Large,Horizontal,前三种是圆形,最后一种是横线形,直接style引用即可
三种圆形的进度条无法显示进度

1.圆形进度条用法:

<ProgressBarstyle="@android:style/Widget.ProgressBar.Small"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true" />

2.横线进度条用法

布局文件

<ProgressBarandroid:id="@+id/prog"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="100"android:progress="0" />

java文件
下面的代码中,首先做了一个定时器模拟事务返回进度,每秒钟返回一次当前事务的进度,第二个定时器搭配hander每秒钟更新一次UI上显示的进度条
hander里面:
第一步获取以下当前进度条显示的进度,
第二步通过事务返回的进度计算在进度条上应该显示的进度,
第三步用应该显示的最新进度减去当前已经显示的进度获取当前进度条应该增加的进度
第四步调用进度条的incrementProgressBy方法更新进度条显示

public class MainActivity extends AppCompatActivity {ProgressBar prog;int a;     //事务执行的总进度int b = 0;     //事务执行的初始进度int c;     //进度条的总进度int h;      //进度条的当前进度Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 111) {//获取进度条当前进度h = prog.getProgress();//计算当前实际进度double e = (double) b / a;double f = c * e;int g = (int) f;//计算要增加的进度int m = g - h;prog.incrementProgressBy(m);    //增加进度显示}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);prog = (ProgressBar) findViewById(R.id.prog);c = prog.getMax();//执行事务,每秒钟返回一次事务执行进度new Timer().schedule(new TimerTask() {@Overridepublic void run() {a = 500;b++;if (b > a) {cancel();}}}, 0, 1000);//每秒钟将事务返回的进度值通过hander更新到UI显示中new Timer().schedule(new TimerTask() {@Overridepublic void run() {if (b > a) {cancel();}else{//定时循环执行的内容myHandler.sendEmptyMessage(111);}}}, 0, 1000);}

三、自定义进度条

自定义一个类继承View绘制圆形进度条,然后引用,下面的代码可直接复制使用,代码中我暴露出了五个参数可以在使用时修改,java中调用先使用setmTargetProgress()方法修改进度值,然后调用invalidate()重新绘制view即可。

CustomPgBar.java

public class CustomPgBar extends View {private Paint mBackPaint;private Paint mFrontPaint;private Paint mTextPaint;private RectF mRect;private int mProgress = 0;private int mWidth;private int mHeight;private int mMax = 100;         //总进度值//以下五个参数已暴露出去,使用时可修改private int mTargetProgress = 0;    //进度值private float mRadius = 200;    //圆形大小private int mTextPaintColor = Color.GREEN;  //绘制文本字体颜色private int mFrontPaintColor = Color.GREEN; //绘制进度颜色private int mBackPaintColor = Color.BLUE;   //绘制总进度颜色private float pTextSize = (float) (mRadius * 0.6);     //绘制文本字体大小private float mStrokeWidth = (float) (mRadius * 0.25);    //进度粗细private float mHalfStrokeWidth = mStrokeWidth / 2;public CustomPgBar(Context context) {super(context);init();}public CustomPgBar(Context context, AttributeSet attrs) {super(context, attrs);init();}public CustomPgBar(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}//完成相关参数初始化private void init() {//总进度画笔mBackPaint = new Paint();mBackPaint.setColor(getmBackPaintColor());mBackPaint.setAntiAlias(true);mBackPaint.setStyle(Paint.Style.STROKE);mBackPaint.setStrokeWidth(mStrokeWidth);//进度画笔mFrontPaint = new Paint();mFrontPaint.setColor(getmFrontPaintColor());mFrontPaint.setAntiAlias(true);mFrontPaint.setStyle(Paint.Style.STROKE);mFrontPaint.setStrokeWidth(mStrokeWidth);//文本画笔mTextPaint = new Paint();mTextPaint.setColor(getmTextPaintColor());mTextPaint.setAntiAlias(true);mTextPaint.setTextSize(pTextSize);mTextPaint.setTextAlign(Paint.Align.CENTER);}//重写测量大小的onMeasure方法和绘制View的核心方法onDraw()@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);mWidth = getRealSize(widthMeasureSpec);mHeight = getRealSize(heightMeasureSpec);setMeasuredDimension(mWidth, mHeight);}@Overrideprotected void onDraw(Canvas canvas) {initRect();float angle = mProgress / (float) mMax * 360;canvas.drawCircle(mWidth / 2, mHeight / 2, getmRadius(), mBackPaint);canvas.drawArc(mRect, -90, angle, false, mFrontPaint);canvas.drawText(mProgress + "%", mWidth / 2 + mHalfStrokeWidth, mHeight / 2 + mHalfStrokeWidth, mTextPaint);if (mProgress < getmTargetProgress()) {mProgress += 1;invalidate();}}public int getRealSize(int measureSpec) {int result = 1;int mode = MeasureSpec.getMode(measureSpec);int size = MeasureSpec.getSize(measureSpec);if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.UNSPECIFIED) {//自己计算result = (int) (getmRadius() * 2 + mStrokeWidth);} else {result = size;}return result;}private void initRect() {if (mRect == null) {mRect = new RectF();int viewSize = (int) (getmRadius() * 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);}}public int getmTargetProgress() {return mTargetProgress;}public void setmTargetProgress(int mTargetProgress) {this.mTargetProgress = mTargetProgress;}public float getmRadius() {return mRadius;}public void setmRadius(float mRadius) {if (mRadius != 0) {this.mRadius = mRadius;}}public int getmTextPaintColor() {return mTextPaintColor;}public void setmTextPaintColor(int mTextPaintColor) {if (mTextPaintColor != 0) {this.mTextPaintColor = mTextPaintColor;}}public int getmFrontPaintColor() {return mFrontPaintColor;}public void setmFrontPaintColor(int mFrontPaintColor) {if (mFrontPaintColor != 0) {this.mFrontPaintColor = mFrontPaintColor;}}public int getmBackPaintColor() {return mBackPaintColor;}public void setmBackPaintColor(int mBackPaintColor) {if (mBackPaintColor != 0) {this.mBackPaintColor = mBackPaintColor;}}public int getmMax() {return mMax;}}

activity_main.xml引用

    <RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"><com.example.progressbardemo.CustomPgBarandroid:id="@+id/cusbar"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {CustomPgBar cusbar;int a;     //事务执行的总进度int b = 0;     //事务执行的初始进度int c;     //进度条的总进度Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 111) {//计算当前实际进度double e = (double) b / a;double f = c * e;int g = (int) f;cusbar.setmTargetProgress(g);   //修改进度值cusbar.invalidate();    //重新绘制viwe}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);cusbar = (CustomPgBar) findViewById(R.id.cusbar);c = cusbar.getmMax();//执行事务,每秒钟返回一次事务执行进度new Timer().schedule(new TimerTask() {@Overridepublic void run() {a = 200;b++;if (b >= a) {cancel();}}}, 0, 1000);//每秒钟将事务返回的进度值通过hander更新到UI显示中new Timer().schedule(new TimerTask() {@Overridepublic void run() {if (b > a) {cancel();} else {//定时循环执行的内容myHandler.sendEmptyMessage(111);}}}, 0, 1000);}
}

总结

以上就是今天要讲的内容。

http://www.hkea.cn/news/124203/

相关文章:

  • 免费商会网站模板百度推广账号
  • 玄武模板网站制作品牌关键词排名点击软件网站
  • 网站title的写法微信软文怎么写
  • 设计企业网站流程磁力引擎
  • 橙色企业网站模板域名注册购买
  • 培训建设网站线上推广产品
  • 写作网站不屏蔽全网关键词指数查询
  • wordpress手机uiseo关键词的选择步骤
  • 自己制作网页的步骤windows优化大师在哪里
  • 黑龙江企业信息系统seo推广优化外包公司
  • wordpress+增加域名赣州网站seo
  • 政府门户网站建设思路怎样优化网络
  • 厦门个人网站建设百度账户代运营
  • 企业网站开发注意什么企业网站官网
  • 网站建设开发合同书关键词怎么找出来
  • 常州微信网站建设附子seo
  • 上海网站seo招聘十种营销方式
  • 农产品网络营销模式百度推广怎么优化
  • 公司网站维护如何做分录自己搭建一个网站
  • 做期货浏览哪些网站网络优化工程师前景如何
  • 垂直b2b电子商务网站有哪些google搜索排名优化
  • 建设中网站源码网络推广工具和方法
  • 厦门做点击付费网站培训教育
  • 常州网站建设案例网站制作建设公司
  • 外国人做家具的网站一站传媒seo优化
  • 佛山h5建站模板怎样优化网站
  • 第三方做公司网站谷歌搜索广告优化
  • 网站风格模板快速排名精灵
  • 做网站横幅 的网站推荐几个公司推广
  • html5国内网站建设客户管理软件