android progress 集合(转载)

转载地址:http://blog.csdn.net/playboyanta123/article/details/7934789

普通圆形ProgressBar

该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中。

一般只要在XML布局中定义就可以了。

  1. <progressBar android:id="@+id/widget43"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:layout_gravity="center_vertical">
  5. </ProgressBar>

此时,没有设置它的风格,那么它就是圆形的,一直会旋转的进度条。

各大小样式圆形ProgressBar

超大号圆形ProgressBar

此时,给设置一个style风格属性后,该ProgressBar就有了一个风格,这里大号ProgressBar的风格是:

  1. style="?android:attr/progressBarStyleLarge"

完整XML定义是:

  1. <progressBar android:id="@+id/widget196"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. style="?android:attr/progressBarStyleLarge">
  5. </ProgressBar>

小号圆形ProgressBar

小号ProgressBar对应的风格是:

  1. style="?android:attr/progressBarStyleSmall"

标题型圆形ProgressBar

标题型ProgressBar对应的风格是:

  1. style="?android:attr/progressBarStyleSmallTitle"

完整XML定义是:

  1. <progressBar android:id="@+id/widget110"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. style="?android:attr/progressBarStyleSmallTitle">
  5. </ProgressBar>

代码中实现:

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. // TODO Auto-generated method stub
  4. super.onCreate(savedInstanceState);
  5. requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  6. //请求窗口特色风格,这里设置成不明确的进度风格
  7. setContentView(R.layout.second);
  8. setProgressBarIndeterminateVisibility(true);
  9. //设置标题栏中的不明确的进度条是否可以显示
  10. }

长形进度条

布局中的长形进度条

①首先在XML进行布局

  1. <progressBar android:id="@+id/progressbar_updown"
  2. android:layout_width="200dp"
  3. android:layout_height="wrap_content"
  4. style="?android:attr/progressBarStyleHorizontal"
  5. android:layout_gravity="center_vertical"
  6. android:max="100"
  7. android:progress="50"
  8. android:secondaryProgress="70"    >

讲解: 

②代码中运用

  1. private ProgressBar myProgressBar;
  2. //定义ProgressBar
  3. myProgressBar = (ProgressBar) findViewById(R.id.progressbar_updown);
  4. //ProgressBar通过ID来从XML中获取
  5. myProgressBar.incrementProgressBy(5);
  6. //ProgressBar进度值增加5
  7. myProgressBar.incrementProgressBy(-5);
  8. //ProgressBar进度值减少5
  9. myProgressBar.incrementSecondaryProgressBy(5);
  10. //ProgressBar背后的第二个进度条 进度值增加5
  11. myProgressBar.incrementSecondaryProgressBy(-5);
  12. //ProgressBar背后的第二个进度条 进度值减少5

页面标题中的长形进度条

代码实现:
①先设置一下窗口风格特性

  1. requestWindowFeature(Window.FEATURE_PROGRESS);
  2. //请求一个窗口进度条特性风格
  3. setContentView(R.layout.main);
  4. setProgressBarVisibility(true);
  5. //设置进度条可视

②然后设置进度值

  1. setProgress(myProgressBar.getProgress() * 100);
  2. //设置标题栏中前景的一个进度条进度值
  3. setSecondaryProgress(myProgressBar.getSecondaryProgress() * 100);
  4. //设置标题栏中后面的一个进度条进度值
  5. //ProgressBar.getSecondaryProgress() 是用来获取其他进度条的进度值

ProgressDialog

ProgressDialog中的圆形进度条

