android(5) 等待窗口

来源:互联网 发布:非农数据在哪里看 编辑:程序博客网 时间:2024/04/28 10:13

一.等待窗口实现:

   记录一下,有时候我们下载数据的时候为了提高用户的体验,加一个等待窗口还是有必要的,有两种等待窗口:

第一种旋转的ProgressBar:

  

  

主界面:

public class MainActivity extends Activity {private Button button1;private TextView textview1;public AlertDialog selfdialog;private MainActivity main;    public Handler mhandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {//显示TextViewcase 1:Toast.makeText(main, "成功", Toast.LENGTH_SHORT).show();textview1.setVisibility(View.VISIBLE);break;}super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);main = this;button1 = (Button) findViewById(R.id.button1);textview1 = (TextView) findViewById(R.id.textview1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {showDialogLoading();}});}    //等待dialogprivate void showDialogLoading() {LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);//viewView view = inflater.inflate(R.layout.footer, null);AlertDialog.Builder ad = new AlertDialog.Builder(this);selfdialog = ad.create();selfdialog.setView(view);//屏蔽掉点击selfdialog.setCancelable(false);selfdialog.show();new Thread() {@Overridepublic void run() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}Message message = new Message();message.what = 1;main.mhandler.sendMessage(message);//关闭dialogselfdialog.dismiss();}}.start();}}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:gravity="center" >    <Button         android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击我"        />    <TextView        android:id="@+id/textview1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="加载完成后显示我"        android:visibility="gone"        /></LinearLayout>

footer.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:gravity="center" >    <Button         android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击我"        />    <TextView        android:id="@+id/textview1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="加载完成后显示我"        android:visibility="gone"        /></LinearLayout>

这样第一种的等待窗就实现了。


第二种进度条式的等待窗:



主界面:

public class MainActivity extends Activity {private Button button1;private TextView textview1;private TextView textview2;public AlertDialog selfdialog;private MainActivity main;    public Handler mhandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {//显示TextViewcase 1:textview2.setText("正在下载("+msg.obj.toString()+"/10)");break;}super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);main = this;button1 = (Button) findViewById(R.id.button1);textview1 = (TextView) findViewById(R.id.textview1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {showDialogLoading();}});}    //等待dialogprivate void showDialogLoading() {LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);//viewView view = inflater.inflate(R.layout.footer, null);final ProgressBar progressbar1 = (ProgressBar)view.findViewById(R.id.progressbar1);textview2 = (TextView)view.findViewById(R.id.textview2);AlertDialog.Builder ad = new AlertDialog.Builder(this);selfdialog = ad.create();selfdialog.setView(view);//屏蔽掉点击selfdialog.setCancelable(false);selfdialog.show();new Thread() {@Overridepublic void run() {//getProgress()获得当前的进度值//incrementProgressBy()每次增加的量//getMax()获得这个进度条的范围的上限int max = progressbar1.getMax();int i = 0;while(true){ if(i > max){break;}try {Thread.sleep(1000);progressbar1.incrementProgressBy(1);Message message = new Message();message.what = 1;message.obj = progressbar1.getProgress();main.mhandler.sendMessage(message);i++;} catch (InterruptedException e) {e.printStackTrace();}}//关闭dialogselfdialog.dismiss();}}.start();}}

footer.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:gravity="center" >    <ProgressBar        android:id="@+id/progressbar1"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="200dip"        android:layout_height="wrap_content"        android:max="10"        />    <TextView        android:id="@+id/textview2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="正在下载(0/10)"        android:textColor="@android:color/black"        android:textSize="9sp" /></LinearLayout>

activity_main与上个例子布局一样。



   

0 0