结构:

Activity:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
  4. android:layout_width="match_parent" android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context="com.example.top5.MainActivity">
  10.  
  11. <com.example.top5_3.MyProgressBar
  12. android:id="@+id/pb"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. android:max=""
  16. style="@android:style/Widget.ProgressBar.Horizontal"/>
  17. </RelativeLayout>

JAVA:

MainActivity:

  1. package com.example.top5_3;
  2.  
  3. import android.app.Activity;
  4. import android.os.Handler;
  5. import android.os.Message;
  6.  
  7. import android.os.Bundle;
  8. import android.view.Menu;
  9. import android.widget.ProgressBar;
  10.  
  11. public class MainActivity extends Activity {
  12. private MyProgressBar pb;
  13.  
  14. Handler hd = new Handler() {
  15. public void handleMessage(Message msg) {
  16. pb.setProgress(msg.what);
  17. }
  18. };
  19.  
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. pb = (MyProgressBar) findViewById(R.id.pb);
  24. new Thread(new Runnable() {
  25. @Override
  26. public void run() {
  27. for (int i = ; i <= ; i+=) {
  28. Message mg = new Message();
  29. mg.what = i;
  30. hd.sendMessage(mg);
  31. try {
  32. Thread.sleep();
  33. } catch (InterruptedException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. }
  38. }).start();
  39. }
  40.  
  41. public boolean onCreateOptionsMenu(Menu menu)
  42. {
  43. getMenuInflater().inflate(R.menu.main, menu);
  44. return true;
  45. }
  46.  
  47. }

MyProgressBar:

  1. package com.example.top5_3;
  2.  
  3. import java.text.MessageFormat;
  4.  
  5. import android.content.Context;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Paint;
  9. import android.graphics.Paint.Align;
  10. import android.graphics.Paint.FontMetrics;
  11. import android.util.AttributeSet;
  12. import android.widget.ProgressBar;
  13.  
  14. public class MyProgressBar extends ProgressBar {
  15. private Paint paint=new Paint();
  16. public MyProgressBar(Context context) {
  17. super(context);
  18. // TODO Auto-generated constructor stub
  19. }
  20. public MyProgressBar(Context cont,AttributeSet attrs) {
  21. // TODO Auto-generated constructor stub
  22. super(cont,attrs);
  23. }
  24. protected synchronized void onDraw(Canvas cv){
  25. super.onDraw(cv);
  26. //进度天百分比
  27. int reta=(int)((double)getProgress()/this.getMax()*);
  28. //要绘制的文字
  29. String tip=MessageFormat.format("{0}%",reta);
  30. //设置文字对齐方式
  31. paint.setTextAlign(Align.CENTER);
  32. //设置文字颜色
  33. paint.setColor(Color.BLUE);
  34. //设置字体大小
  35. paint.setTextSize();
  36. //Canvas绘制文本时,使用 fontMetrics对象,计算坐标位置
  37. FontMetrics fmt=paint.getFontMetrics();
  38. int h=(int)((fmt.bottom-fmt.top)/-fmt.bottom);
  39. //进行绘制
  40. cv.drawText(tip, this.getWidth()/, this.getHeight()/+h, paint);
  41.  
  42. }
  43. }

运行效果:

TOP5_3:定制简单的进度条的更多相关文章

  1. 使用原生JS+CSS或HTML5实现简单的进度条和滑动条效果(精问)

    使用原生JS+CSS或HTML5实现简单的进度条和滑动条效果(精问) 一.总结 一句话总结:进度条动画效果用animation,自动效果用setIntelval 二.使用原生JS+CSS或HTML5实 ...

  2. Winfrom 简单的进度条小程序

    使用Winform空间编写简单的进度条小程序: 所需控件:Lable 标签  TextBox  文本框  progressBar  进度条控件  timer 定时器 下面是源码及效果图: /// &l ...

  3. Linux shell 下简单的进度条实现

    Linux shell 下简单的进度条实现 [root@db145 ~]# cat print_process.sh function Proceess(){ spa='' i= ] do print ...

  4. Python——一个简单的进度条的实现

    import math def process_bar(total_work,work_index,length): times = total_work / length # 长度倍数,用来缩放或扩 ...

  5. html + css + jquery实现简单的进度条实例

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  6. Linux中实现一个简单的进度条【转】

    转自:http://blog.csdn.net/yuehailin/article/details/53999288 说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的 ...

  7. Linux简单的进度条

    echo '进度条' i= bar="" ] do let idx=i% printf "[%-100s][%d%%]\r" "$bar" ...

  8. python中实现一个简单的进度条

    import time def progress(n,a): m = int(n / a * 100) x = int(n / a * 10) time.sleep(0.2) #只是为了让进度条明显 ...

  9. HTML5+CSS+JQuery 实现简单的进度条功能

    样式: <style type="text/css"> .processcontainer2{ width:450px; border:1px solid #6C9C2 ...

随机推荐

  1. 学习swift从青铜到王者之字符串和运算符02

    1 字符和字符串初步  var c :Character = "a" 2 构造字符串  let str1 = "hello" let str2 = " ...

  2. 【CV论文阅读】生成式对抗网络GAN

    生成式对抗网络GAN 1.  基本GAN 在论文<Generative Adversarial Nets>提出的GAN是最原始的框架,可以看成极大极小博弈的过程,因此称为“对抗网络”.一般 ...

  3. hdu 4291 矩阵幂 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=4291 凡是取模的都有循环节-----常数有,矩阵也有,并且矩阵的更奇妙: g(g(g(n))) mod 109  ...

  4. 【DataStructure】Charming usage of Set in the java

    In an attempt to remove duplicate elements from list, I go to the lengths to take advantage of  meth ...

  5. 浅谈MySQL load data local infile细节 -- 从源码层面

    相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢? 首先,了解一下流程: 3个 ...

  6. HttpUtils 发送http请求工具类

    import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URISyntaxEx ...

  7. easyUI的getChanges中的inserted

    easyUI中的datagrid.treegrid编辑了数据,可以用getChanges命令来获取更新情况.按道理,有"inserted"."updated". ...

  8. 2016/1/27 1, File 创建 删除 改名 换路径 2,输出流 不覆盖 换行输入 3,输入流

    1, File  创建  删除  改名  换路径 package Stream; import java.io.File; import java.io.IOException; public cla ...

  9. 脱离开发软件启动Tomcat访问项目

    作为开发人员平时用的最多的就是通过开发软件启动Tomcat服务,从而访问项目.这样便于开发的bug调试 此处讲的是脱离开发软件启动Tomcat访问项目 链接参考: http://jingyan.bai ...

  10. Oracle存储过程(增、删、改)写法、oracle执行存储过程

    Oracle存储过程(增.删.改)写法 发布时间: 2010-3-24 11:07    作者: ZHF    来源: 51Testing软件测试网采编 字体:  小  中  大  | 上一篇 下一篇 ...