Android实现标题上显示隐藏进度条效果

时间:2021-05-20

一个界面,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后,隐藏进度条并显示图片

具体实现方法:
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; @Override protected 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>{ @Override protected void onPreExecute() { setProgressBarVisibility(true);//执行任务前让进度条可见 super.onPreExecute(); } //功能:要执行的耗时任务(此方法异步执行) @Override protected 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; } //功能:更新进度(此方法在主线程中运行) @Override protected void onProgressUpdate(Integer... values) { setProgress(values[0]*2500);//动态更新最新进度 super.onProgressUpdate(values); } //功能:执行任务后(此方法在主线程中运行) @Override protected void onPostExecute(LinearLayout result) { setProgressBarVisibility(false);//任务执行后隐藏进度条 layout.addView(result);//将水平线性布局管理器添加到布局文件中添加的垂直线性布局管理器中 super.onPostExecute(result); } } }

运行效果如下:

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章