ProgressDialog一般用来表示一个系统任务或是开启任务时候的进度,有一种稍等的意思。
代码实现:

  1. ProgressDialog mypDialog=new ProgressDialog(this);
  2. //实例化
  3. mypDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  4. //设置进度条风格,风格为圆形,旋转的
  5. mypDialog.setTitle("Google");
  6. //设置ProgressDialog 标题
  7. mypDialog.setMessage(getResources().getString(R.string.second));
  8. //设置ProgressDialog 提示信息
  9. mypDialog.setIcon(R.drawable.android);
  10. //设置ProgressDialog 标题图标
  11. mypDialog.setButton("Google",this);
  12. //设置ProgressDialog 的一个Button
  13. mypDialog.setIndeterminate(false);
  14. //设置ProgressDialog 的进度条是否不明确
  15. mypDialog.setCancelable(true);
  16. //设置ProgressDialog 是否可以按退回按键取消
  17. mypDialog.show();
  18. //让ProgressDialog显示

ProgressDialog中的长形进度条

代码实现:

  1. ProgressDialog mypDialog=new ProgressDialog(this);
  2. //实例化
  3. mypDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  4. //设置进度条风格,风格为长形,有刻度的
  5. mypDialog.setTitle("地狱怒兽");
  6. //设置ProgressDialog 标题
  7. mypDialog.setMessage(getResources().getString(R.string.second));
  8. //设置ProgressDialog 提示信息
  9. mypDialog.setIcon(R.drawable.android);
  10. //设置ProgressDialog 标题图标
  11. mypDialog.setProgress(59);
  12. //设置ProgressDialog 进度条进度
  13. mypDialog.setButton("地狱曙光",this);
  14. //设置ProgressDialog 的一个Button
  15. mypDialog.setIndeterminate(false);
  16. //设置ProgressDialog 的进度条是否不明确
  17. mypDialog.setCancelable(true);
  18. //设置ProgressDialog 是否可以按退回按键取消
  19. mypDialog.show();
  20. //让ProgressDialog显示

AlertDialog.Builder

AlertDialog中的圆形ProgressBar

①先来设计一个Layout,待会儿作为一个View,加入AlertDialog.Builder

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_gravity="center_horizontal"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content">
  6. <LinearLayout android:id="@+id/LinearLayout01"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content">
  9. </LinearLayout>
  10. <ProgressBar android:layout_gravity="center_vertical|center_horizontal"
  11. android:layout_height="wrap_content"
  12. android:progress="57"
  13. android:id="@+id/myView_ProgressBar2"
  14. android:layout_width="wrap_content">
  15. </ProgressBar>
  16. </LinearLayout>

②代码罗

  1. private AlertDialog.Builder AlterD,AlterD2;
  2. //定义提示对话框
  3. private LayoutInflater layoutInflater;
  4. //定义布局过滤器
  5. private LinearLayout myLayout;
  6. //定义布局
  7. layoutInflater2=(LayoutInflater) getSystemService(this.LAYOUT_INFLATER_SERVICE);
  8. //获得系统的布局过滤服务
  9. myLayout2=(LinearLayout) layoutInflater2.inflate(R.layout.roundprogress, null);
  10. //得到事先设计好的布局
  11. AlterD2.setTitle(getResources().getString(R.string.RoundO));
  12. //设置对话框标题
  13. AlterD2.setIcon(R.drawable.ma);
  14. //设置对话框图标
  15. AlterD2.setMessage(getResources().getString(R.string.ADDView));
  16. //设置对话框提示信息
  17. AlterD2.setView(myLayout2);
  18. //设置对话框中的View
  19. AlterD2.show();
  20. //让对话框显示

AlertDialog中的长形ProgressBar(可控制)

①先来设计一个Layout,待会儿作为一个View,加入AlertDialog.Builder

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_gravity="center_horizontal"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content">
  6. <Button
  7. android:layout_height="wrap_content"
  8. android:text="-"
  9. android:layout_width="50dp"
  10. android:id="@+id/myView_BT_Down">
  11. </Button>
  12. <ProgressBar
  13. android:layout_gravity="center_vertical"
  14. android:layout_height="wrap_content"
  15. style="?android:attr/progressBarStyleHorizontal"
  16. android:id="@+id/myView_ProgressBar"
  17. android:progress="57"
  18. android:layout_width="178dp">
  19. </ProgressBar>
  20. <Button android:layout_height="wrap_content"
  21. android:text="+"
  22. android:layout_width="50dp"
  23. android:id="@+id/myView_BT_Up">
  24. </Button>
  25. </LinearLayout>

