Android百日程序:进度条对话框实现
显示由Activity管理的dialog。
这种dialog有多种多样,其中比较常见的是loading的时候,显示的一个loading进度条。
Android显示这样的进度条还是非常方便的,因为有现成的模块可以调用。
首先看看本程序的效果吧:
1 主界面:
2 点击这个按钮之后,显示:
进度条到了100的时候就会自动关闭,当然这里是模拟下载,真实的下载算法还需要继续完善,不过也是很简单的算法了,不算是难点。
点击Cancel或者OK按钮也可以调用函数,进行有需要的操作,这里直接显示一个Toast(简单短暂的对话框)提示。不截图了。
步骤:
新建项目之后,用以下代码做出主界面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/dialog_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:onClick="onClick" android:text="@string/dialog_button" /> </LinearLayout>
然后是逻辑代码:
package su.dialog.dialog; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View v) { showDialog(1); progressDialog.setProgress(0); new Thread(new Runnable() { public void run() { for (int i = 1; i <= 15; i++) { try { Thread.sleep(1000); progressDialog .incrementProgressBy((int) (100.f / 15.f)); } catch (InterruptedException e) { e.printStackTrace(); } } progressDialog.dismiss(); } }).start(); } @Override protected Dialog onCreateDialog(int id) { progressDialog = new ProgressDialog(this); progressDialog.setIcon(R.drawable.ic_launcher); progressDialog.setTitle("Downloading files..."); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show(); } }); progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(getBaseContext(), "Cancel clicked!", Toast.LENGTH_SHORT).show(); } }); return progressDialog; } }
showDialog()函数已经是deprecated的函数了,可以参照:http://stackoverflow.com/questions/10285047/showdialog-deprecated-whats-the-alternative
知识点:
1 点击事件是在xml中声明的了,就是这句:android:onClick = "onClick";后面的"onClick"就是自己定义的函数,可以为任意名字,只要xml的名字和逻辑代码中的名字一致就可以驱动点击事件了。
2 模块ProgressDialog类有点复杂,其实也是一些属性的设置和函数调用罢了,理解起来不难,细心看代码就行了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。