【Android开发】范例1-显示在标题上的进度条

来源:互联网 发布:写小说 软件 编辑:程序博客网 时间:2024/05/16 06:52
实现一个界面,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后,隐藏进度条并显示图片

具体实现方法:
res/layout/main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal"    android:id="@+id/layout1"    android:gravity="center"></LinearLayout>

MainActivity:
package com.example.test;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.ViewGroup.LayoutParams;import android.view.Window;import android.widget.ImageView;import android.widget.LinearLayout;public class MainActivity extends Activity{private int imageId[]=new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04};//定义并初始化一个保存要显示图片id的数组private LinearLayout layout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_PROGRESS);//显示水平进度条setContentView(R.layout.main);layout=(LinearLayout)findViewById(R.id.layout1);new MyTack().execute();}/* * 创建继承自AsyncTask的异步类,并重写onPreExecute()、doInBackground()、onProgressUpdate() * 和onPostExecute方法,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后, * 隐藏进度条并显示图片 * */ //功能:创建异步任务,添加4张图片class MyTack extends AsyncTask<Void,Integer,LinearLayout>{@Overrideprotected void onPreExecute() {setProgressBarVisibility(true);//执行任务前让进度条可见super.onPreExecute();}//功能:要执行的耗时任务(此方法异步执行)@Overrideprotected LinearLayout doInBackground(Void... params) {LinearLayout layout2=new LinearLayout(MainActivity.this);for (int i = 1; i < 5; i++) {ImageView imageView=new ImageView(MainActivity.this);//创建一个ImageView对象imageView.setLayoutParams(new LayoutParams(245,108));imageView.setImageResource(imageId[i-1]);//设置要显示的图片layout2.addView(imageView);//将imageView添加到线形布局管理器中try {Thread.sleep(10);//为了更好的观察到效果,我们让线程休眠10毫秒} catch (InterruptedException e) {e.printStackTrace();}publishProgress(i);//触发onProgressUpdate(Progress...)方法更新进度}return layout2;}//功能:更新进度(此方法在主线程中运行)@Overrideprotected void onProgressUpdate(Integer... values) {setProgress(values[0]*2500);//动态更新最新进度super.onProgressUpdate(values);}//功能:执行任务后(此方法在主线程中运行)@Overrideprotected void onPostExecute(LinearLayout result) {setProgressBarVisibility(false);//任务执行后隐藏进度条layout.addView(result);//将水平线性布局管理器添加到布局文件中添加的垂直线性布局管理器中super.onPostExecute(result);}}}

运行效果如下:

下图是加载过程,标题栏上方有一个进度条显示的是加载图片的进度


下图是加载完成,显示出图片


转载请注明出处:http://blog.csdn.net/acmman/article/details/44978305

0 0