②代码罗

  1. private AlertDialog.Builder AlterD,AlterD2;
  2. //定义提示对话框
  3. private LayoutInflater layoutInflater;
  4. //定义布局过滤器
  5. private LinearLayout myLayout;
  6. //定义布局
  7. layoutInflater=(LayoutInflater) getSystemService(this.LAYOUT_INFLATER_SERVICE);
  8. //获得系统的布局过滤服务
  9. myLayout=(LinearLayout) layoutInflater.inflate(R.layout.myview, null);
  10. //得到事先设计好的布局
  11. myup=(Button) myLayout.findViewById(R.id.myView_BT_Up);
  12. mydown=(Button) myLayout.findViewById(R.id.myView_BT_Down);
  13. mypro=(ProgressBar)myLayout.findViewById(R.id.myView_ProgressBar);
  14. //通过myLayout.findViewById来获取自定义View中的Widget控件元素
  15. myup.setOnClickListener(this);
  16. //设置对话框View中的按钮监听器
  17. mydown.setOnClickListener(this);
  18. //设置对话框View中的按钮监听器
  19. mypro.setProgress(Tag);
  20. //设置一个Tag作为进度值
  21. AlterD.setTitle(getResources().getString(R.string.RectO));
  22. //设置对话框标题
  23. AlterD.setIcon(R.drawable.mb);
  24. //设置对话框图标
  25. AlterD.setMessage(getResources().getString(R.string.ADDView));
  26. //设置对话框提示信息
  27. AlterD.setView(myLayout);
  28. //设置对话框添加的View
  29. AlterD.setPositiveButton("OK", new DialogInterface.OnClickListener(){
  30. @Override
  31. public void onClick(DialogInterface dialog, int which) {
  32. // TODO Auto-generated method stub
  33. MyProgressBar.Tag=mypro.getProgress();
  34. }});
  35. //设置对话框按钮,以及按钮的事件监听器
  36. AlterD.show();
  37. //让对话框显示

③进度条进度值的按钮事件

  1. myup.setOnClickListener(this);
  2. //设置对话框View中的按钮监听器
  3. mydown.setOnClickListener(this);
  4. //设置对话框View中的按钮监听器
  5. 对应的代码:
  6. @Override
  7. public void onClick(View button) {
  8. // TODO Auto-generated method stub
  9. SwitchUPorDown(button);
  10. }
  11. private void SwitchUPorDown(View button) {
  12. switch (button.getId()) {
  13. case R.id.myView_BT_Up: {
  14. mypro.incrementProgressBy(1);
  15. }
  16. break;
  17. case R.id.myView_BT_Down: {
  18. mypro.incrementProgressBy(-1);
  19. }
  20. break;
  21. default:
  22. break;
  23. }
  24. }

App Widget中的进度条

Widget中的圆形ProgressBar

这个很简单,在Widget中没有多大意思,不再敷述。

Widget中的长形ProgressBar(可控制)

Widget的实现就不再重复,假设您已经把Widget布局,相应设置已经设置好了。也可以在桌面加入类似上面图中的样式。
现在我们来实现一下按钮事件,与进度条的交互。
下面还是简单讲解一下Widget的设计与部署。

①设计Widget布局

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:background="@drawable/widget"
  5. android:layout_height="74dp"
  6. android:layout_width="296dp">
  7. <Button
  8. android:layout_height="wrap_content"
  9. android:text="-"
  10. android:layout_gravity="center_vertical"
  11. android:layout_width="50dp"
  12. android:id="@+id/widget_BT_Down"
  13. android:layout_marginLeft="10dp">
  14. </Button>
  15. <ProgressBar
  16. android:layout_gravity="center_vertical"
  17. android:layout_height="wrap_content"
  18. style="?android:attr/progressBarStyleHorizontal"
  19. android:layout_width="178dp"
  20. android:id="@+id/widget_ProgressBar">
  21. </ProgressBar>
  22. <Button
  23. android:layout_height="wrap_content"
  24. android:text="+"
  25. android:layout_gravity="center_vertical"
  26. android:layout_width="50dp"
  27. android:id="@+id/widget_BT_Up">
  28. </Button>
  29. </LinearLayout>

