码上敲享录 > android开发实例 > android进度条的实现代码

android进度条的实现代码

上一章章节目录下一章 2018-04-06已有3492人阅读 评论(0)

android进度条的实现代码

解决方法:

1、activity_main.xml

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

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

   android:layout_width="fill_parent"

   android:layout_height="fill_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:id="@+id/root"

   tools:context="com.example.ff.MainActivity" >

     <TextView

       android:id="@+id/txtPercent"

       android:textSize="20sp"

       android:layout_width="match_parent"

       android:gravity="center"

       android:layout_height="wrap_content"

       android:text="加载百分比" />

   <ProgressBar

       android:id="@+id/progressLoader"

       style="?android:attr/progressBarStyleHorizontal"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:layout_below="@+id/txtPercent"

       android:layout_centerHorizontal="true"

       android:layout_marginTop="10dp" />

   <Button

       android:id="@+id/btnBegin"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_below="@+id/progressLoader"

       android:layout_centerHorizontal="true"

       android:layout_marginTop="28dp"

       android:text="开始下载" />

</RelativeLayout>

2、MainActivity.java

package com.example.ff;

import java.sql.Time;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;

public class MainActivity extends Activity {

Button btnBegin;

   TextView txtPercent;

ProgressBar progressLoader;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnBegin = (Button) findViewById(R.id.btnBegin);

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

progressLoader = (ProgressBar) findViewById(R.id.progressLoader);

   btnBegin.setOnClickListener(listenerBegin);

}

//得到一个线程类

class DownloadThread implements Runnable{

//计数从1-100

int i=0 ;

@Override

public void run() {

//把i传递给主线程,放到msg中去,i在类中全局变量,每次都会累加

i++;

//得到消息对象

Message msg = handler.obtainMessage();

//把1放到msg对象中

msg.arg1 = i;

//发送消息

handler.sendMessage(msg);

}

}

//声明一个线程对象

Runnable updateThread;

//得到Handler对象

Handler handler = new Handler(){

//处理消息

@Override

public void handleMessage(Message msg) {

           //得到消息对象中的i

int i = msg.arg1;

//设置进度条的进度

progressLoader.setProgress(i);

//更新文本框

txtPercent.setText("加载" + i + "%");

//判断是否到了100

if(i >= 100){

//将线程队列中移除

handler.removeCallbacks(updateThread);

txtPercent.setText("加载完成");

btnBegin.setEnabled(true);

}else{

//继续处理下一个线程

handler.post(updateThread);

}

super.handleMessage(msg);

}

};

View.OnClickListener listenerBegin = new View.OnClickListener() {

@Override

public void onClick(View v) {

//让进度条可见

progressLoader.setVisibility(View.VISIBLE);

//每次点击都会实例化一个新的线程对象

updateThread = new DownloadThread();

handler.post(updateThread);

//设置按钮不可用

btnBegin.setEnabled(false);

}

};

}

本文地址:http://www.yayihouse.com/yayishuwu/chapter/1157

0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交