水平进度条ProgressBar

有些时间没来写了 ,接下来继续分享下本姑娘写的水平进度条,望能帮到初学者~~~

MainActivity

package com.lanzx.customprogressbar;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;

public class MainActivity extends Activity {

private TextView textnumber;

private int num;

private int progress=0;

private Message message;

CustomProgressBar bar;

private Handler handler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

int p=msg.what;

//mPbar.setProgress(p);

bar.setProgress(p);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textnumber = (TextView)findViewById(R.id.textnumber);

num = (int) (Math.random()*100);

textnumber.setText(String.valueOf(num+"/100").toString());

//拿到自定义的进度条

bar = (CustomProgressBar) findViewById(R.id.item_progress_SeekBar);

//设置进度条的最大值

bar.setMax(100);

//设置进度值

bar.setProgress(60);

//开启线程

new Thread(yuanlirunnable).start();

}

Runnable yuanlirunnable=new Runnable() {

@Override

public void run() {

message=handler.obtainMessage();

try {

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

/*

* 在这里控制进度

*/

//int x=++progress;

//int randomnumberprogress=(int) (Math.random()*100);

//int x=randomnumberprogress;

int x=num;

message.what=x;

handler.sendEmptyMessage(message.what);

Thread.sleep(100);

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

};

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

CustomProgressBar类

package com.lanzx.customprogressbar;

import android.content.Context;

import android.graphics.drawable.shapes.RoundRectShape;

import android.graphics.drawable.shapes.Shape;

import android.util.AttributeSet;

import android.widget.ProgressBar;

public class CustomProgressBar extends ProgressBar {

public CustomProgressBar(Context context) {

super(context);

}

public CustomProgressBar(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

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

this(context, attrs, defStyle,0);

}

public CustomProgressBar(Context context, AttributeSet attrs, int defStyle, int styleRes) {

super(context, attrs, defStyle);

}

@Override

protected synchronized void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

//进度条圆角度

public final int roundCorners = 15;

Shape getDrawableShape() {

final float[] roundedCorners = new float[] { 0, 0, 0, 0, 0, 0, 0, 0 };

for(int i=0;i<roundedCorners.length;i++){

roundedCorners[i] = dp2px(getContext(), roundCorners);

}

return new RoundRectShape(roundedCorners, null, null);

}

/**dp转换成px*/

public static float dp2px(Context context, float dp) {

final float scale = context.getResources().getDisplayMetrics().density;

return dp * scale;

}

}

activity_main.xml布局

<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:background="@android:color/black"

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="com.lanzx.customprogressbar.MainActivity" >

<com.lanzx.customprogressbar.CustomProgressBar

android:id="@+id/item_progress_SeekBar"

style="?android:attr/progressBarStyleHorizontal"

android:layout_width="fill_parent"

android:layout_height="30dp"

android:layout_marginLeft="30dp"

android:layout_marginRight="30dp"

android:layout_marginTop="100dp"

android:indeterminateOnly="false"

android:max="100"

android:progress="60"

android:progressDrawable="@drawable/progressbar_drawable"

android:visibility="visible" />

<TextView

android:id="@+id/textnumber"

android:layout_width="wrap_content"

android:layout_height="20dip"

android:layout_alignBottom="@+id/item_progress_SeekBar"

android:layout_alignRight="@+id/item_progress_SeekBar"

android:layout_marginBottom="40dp"

android:text="/100"

android:textColor="#FFFFFF"

android:textSize="15dip" />

</RelativeLayout>

progressbar_drawable.xml    (drawable文件中)

<?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:bottomLeftRadius="15dp"

android:bottomRightRadius="15dp"

android:topLeftRadius="15dp"

android:topRightRadius="15dp" />

<solid android:color="#C9C7C7" /> <!-- #bfbfbf   这里是进度条的颜色 -->

<stroke

android:dashWidth="2dip"

android:width="2dip"

android:color="#79E911" /><!-- 描边 -->

</shape>

</item>

<!-- 填充进度的颜色 -->

<item

android:id="@android:id/progress"

android:drawable="@drawable/red">

</item>

</layer-list>

main.xml    (menu文件中)

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

tools:context="com.lanzx.customprogressbar.MainActivity" >

<item

android:id="@+id/action_settings"

android:orderInCategory="100"

android:showAsAction="never"

android:title="@string/action_settings"/>

</menu>

效果图如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-17 01:03:27

水平进度条ProgressBar的相关文章

Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)

/** * 带文本提示的进度条 */ public class TextProgressBar extends ProgressBar { private String text; private Paint mPaint; public TextProgressBar(Context context) { super(context); initText(); } public TextProgressBar(Context context, AttributeSet attrs, int d

安卓ProgressBar水平进度条的颜色设置

安卓系统提供了水平进度条ProgressBar的样式,而我们在实际开发中,几乎不可能使用默认的样式,原因就是"太丑"^_^ 所以我们在更多的时候需要对其颜色进行自定义,主要使用就是自定义样式文件. 再在drawable目录下新增progressbar.xml文件,可以设置默认背景色和进度条的颜色 (值得一提的是支持渐变色) 代码: <layer-list xmlns:android="http://schemas.android.com/apk/res/android&

Android零基础入门第51节:进度条ProgressBar

不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有APP的开发,还会经常用到一些诸如进度条.拖动条.搜索框.时间和日期选择器等组件,那么后面几期就来一起学习这些高级组件. 一.ProgressBar系列组件 ProgressBar也是一组重要的组件,ProgressBar本身代表了进度条组件,它还派生了两个常用的组件:SeekBar和RatingBar.ProgressBar及其子类在用法上十分相似,只是显示界面有一定的

android progressbar 水平进度条

<?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="@

Android简易实战教程--第二十二话《简单的水平进度条》

本打算写一篇自定义水平进度条,但是出于过度和文章的完整性,今天先来一篇简单的进度条. 需求:按钮点击,实现水平进度条加载进度.而且,进度条设置两个进度(到下边的例子里就能知道什么是"第二进度条"了) 配置文件代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re

自定义水平进度条样式:黑色虚线

布局layout中使用: 1 <ProgressBar 2 android:id="@+id/progress_bar" 3 style="?android:attr/progressBarStyleHorizontal" <!--必须设置为水平--> 4 android:progressDrawable="@drawable/myprogress" <!--此处用自定义样式--> 5 android:layout_

进度条ProgressBar及ProgressDialog

Main代码 1 package processdemo.example.administrator.processbardemo; 2 3 import android.app.Dialog; 4 import android.app.ProgressDialog; 5 import android.content.DialogInterface; 6 import android.os.Bundle; 7 import android.support.v7.app.AppCompatActi

Android学习笔记:进度条ProgressBar和线程

ProgressBar是进度条,android中的指示器,先看效果图 上图中水平进度条可以看见有两种颜色,浅色的是SecondaryProgress,可以用作展示中间进度用. ProgressBar是有多种样式的,有水平的和圆圈打转的.若需要指示进度的可以使用水平的,其他样式在可以在android api文档找到 Other progress bar styles provided by the system include: Widget.ProgressBar.Horizontal Widg

自定义Android进度条ProgressBar样式

进度条在Android应用中随处或见,都是为用户提供一个提示,用来增加用户的体验度!进度条样式多种多样,有圆形的,有条形的,有垂直方向的,也有水平方向的.Android系统也是我们提供了好几种默认的样式,今天我们来讲讲自定义样式的ProgressBar. 下面用个很小(又是很小)的例子: -------------------------xml布局-------------------------------------------- <ProgressBar android:id="@+