②新增一个.res/xml目录,加入appwidget-provider

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <appwidget-provider
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:initialLayout="@layout/widgetlayout"
  5. android:updatePeriodMillis="8660000"
  6. android:minWidth="296dp"
  7. android:minHeight="74dp">
  8. </appwidget-provider>

③实现一个AppWidgetProvider子类

  1. package zyf.test.ProgressBar;
  2. import android.appwidget.AppWidgetManager;
  3. import android.appwidget.AppWidgetProvider;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. public class App extends AppWidgetProvider {
  7. @Override
  8. public void onEnabled(Context context) {
  9. // TODO Auto-generated method stub
  10. super.onEnabled(context);
  11. }
  12. @Override
  13. public void onReceive(Context context, Intent intent) {
  14. // TODO Auto-generated method stub
  15. super.onReceive(context, intent);
  16. }
  17. @Override
  18. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  19. int[] appWidgetIds) {
  20. // TODO Auto-generated method stub
  21. super.onUpdate(context, appWidgetManager, appWidgetIds);
  22. }
  23. }

④配置Manifest,进行注册

  1. <receiver android:name="AppWidget">
  2. <intent-filter>
  3. <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
  4. </intent-filter>
  5. <meta-data
  6. android:resource="@xml/appwidget"
  7. android:name="android.appwidget.provider">
  8. </meta-data>
  9. </receiver>

这里实现按钮与进度条的交互。(Widget自己广播发送与接收)

①按钮的消息发送

  1. @Override
  2. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  3. int[] appWidgetIds) {
  4. // TODO Auto-generated method stub
  5. final int N = appWidgetIds.length;
  6. // Perform this loop procedure for each App Widget that belongs to this provider
  7. for (int i=0; i<N; i++) {
  8. int appWidgetId = appWidgetIds;
  9. RemoteViews views=
  10. new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
  11. Intent UPintent=new Intent("zyf.test.widget.UP");
  12. Intent DOWNintent=new Intent("zyf.test.widget.DOWN");
  13. //实例化 两个带有Action的Intent
  14. PendingIntent pendingIntentUp
  15. =PendingIntent.getBroadcast(context, 0, UPintent, 0);
  16. PendingIntent pendingIntentDown
  17. =PendingIntent.getBroadcast(context, 0, DOWNintent, 0);
  18. //实例化两个以Intent来构造的PendingIntent
  19. views.setOnClickPendingIntent(R.id.widget_BT_Up, pendingIntentUp);
  20. views.setOnClickPendingIntent(R.id.widget_BT_Down, pendingIntentDown);
  21. //给View上的两个按钮绑定事件,这里是广播消息的发送
  22. appWidgetManager.updateAppWidget(appWidgetId, views);
  23. }
  24. }

②Widget自身消息接收,使用intent.getAction()来获取Action

  1. @Override
  2. public void onReceive(Context context, Intent intent) {
  3. // TODO Auto-generated method stub
  4. super.onReceive(context, intent);
  5. if(intent.getAction().equals("zyf.test.widget.UP")){
  6. Tag+=5;
  7. if(Tag>100){
  8. Tag=100;
  9. }
  10. views.setProgressBar(R.id.widget_ProgressBar, 100, Tag, false);
  11. appManager.updateAppWidget(thisWidget, views);
  12. }
  13. if(intent.getAction().equals("zyf.test.widget.DOWN")){
  14. Tag-=5;
  15. if(Tag<0){
  16. Tag=0;
  17. }
  18. views.setProgressBar(R.id.widget_ProgressBar, 100, Tag, false);
  19. appManager.updateAppWidget(thisWidget, views);
  20. }
  21. }

