日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码添加ProgressBar 进度条

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码添加ProgressBar 进度条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

大家好 今天為大家分享代碼中添加ProgressBar的例子 。當我們需要初始化程序或者聯網獲取數據 在數據庫中查找數據時,這些需要耗費些時間的操作就需要進度條來提示用戶有任務在進行,以免造成程序界面假死。 為什么要在代碼中添加而不在布局里面添加呢,因為在代碼里添加可以重復多次利用,免得沒用到時就得在布局里添加,麻煩。

? ? 好了,下面我們來做個簡單的Demo熟悉一下,

? ? 第一步:首先創建工程ProgressBarInsertLayoutinCode。

? ? 第二步:創建XMl 布局文件 ?我們就用自動創建的main.xml (在這里面只添加了一個Button)用來啟動ProgressBar,代碼如下:

?

[html]?view plaincopy
  • ???<?xml?version="1.0"?encoding="utf-8"?>??
  • <RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • android:id="@+id/relative"??
  • android:layout_width="fill_parent"??
  • android:layout_height="fill_parent"??
  • >??
  • <Button?android:id="@+id/button"??
  • android:text="Click?me"??
  • android:layout_width="fill_parent"??
  • android:layout_height="wrap_content"/>??
  • </RelativeLayout>??


  • ?

    ? ? ? ? 第三步:修改ProgressBarInsertLayoutinCodeActivity代碼,如下:(這里我們用到了Handler和Thread,用來更新ProgressBar的進度,這樣就可以到一定是消除ProgressBar)

    ?

    [html]?view plaincopy
  • package?cn.li.progressbardemo;??
  • ??
  • import?android.app.Activity;??
  • import?android.os.Bundle;??
  • import?android.view.View;??
  • import?android.widget.Button;??
  • ??
  • public?class?ProgressBarInsertLayoutinCodeActivity?extends?Activity?{??
  • /**?Called?when?the?activity?is?first?created.?*/??
  • private?Button?btn;??
  • private?InsertProgressBar?bar;??
  • @Override??
  • public?void?onCreate(Bundle?savedInstanceState)?{??
  • super.onCreate(savedInstanceState);??
  • setContentView(R.layout.main);??
  • bar?=?new?InsertProgressBar(ProgressBarInsertLayoutinCodeActivity.this);??
  • btn?=?(Button)findViewById(R.id.button);??
  • btn.setOnClickListener(new?View.OnClickListener()?{??
  • ??
  • @Override??
  • public?void?onClick(View?v)?{??
  • //?TODO?Auto-generated?method?stub??
  • bar.insertBar();??
  • }??
  • });??
  • }??
  • }??


  • ?

    第四步:創建InsertProgressBar.java 此類創建了ProgressBar

    ?

    [html]?view plaincopy
  • package?cn.li.progressbardemo;??
  • ??
  • import?android.content.Context;??
  • import?android.os.Handler;??
  • import?android.os.Message;??
  • import?android.view.View;??
  • import?android.widget.ProgressBar;??
  • import?android.widget.RelativeLayout;??
  • import?android.widget.RelativeLayout.LayoutParams;??
  • ??
  • public?class?InsertProgressBar?{??
  • ??
  • private?RelativeLayout?relative?;??
  • private?ProgressBar?bar;??
  • private?ProgressBarInsertLayoutinCodeActivity?context;??
  • private?int?rate?=?0;??
  • ??
  • protected?static?final?int?STOP?=?0;??
  • protected?static?final?int?NEXT?=?1;??
  • ??
  • public?InsertProgressBar(Context?c)?{??
  • super();??
  • context?=?(ProgressBarInsertLayoutinCodeActivity)?c;??
  • relative?=?(RelativeLayout)context.findViewById(R.id.relative);??
  • bar?=?new?ProgressBar(context);??
  • //設置ProgressBar的高寬和顯示位置??
  • RelativeLayout.LayoutParams?params?=?new?RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);??
  • params.getRules()[RelativeLayout.CENTER_IN_PARENT]?=?RelativeLayout.TRUE;??
  • bar.setLayoutParams(params);??
  • }??
  • ??
  • public?void?insertBar()?{??
  • bar.setProgress(0);??
  • //當ProgressBar正在運行時就不再創建ProgressBar??
  • if(!bar.isShown()){??
  • bar.setVisibility(View.VISIBLE);??
  • relative.addView(bar);??
  • new?MyThread().start();??
  • }??
  • ??
  • }??
  • ??
  • class?MyThread?extends?Thread{??
  • ??
  • @Override??
  • public?void?run()?{??
  • super.run();??
  • ??
  • try?{??
  • for(int?i=0;i<25;i++){??
  • rate?=?(i+1)*4;??
  • if(i!=24){??
  • Message?msg?=?new?Message();??
  • msg.what?=?NEXT;??
  • myhandler.sendMessage(msg);??
  • }else{??
  • Message?msg?=?new?Message();??
  • msg.what?=?STOP;??
  • myhandler.sendMessage(msg);??
  • }??
  • MyThread.sleep(200);??
  • }??
  • }?catch?(Exception?e)?{??
  • }??
  • ??
  • }??
  • ??
  • }??
  • //創建一個Handle?接收消息??
  • private?Handler?myhandler?=?new?Handler(){??
  • ??
  • @Override??
  • public?void?handleMessage(Message?msg)?{??
  • super.handleMessage(msg);??
  • switch?(msg.what)?{??
  • case?STOP:??
  • bar.setVisibility(View.GONE);??
  • relative.removeView(bar);??
  • Thread.currentThread().interrupt();??
  • break;??
  • case?NEXT:??
  • bar.setProgress(rate);??
  • break;??
  • }??
  • }???
  • };??
  • }??


  • ?

    OK,運行工程 效果如圖

    ?

    總結

    以上是生活随笔為你收集整理的代码添加ProgressBar 进度条的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。