ProgressBar进度条相关
Posted 故意的是吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ProgressBar进度条相关相关的知识,希望对你有一定的参考价值。
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.bcp.progressbartest.MainActivity">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar2" />
<ProgressBar
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar3" />
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/horiz"
android:max="100"
android:progress="50"
android:secondaryProgress="80"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:id="@+id/add" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reduce"
android:id="@+id/reduce" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset"
android:id="@+id/reset" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/show"
android:id="@+id/show" />
</LinearLayout>
JAVA
package com.bcp.progressbartest;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
/***
* ProgressBar
* 进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉程序失去了响应
* 目标:
* 1、制定ProgressBar显示风格
* style="?android:attr/progressBarStyleLarge" 大环形进度条
* style="?android:attr/progressBarStyleSmall" 小环形进度条
* style="?android:attr/progressBarStyleHorizontal" 水平进度条
*
* 2、ProgressBar的分类
* a、可以精确显示进度(可以显示刻度或者百分比)
* b、不显示精确进度(类似过场动画,一直转动)
*
* 3、标题上ProgressBar的设置
*android studio 中吧MainActivity继承自AppCompatActivity,
* 改成Activity后 在AndroidManifest.xml中的<activity>的属性里添加
* android:theme="@android:style/Theme.Holo" 就能显示了
*
* 4、ProgressBar的关键属性
* 进度条可以显示两条,一条深色一条浅色。类似缓冲量和播放量的进度条,
* 通过已有进度除以总进度可以算出百分比
*
* android:max="100" 最大显示进度
* android:progress="50" 第一显示进度
* android:secondaryProgress="80" 第二显示进度
* android:indeterminate="true" 设置是否精确显示
* 注意:true标示不精确显示进度,false表示精确显示进度
*
* 5、ProgressBar的关键方法
* a、setProgress(int) 设置第一进度
* b、setSecondaryProgress(int) 设置第二进度
* c、getProgress() 获取第一进度
* d、getSecondaryProgress() 获取第二进度
* e、incrementProgressBy(int) 增加或减少第一进度
* f、incrementSecondaryProgressBy(int) 增加或减少第二进度
* g、getMax() 获取最大进度
*
* 6、ProgressDialog的基础使用
*
* 7、自定义ProgressBar样式
*
* 横向进度条的属性实质是路径 “@android:style/Widget.ProgressBar.Horizontal”
* 向上追到系统默认属性查看,可以自定义属性替换系统默认的属性
*/
public class MainActivity extends Activity implements View.OnClickListener
private ProgressBar progress;
private Button add;
private Button reduce;
private Button reset;
private TextView text;
private ProgressDialog prodialog;
private Button show;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
//启用窗口特征。启用带进度和不带进度的进度天
//带进度条
requestWindowFeature(Window.FEATURE_PROGRESS);
//不带进度条
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
//显示两种进度条 带刻度
setProgressBarVisibility(true);
//设置刻度,最大值为1000,是完成状态
setProgress(6000);
//android studio 中吧MainActivity继承自AppCompatActivity,改成Activity后
// 在AndroidManifest.xml中的<activity>的属性里添加android:theme="@android:style/Theme.Holo" 就能显示了
//不带刻度
setProgressBarIndeterminateVisibility(true);
//创建一个方法集体创建对象
init();
private void init()
progress= (ProgressBar) findViewById(R.id.horiz);
add=(Button)findViewById(R.id.add);
reduce=(Button)findViewById(R.id.reduce);
reset=(Button)findViewById(R.id.reset);
text= (TextView) findViewById(R.id.text);
show= (Button) findViewById(R.id.show);
show.setOnClickListener(this);
//getProgress()获取第一进度条进度
int first=progress.getProgress();
//获取第二条的进度
int second=progress.getSecondaryProgress();
int max=progress.getMax();
//获取进度条百分比,int先转float相除后乘以100再转int加上%
text.setText("First:"+(int)(first/(float)max*100)+"% Second:"+(int)(second/(float)max*100)+"%");
//设置按钮监听器
add.setOnClickListener(this);
reduce.setOnClickListener(this);
reset.setOnClickListener(this);
@Override
public void onClick(View view)
switch (view.getId())
//增加两个进度条10刻度
case R.id.add:
progress.incrementProgressBy(10);
progress.incrementSecondaryProgressBy(10);
break;
//减少两个进度条10刻度
case R.id.reduce:
progress.incrementProgressBy(-10);
progress.incrementSecondaryProgressBy(-10);
break;
//重置时恢复默认值
case R.id.reset:
progress.setProgress(50);
progress.setSecondaryProgress(80);
break;
//点击show按钮
case R.id.show:
/***
* 设置页面风格
*/
//新建ProgressDialog对象
prodialog=new ProgressDialog(MainActivity.this);
//设置显示风格
prodialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置标题
prodialog.setTitle("BCP");
//设置对话框内的内容
prodialog.setMessage("Welcome!");
//添加图标
prodialog.setIcon(R.mipmap.ic_launcher);
/***
* 设置关于进度条的属性
*/
//设置进度条最大刻度
prodialog.setMax(100);
//初始进度
prodialog.incrementProgressBy(50);
prodialog.incrementSecondaryProgressBy(70);
//设置明确显示进度
prodialog.setIndeterminate(false);
/***
* 设定对话框按钮
*/
prodialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定",
new DialogInterface.OnClickListener( )
@Override
public void onClick(DialogInterface dialogInterface, int i)
Toast.makeText(MainActivity.this, "成功显示", Toast.LENGTH_SHORT).show();
);
//是否可以通过返回按钮退出对话框
prodialog.setCancelable(true);
//显示出来ProgressDialog
prodialog.show();
break;
text.setText("First:"+(int)(progress.getProgress()/(float)progress.getMax()*100)+
"% Second:"+(int)(progress.getSecondaryProgress()/(float)progress.getMax()*100)+"%");
以上是关于ProgressBar进度条相关的主要内容,如果未能解决你的问题,请参考以下文章
android布局文件里的ProgressBar长形进度条怎么自定义样式