Java渐变进度条_Android ProgressBar自定义图片进度,自定义渐变色进度条

java.lang.Object

↳android.view.View

↳android.widget.ProgressBar

直接子类

AbsSeekBar

间接子类

RatingBar, SeekBar

在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中

1、android.widget. ProgressBar,继承自android.view.View 。在android.widget包中。对应对话框ProgressDialog。ProgressBar有两种展示方式,表盘形式(普通、小、大)和条形填充形式。在layout定义时,需要通过设施style属性类设置展示方式。

ProgressBar的样式有四种:

android:progressBarStyle:默认进度条样式,不确定模式

android:progressBarStyleHorizontal:水平进度条样式

android:progressBarStyleLarge :大号进度条样式,也是不确定进度模式

android:progressBarStyleSmall :小号进度条样式,也是不确定进度模式

二、XML重要属性

android:max--  这事进度条长度最大值

android:progressBarStyle:默认进度条样式

android:progressBarStyleHorizontal:水平样式

style="?android:attr/progressBarStyleLarge" --- 属性风格类型--大圆圈,如下图

style=”?android:attr/progressBarStyleSmall”--- 属性风格类型--小圆圈,如下图:

f1e03bf7935f225593e6307397ce8bd3.png

style="?android:attr/progressBarStyleHorizontal"  --水平进度条 --如下图:

96f9bd9369be4433292ab3c421067c95.png

几秒钟之后自动滚到到如下:

99d9ab1887175b629cbfe891fdd19d99.png

也可以用下面的形式代替上面的形式的:

//中

//大圆

//小圆

三、重要方法

getMax():返回这个进度条的范围的上限

getProgress():返回当前进度值

getSecondaryProgress():返回次要当前进度值

incrementProgressBy(int diff):指定增加的进度--即步长

isIndeterminate():指示进度条是否在不确定模式下

setIndeterminate(boolean indeterminate):设置不确定模式下

setVisibility(int v):设置该进度条是否可视

四、重要事件

onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件

接下来看案例:

1.定义一个布局文件progressbar.xml

android:layout_width="fill_parent"

android:layout_height="match_parent"

>

android:layout_width="fill_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/startText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="垂直的----标题上面也有一个进度条哦"

android:textColor="#CD0000"

android:background="#BC8F8F"

/>

android:id="@+id/progtessBer_btn_id1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

style="?android:attr/progressBarStyleLarge"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

style="?android:attr/progressBarStyleSmall"

android:layout_gravity="center_horizontal"

/>

android:id="@+id/startText1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="水平的"

android:textColor="#aaaaaa"

/>

android:id="@+id/progtessBer_btn_id2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

style="?android:attr/progressBarStyleHorizontal"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/progress_text"

/>

2.之后定义java文件:ProgressBarDemo.java

package com.dream.app.start.first.prograssbar;

import com.dream.app.start.MenuDemo;

import com.dream.app.start.R;

import com.dream.app.start.R.id;

import com.dream.app.start.R.layout;

import com.dream.app.start.utils.PublicClass;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.text.method.ScrollingMovementMethod;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.ProgressBar;

import android.widget.TextView;

import android.widget.Toast;

public class ProgressBarDemo extends PublicClass {

private ProgressBar progressbar,progressbar_1;

Button btn1,btn2;

private int prostatus=0;

//创建一个handler对象

private Handler handler=new Handler();

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

//在标题条里放置进度条。请求窗口特色风格,这里设置成不明确的进度风格

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

//设置窗口进度条特性风格

// requestWindowFeature(Window.FEATURE_PROGRESS);

setContentView(R.layout.progressbar);

//设置标题栏中的不明确的进度条是否可以显示,当你需要表示处理中的时候设置为True,处理完毕后设置为false

setProgressBarIndeterminateVisibility(true);

//设置进度条进度值,要乘以100的

// setProgress(60*100);

// setSecondaryProgress(80*100);

btn2=(Button)findViewById(R.id.button_cancel);

//btn2.setOnClickListener(onClick);

progressbar=(ProgressBar)findViewById(R.id.progtessBer_btn_id2);

progressbar_1=(ProgressBar)findViewById(R.id.progtessBer_btn_id1);

//设置进度条的最大值

progressbar.setMax(100000);

progressbar_1.setMax(100000);

//新开启一个进程

new Thread(new Runnable() {

@Override

public void run() {

// 循环1000次,不断地更新prostatus状态值

while (prostatus++<100000) {

//将一个Runnable对象添加到消息队列中去

//并且当执行该对象的时候,执行run

handler.post(new Runnable() {

@Override

public void run() {

//重新设置进度条当前的值

progressbar.setProgress(prostatus);

progressbar_1.setProgress(prostatus);

}

});

}

}

}).start();

}

//toast方法

private void toastshow(String str) {

Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();

}

}

运行效果如下:

6c088b7b02d7894bd4372117c3117ae1.png

ab2e4cb771350d3ab84b9a2b68e0a22c.png

二:用图片实现滚动效果:

1.添加图片到drawable下

ca1bea4df6e5351e51980419d03c7aec.png

2.自定义图片资源文件iamge_progress.xml

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

android:drawable="@drawable/image_progress"

android:pivotX="50%"

android:pivotY="50%"

/>

3.定义布局文件,progress.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center">

android:indeterminateDrawable="@drawable/drawable_progress"

android:layout_height="100dp"

android:layout_width="100dp"/>

运行效果如下:

b8363a70f5971a1aeeaeb1d8ca4092aa.png

4977a8bc141a33c1c6151093369dac58.png

76b7e518d1cda4ef36af7fc492b00ca8.png

1f2ac58f2a20de6f9e8e11958508cc2f.png

三》自定义渐变色进度条:

定义drawable资源文件color_progressbar.xml

android:centerColor="#ff5a5d5a"

android:centerY="0.75"

android:endColor="#ff747674"

android:angle="270"

/>

android:centerColor="#80ffb600"

android:centerY="0.75"

android:endColor="#a0ffcb00"

android:angle="270"

/>

>

android:endColor="#AEEEEE"

android:angle="270" />

2.定义对应的不布局文件:progressbar.xml在此文件中引用我们定义的drawable资源配置文件

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center">

android:id="@+id/color_progressBar"

android:indeterminateDrawable="@drawable/color_progress"

android:layout_height="wrap_content"

android:layout_width="match_parent"/>

或者在代码中给进度条设置自定义资源文件:

效果如下:

75b9e736d00e0407b58d9cd7762b0892.png

a687c503879227a1de74cfa29faebeec.png

四:自定义progressbar颜色:

1.定义一个图片资源文件:

android:fromDegrees="0"

android:pivotX="50%"

android:pivotY="50%"

android:toDegrees="360" >

android:innerRadiusRatio="3"

android:shape="ring"

android:thicknessRatio="8"

android:useLevel="false" >

android:centerColor="#FFFFFF"

android:centerY="0.50"

android:endColor="#FFFF00"

android:startColor="#000000"

android:type="sweep"

android:useLevel="false" />

2.定义布局文件:

android:id="@+id/color_progressBar2"

android:indeterminateDrawable="@drawable/color_progress2"

android:layout_height="wrap_content"

android:layout_width="wrap_content"/>

3.效果:

cc9b626181a821a8b7d25da5c1b3316e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值