android progressBar小结(可改变背景色)
来源:互联网 发布:vb中msgbox用法 编辑:程序博客网 时间:2024/05/16 19:31
主要是通过点击按钮,重新给进度条设值
主程序
package com.prosserbartext;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {private ProgressBar p1;private TextView tv;private Button btn;private int flag = 10;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);p1 = (ProgressBar) findViewById(R.id.progressBar1);tv = (TextView) findViewById(R.id.textView1);btn = (Button) findViewById(R.id.button1);p1.setMax(100);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubp1.setProgress(flag);MainActivity.this.tv.setText(flag + "%");if(flag > 90){flag = 100;}else{flag += 10;}}});}}给进度条设置背景色
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background" android:drawable="@drawable/a"> </item> <item android:id="@android:id/progress" android:drawable="@drawable/b"> </item></layer-list>a.b为两个图片,放在drawable中layout文件
<RelativeLayout 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: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=".MainActivity" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="20dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:max="100" android:progress="0" android:progressDrawable="@drawable/progressbg" android:secondaryProgress="0" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/progressBar1" android:layout_below="@+id/progressBar1" android:layout_marginTop="64dp" android:text="0%" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_alignParentRight="true" android:text="begin" /></RelativeLayout>
在网上有看到一个自定义的,加到这里跟大家分享。转自:http://www.eoeandroid.com/thread-182511-1-1.html
一般的ProgressBar都只是一个光光的条(这里说的都是水平进度条),虽然比不用进度条时给用户的感觉要好,但是如果在形像化的东西上面再加上点文字,将进度描述量化,就可以让用户更加明白当前进度是多少了。
有了需求,就可以开始实现了。
这里的原理就是继承一个ProgressBar,然后重写里面的onDraw()方法。
不多说,直接上码。(下面代码中的package hol.test; ,import就不写了)public class MyProgress extends ProgressBar{String text;Paint mPaint; public MyProgress(Context context) {super(context);// TODO Auto-generated constructor stubSystem.out.println("1");initText();} public MyProgress(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stubSystem.out.println("2");initText();} public MyProgress(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubSystem.out.println("3");initText();} @Overridepublic synchronized void setProgress(int progress) {// TODO Auto-generated method stubsetText(progress);super.setProgress(progress); } @Overrideprotected synchronized void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);//this.setText();Rect rect = new Rect();this.mPaint.getTextBounds(this.text, 0, this.text.length(), rect);int x = (getWidth() / 2) - rect.centerX();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) + "%";} }
这样一个可以满足我们基本需求的进度条就写好了。 用的时候就可以直接在layout的XML里面加了,不过添加的写法稍微有点不同。标记名要写成这个自定义进度条的完整类名,就像下面这样。
<hol.test.MyProgressandroid:id="@+id/pgsBar"android:max="100"android:layout_width="fill_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:visibility="visible"/>
这样写后,可能会因为命名空间改变,下面属性无法用代码提示。一个简单的做法就是,先写一个正常的ProgressBar的标记,把属性写完后,再将ProgressBar替换为我们自定义的进度条的完整类名。 最后,使用方法就和普通的ProgressBar差不多了。public class ProgressTest extends Activity { private Button btn_go = null;private MyProgress myProgress = null;private Handler mHandler; /** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);findView();setParam();addListener(); mHandler = new Handler(new Callback() { @Overridepublic boolean handleMessage(Message msg) {// TODO Auto-generated method stubmyProgress.setProgress(msg.what);return false;}}); } private void findView(){btn_go = (Button) findViewById(R.id.btn_go);myProgress = (MyProgress) findViewById(R.id.pgsBar);} private void setParam(){btn_go.setText("开始");}private void addListener(){btn_go.setOnClickListener(new OnClickListener() { @Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubfor(int i = 0;i <=50; i++){mHandler.sendEmptyMessage(i * 2);try {Thread.sleep(80);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}).start();}});}}
0 1
- android progressBar小结(可改变背景色)
- Android 不均匀刻度的ProgressBar,渐变背景色的ProgressBar
- Android改变button背景色与获取button背景色
- Android日历控件,还未实现点击日期改变背景色但可获取日期
- 改变android 选项卡的背景色
- android中改变标题栏的背景色
- Android改变状态栏statusbar背景色
- android 改变状态栏的背景色
- Android:自定义ProgressBar的样式(背景色/一级、二级进度条颜色)
- eui.Button改变文本、背景色及是否可点击
- 改变背景色
- 对话框改变背景色
- 改变窗口背景色
- 改变Eclipse背景色
- 改变对话框背景色
- 改变对话框背景色
- UISearchBar 改变背景色
- Eclipse 改变背景色
- 基本语言细节--《The C++ Programming Language 》--(5) 软件大厦中的C++
- 可变参数的宏定义
- Apache Worker模式提高效率
- centos 6.4 下 tftp 的配置
- 关于制定so动态链接库文件需要注意的问题
- android progressBar小结(可改变背景色)
- jquery实现滚动条下拉DIV固定在头部不动
- vs2012安装opencv运行报错fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- 常用的web容器介绍
- ORA-12154: TNS: 无法解析指定的连接标识符
- Photography Summary
- 从知到行,遥感这点事
- SQL复习大全
- RHEL5下搭建DNS服务器