③进度条的进度值设置

  1. views.setProgressBar(R.id.widget_ProgressBar, 100, Tag, false);
  2. //设置Widget上的进度条的进度值
  3. //第一个参数,Widget上进度条ID
  4. //第二个参数,进度条最大值
  5. //第三个参数Tag,一个int值,就是设置的进度值
  6. //第四个参数,是否是要进度条不确定

注意了,Widget自身的onReceive()方法如果要接收其他的Action广播。那就必须在Manifest中,在Intent-filter中添加Action:

  1. <receiver android:name="AppWidget">
  2. <intent-filter>
  3. <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
  4. <action android:name="zyf.test.widget.UP"></action>
  5. <action android:name="zyf.test.widget.DOWN"></action>
  6. </intent-filter>
  7. <meta-data
  8. android:resource="@xml/appwidget"
  9. android:name="android.appwidget.provider">
  10. </meta-data>
  11. </receiver>
时间: 2024-11-05 20:30:40

android progress 集合(转载)的相关文章

Myeclipse8.6配置android_SDK,进行android开发(转载)

Myeclipse8.6下部署环境,总结一下个人Android环境配置的过程(首先不要急着启动Myeclipse) 1.下载SDK:http://developer.android.com/sdk/index.html,具体版本由自己定义,本人下载的是android-sdk_r11-windows.zip. 2.下载ADT:本人使用这个版本Android ADT-0.9.7,官方下载地址:http://dl.google.com/android/ADT-0.9.7.zip 3.解压android

Android --资料集合

Android 开发环境.工具资料集合 http://www.androiddevtools.cn/ google android 官方教程 http://hukai.me/android-training-course-in-chinese/basics/index.html android视频资料 http://www.jikexueyuan.com/ android资料集合网址 http://stormzhang.com/android/2014/07/07/learn-android-f

android广播集合,intent,action

android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOC

Android icons集合

Android icons集合: Be aware that the style changes occur fairly regularly with each major release, so it's always worth checking current guidelines! General Guidelines Pixel Densities Android icons require five separate sizes for different screen pixel

android经典Demo(转载)

一篇不错的资源博文,转载分享给大家: 1.Android团队提供的示例项目  如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发.由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等.  地址: http://www.apkbus.com/android-13506-1-1.html 2. Remote Droid  RemoteDroid是一个Android应用,能够让用户

Android SQLite总结[转载]

[转载] :http://blog.163.com/zqy216_2008/blog/static/4119371820119954812509/ 最近在做的项目涉及到了SQLite,大学时没有好好学习数据库,趁这次项目学习总结下. SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 SQLite 数据库的原因之一. 下面给出SQLite的数据类型. 一般数据采用的固定的静态数据类型,而SQLite采

63、加速android应用(转载)

本文转自 http://www.devtf.cn/?p=1097 原文链接 : Speed up your app原文作者 : UDI COHEN译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载!译者 : zijianwang90校对者:状态 : 完成 几周之前,我在Droidcon NYC上有过一次关于Android性能优化的演讲. 我在这个演讲中花费了大量的时间,因为我想通过真实的例子展现性能问题,以及我是通过什么样的工具去发掘这些问题的.因为时间原因,在演讲中我不得

Android Progress进度条代码,进度条刷新问题探讨

转载注明出处,Lee http://blog.csdn.net/hnulwt/article/details/44462177 今天看到讨论说关于进度条走的慢的问题.实际问题是这样的:后台执行的程序速度会很快,但是在界面上感觉得到进度条是走的比较慢的.为此,做了一个小实验,代码上实验在1秒的时间 通过俩种方式增加进度条至100%(每隔10ms增加1%和 每隔250ms增加25%),验证哪种方式给人的感觉快,但是在demo做出来之后,确发现了新的问题,想在此与大家共同讨论. 问题 根据代码,我预想

android AsyncTask介绍 转载

http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l