14.ProcessBar进度条的应用实例:模拟两个进度条加载

来源:互联网 发布:域名怎么接入阿里云 编辑:程序博客网 时间:2024/05/22 10:41

1.效果描述

在该页面中,有两种进度条的样式:条形和圆形,当我点击开始按钮的时候,进度条出现。然后我们手动点击增加按钮,每次增加10(共100);当进度条的值大于100时,加载完成,进度条消失;此时如果点击重新开始按钮,用户将可以继续点击增加按钮为进度条控制。
目标效果如下图所示:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

2.页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout1"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    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"    android:background="@drawable/bg" >    <LinearLayout         android:layout_marginTop="10dp"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView         android:id="@+id/t1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="开始加载"        android:textSize="24dp"        android:textColor="#FFFFFF"/>        <ProgressBar         android:id="@+id/hor"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"        android:max="100"        style="@android:style/Widget.ProgressBar.Horizontal"/>    </LinearLayout>    <LinearLayout         android:layout_marginTop="10dp"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <TextView         android:id="@+id/t2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="开始加载"        android:textSize="24dp"        android:textColor="#FFFFFF"/>        <ProgressBar         android:id="@+id/circle"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"        android:max="100"        style="?android:attr/progressBarStyleLarge"/>    </LinearLayout>    <LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_marginTop="20dp">        <Button             android:id="@+id/start"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="开始"            android:textSize="24dp"            android:textColor="#FFFFFF"/>        <Button             android:id="@+id/add"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="增加"            android:textSize="24dp"            android:textColor="#FFFFFF"            android:layout_marginLeft="20dp"/>        <Button             android:id="@+id/restart"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="重新开始"            android:textSize="24dp"            android:textColor="#FFFFFF"            android:layout_marginLeft="20dp"/>    </LinearLayout></LinearLayout>

3.事件响应

package com.example.processbardemo;import android.os.Bundle;import android.app.Activity;import android.content.pm.FeatureInfo;import android.view.Menu;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 {    ProgressBar hor=null;    ProgressBar circle=null;    Button start,add,restart;    TextView t1,t2;    int status=0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取所有的控件        hor=(ProgressBar) findViewById(R.id.hor);        circle=(ProgressBar) findViewById(R.id.circle);        start=(Button) findViewById(R.id.start);        add=(Button) findViewById(R.id.add);        restart=(Button) findViewById(R.id.restart);        t1=(TextView) findViewById(R.id.t1);        t2=(TextView) findViewById(R.id.t2);        //先设置开始看到的界面:两个进度条不可见,只有一个开始按钮        hor.setVisibility(View.GONE);        circle.setVisibility(View.GONE);        add.setVisibility(View.GONE);        restart.setVisibility(View.GONE);        //为开始按钮添加动作事件        start.setOnClickListener(new OnClickListener()        {            public void onClick(View arg0)             {                //两个文本框显示正在加载,两个进度条可见,增加按钮出现,开始按钮消失                t1.setText("正在加载");                t2.setText("正在加载");                hor.setVisibility(View.VISIBLE);                circle.setVisibility(View.VISIBLE);                add.setVisibility(View.VISIBLE);                start.setVisibility(View.GONE);            }        });        //为增加按钮设置相应的动作事件        add.setOnClickListener(new OnClickListener()        {            public void onClick(View arg0)            {                if(status==0)                {                    //先为水平进度条的第二进度开始赋值                    hor.setSecondaryProgress(status+10);                }else if(status<=100)                {                    hor.setProgress(status);                    hor.setSecondaryProgress(status);                    circle.setProgress(status);                }else                {                    //此时,进度条加载完成,变成重新开始的页面                    t1.setText("加载完成");                    t2.setText("加载完成");                    hor.setVisibility(View.GONE);                    circle.setVisibility(View.GONE);                    add.setVisibility(View.GONE);                    restart.setVisibility(View.VISIBLE);                    status=0;                }                status+=10;            }        });        //为重新开始按钮添加相应的动作事件        restart.setOnClickListener(new OnClickListener()        {            public void onClick(View arg0)             {                //跳转到增加页面                add.setVisibility(View.VISIBLE);                restart.setVisibility(View.GONE);                t1.setText("正在加载");                t2.setText("正在加载");                hor.setProgress(0);                circle.setProgress(0);                hor.setVisibility(View.VISIBLE);                circle.setVisibility(View.VISIBLE);                hor.setProgress(0);                circle.setProgress(0);            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}
原创粉丝点击