自定义 横向的进度条

效果图是这样的:

接下来为大家粘贴代码:

首先是自定义的ProgressBar :

public class MyProgress extends ProgressBar {

String text;

Paint mPaint;

public MyProgress(Context context) {

super(context);

// TODO Auto-generated constructor stub

System.out.println("1");

initText();

}

public MyProgress(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

System.out.println("2");

initText();

}

public MyProgress(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

System.out.println("3");

initText();

}

@Override

public synchronized void setProgress(int progress) {

// TODO Auto-generated method stub

setText(progress);

super.setProgress(progress);

}

@Override

protected synchronized void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

// this.setText();

Rect rect = new Rect();

this.mPaint.getTextBounds(this.text, 0, this.text.length(), rect);

int x = (getWidth() / 1) - rect.centerX() - 18;

int y = (getHeight() / 2) - rect.centerY();

canvas.drawText(this.text, x, y, this.mPaint);

}

// 初始化,画笔

private void initText() {

this.mPaint = new Paint();

this.mPaint.setColor(Color.WHITE);

}

private void setText() {

setText(this.getProgress());

}

// 设置文字内容

private void setText(int progress) {

int i = (progress * 100) / this.getMax();

this.text = String.valueOf(i) + "%";

}

}

再者就是  actiivty里面的代码:

public class ProgressTest extends Activity {

private Button btn_go = null;

private MyProgress myProgress = null;

private Handler mHandler;

public TextView baifen;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findView();

setParam();

addListener();

mHandler = new Handler(new Callback() {

@Override

public boolean handleMessage(Message msg) {

// TODO Auto-generated method stub

myProgress.setProgress(msg.what);

return false;

}

});

}

private void findView() {

btn_go = (Button) findViewById(R.id.btn_go);

myProgress = (MyProgress) findViewById(R.id.pgsBar);

// baifen = (TextView) findViewById(R.id.baifen);

}

private void setParam() {

btn_go.setText("开始");

}

private void addListener() {

btn_go.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

for (int i = 0; i <= 50; i++) {

mHandler.sendEmptyMessage(i * 2);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}).start();

}

});

}

}

还有就是需要在res文件夹下创建一个drawable文件夹;*****.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@android:id/background">

<shape>

<corners android:radius="3dip" />

<gradient

android:angle="270"

android:centerY="0.75"

android:endColor="#999999"

android:startColor="#999999" />

</shape>

</item>

<item android:id="@android:id/secondaryProgress">

<clip>

<shape>

<corners android:radius="0dip" />

<gradient

android:angle="270"

android:centerY="0.75"

android:endColor="#23b7a1"

android:startColor="#23b7a1" />

</shape>

</clip>

</item>

<item android:id="@android:id/progress">

<clip>

<shape>

<corners android:radius="5dip" />

<gradient

android:angle="270"

android:centerY="0.75"

android:endColor="#23b7a1"

android:startColor="#23b7a1" />

</shape>

</clip>

</item>

</layer-list>

values文件夹下 stytles.xml  里面添加代码:

<!-- 自定义进度条 -->

<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal">

<item name="android:maxHeight">50dip</item>

<item name="android:minHeight">12dip</item>

<item name="android:indeterminateOnly">false</item>

<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>

<item name="android:progressDrawable">@drawable/progressbar_mini</item>

</style>

基本所有代码我都粘贴到 这里了,里面会用到一些颜色值,这个你们可以自己定义。

如果有用到的,不清楚怎么写的,可以加我QQ:2268214831  或者微信:hanxinghui0817 私聊我哦

本人经验不足,如有什么错误还请大神多多指点,在这里谢谢啦!希望本博文哭帮助到一些人!

时间: 2024-10-12 22:09:11

自定义 横向的进度条的相关文章

低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

       一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android

Andorid自定义圆形渐变色进度条的从实现到开源

信自己也是一种信仰. 写在前面的话 3月初我在自定义控件概述中挖下的几个坑,前一段时间已经基本填完了,自定义控件的几种实现方式也分别写了demo来进行说明.今天我们来聊一聊如何把自己封装一个圆形渐变色进度条控件开源到github,并且上传到jcenter方便别人远程依赖.先看下效果图: 连接github并提交新项目 前提条件: 安装Git客户端(下载地址) 有GitHub账号 创建新项目并提交到Github: 在AndroidStudio中新建一个项目 配置Git:Settings -> Ver

可自定义刻度jQuery进度条

可自定义刻度jQuery进度条是一款可以自定义进度条刻度圆点的数量,大小,颜色等属性,并且可以通过CSS来控制圆点的外观样式.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="htmleaf-container"> <div id="container"> <div class="padded"> <div id="progressHolder"

Android 自定义对话框,进度条,下拉刷新等

这个demo集合了自定义对话框,进度条,下拉刷新以及popup弹出框等.是学习了网上开源项目后,抽取集合了常用对话框,进度条,下拉刷新以及popup弹出框等.现在结构目录简单,更易于学习和扩展使用.注释都卸载代码.下面进行简单的介绍以及部分代码展示. 本文demo下载:点击 1.整体实现的效果图 2.项目结构图 这上面项目结构图也是一目了然,有什么功能展示.大家也看到了,这上面类有点多,如果全部贴出来,不大可能,有兴趣下载本文源码. 3.看看基础类BaseActivity 我就贴一下基础类,还有

Android简易实战教程--第十七话《自定义彩色环形进度条》

转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533   点击打开链接 在Android初级教程里面,介绍了shape用法的理论知识,再来完成这个小案例将会变得非常简单哦.(欢迎学习阅读):http://blog.csdn.net/qq_32059827/article/details/52203347 点击打开链接 这一篇就针对这个知识点,完成一个自定义的彩色进度条.系统自带的环形进度条是黑白相间的,如果你不是色盲,

Android自定义圆角矩形进度条2

效果图: 或 方法讲解: (1)invalidate()方法 invalidate()是用来刷新View的,必须是在UI线程中进行工作.比如在修改某个view的显示时, 调用invalidate()才能看到重新绘制的界面.invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉.一般在自定义控件中会用到这个方法. (2)RectF方法的应用 RectF是用来绘画矩形的方法. RectF(left,top,right,bottom),四个参数的含义分别是父控件距离矩形左上右下

Android自定义文本的进度条

工作中要求实现如下图中进度条(进度条上面是带比例数的文本,进度条颜色与比例数对应),写下自己的实现过程. 整体思路:Android中ProgressBar控件不支持自定义文本,所以需要写自定义progressBar. 1.progressBar上要自定义文本,需要重写onDraw()方法: 2.为实现进度是红色,底色是灰色效果,需要自定义progressBar样式 代码实现: 1.自定义的ProgressBar实现代码: 1 package com.example.myprogressbar;

Android自定义View——圆形进度条式按钮

介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图. 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态.而且他说圆形进度的功能已经实现了.那么我们只需要对中间的两个状态做处理就行了. 先来看看实现的效果图: 上面说了我们只需要处理中间状态的变化就可以了,对于进度的处理直接使用了弘洋文章中实现: http://blog.csdn.net/lmj623565791/article/details/43371299 下面开始具体实现. 具体实

android自定义渐变圆环进度条

先看下效果: 分析:比较常见于扫描结果.进度条等场景 利用canvas.drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)绘制圆弧 Paint的一些属性定义粗细.颜色.样式等 LinearGradient实现颜色的线型渐变 同样的道理,可以画出长条进度条,扇图饼图等,感兴趣可以试下.. package com.liujing.progressviewdemo; /*** *