本文实例讲述了Android编程实现显示在标题上的进度条功能。分享给大家供大家参考,具体如下:
今天我们来学习一下Android中显示在Activity标题上的进度条。在这个例子当中我们还能够学习到很多关于AsyncTask的知识。
(1)准备用于显示到界面上的四张图片img01,img02,img03,img04
(2)在Activity的布局文件activity_main.xml中只定义一个线性布局LinearLayout,并为其设置一个id,代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main_layout">
</LinearLayout>
(3)Java代码部分,通过requestWindowFeature(Window.FEATURE_PROGRESS);
语句设置Activity标题栏为有进度条风格,然后实例化并启动一个MyTask对象,代码如下:
public class MainActivity extends Activity {
//图片id数组
private int[] imageIds = { R.drawable.img01, R.drawable.img02,
R.drawable.img03, R.drawable.img04 };
private LinearLayout mainLayout;
/**
* Activity的入口方法
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置标题栏有进度条
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
mainLayout = (LinearLayout)findViewById(R.id.main_layout);
//实例化MyTask并开始执行
new MyTask().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/**
* 自定义继承AsyncTask的异步类MyTask
*/
class MyTask extends AsyncTask<Void, Integer, LinearLayout>{
/**
* 在doInBackground()方法之前执行的方法
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
//设置标题栏的进度条可见
setProgressBarVisibility(true);
}
/**
* 后台执行的耗时操作
*/
@Override
protected LinearLayout doInBackground(Void... params) {
LinearLayout ll = new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
for(int i=1; i<5; i++){
ImageView iv = new ImageView(MainActivity.this);
iv.setLayoutParams(new LayoutParams(200, 100));
iv.setImageResource(imageIds[i-1]);
ll.addView(iv);
new Thread(){
public void run() {
try {
//休眠20毫秒
Thread.sleep(20);
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
//要求更新进度条,会引起调用onProgressUpdate()方法
publishProgress(i);
}
return ll;
}
/**
* 更新进度条
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
//参数值为0-10000,所以要乘以2500,values[0]取值分别是1,2,3,4
setProgress(values[0] * 2500);
}
/**
* 后台操作执行完毕后所要执行的方法
*/
@Override
protected void onPostExecute(LinearLayout result) {
super.onPostExecute(result);
mainLayout.addView(result);
}
}
}
右键运行android project,效果如下:
进度条执行完毕后,界面会显示四张图片。
附:完整实例代码点击此处本站下载。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。