android 中ProgressBar的使用

本文介绍了一种在安卓应用中实现进度条的方法,包括通过主线程接收消息更新进度、使用LayoutInflater加载进度条布局以及在子线程中进行下载任务并发送进度消息。此外,还展示了如何设置进度条的颜色及样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教程适合初级:

 

1.主线程接收下载完成的消息
private Handler mhandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
mprogressBar.setMax(100);//设置最大
mprogressBar.setProgress(counter);//进度值
return false;
}
});
2.LayoutInflater.from布局管理器

/*
从一个Context中,获得一个布局填充器,这样你就可以使用这个填充器来把xml布局文件转为View对象了。
//加载布局管理器
LayoutInflater inflater = LayoutInflater.from(context);
//将xml布局转换为view对象
convertView = inflater.inflate(R.layout.item_myseallist,parent, false);
//利用view对象,找到布局中的组件
convertView.findViewById(R.id.delete);
*/
mprogressBar = (ProgressBar) LayoutInflater.from(this).inflate(R.layout.process,null);
3.view设置.
setProgressBar
mStreetView.setProgressBar(mprogressBar);
4.子线程下载,发送消息
  //子线程
private void startProcess() {

new Thread(){
public static final int MSG = 1;
@Override
public void run() {

if (counter< max){
counter += 10;//一次增加10

Message msg = new Message();
msg.what = MSG;
mhandler.sendMessage(msg);
}
}
};
}
5.将进度条设置颜色等。
以下为全部代码:
public class StreetView extends Activity implements View.OnClickListener{
private com.leador.streetview.truevision.StreetView mStreetView,mStreetView1;
private TextView tv_title;
private LinearLayout ll_back;
private ProgressBar mprogressBar;
int counter=0;

private Handler mhandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
mprogressBar.setMax(100);//设置最大
mprogressBar.setProgress(counter);//进度值
return false;
}
});


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_street_view);

/*
/从一个Context中,获得一个布局填充器,这样你就可以使用这个填充器来把xml布局文件转为View对象了。

//加载布局管理器
LayoutInflater inflater = LayoutInflater.from(context);
//将xml布局转换为view对象
convertView = inflater.inflate(R.layout.item_myseallist,parent, false);
//利用view对象,找到布局中的组件
convertView.findViewById(R.id.delete);
*/
mprogressBar = (ProgressBar) LayoutInflater.from(this).inflate(R.layout.process,null);

tv_title = (TextView) findViewById(R.id.tv_top);
ll_back = (LinearLayout) findViewById(R.id.ll_back);
mStreetView = (com.leador.streetview.truevision.StreetView) findViewById(R.id.gl);
mStreetView1 = (com.leador.streetview.truevision.StreetView) findViewById(R.id.gl1);

init();
loadStreetView();
startProcess();
}

private void init(){
tv_title.setText("woququququuq");

mStreetView.setProgressBar(mprogressBar);
mStreetView1.setProgressBar(mprogressBar);

ll_back.setOnClickListener(this);
}

//子线程
private void startProcess() {

new Thread(){
public static final int MSG = 1;
@Override
public void run() {

if (counter< max){
counter += 10;//一次增加10

Message msg = new Message();
msg.what = MSG;
mhandler.sendMessage(msg);
}
}
};
}

private void loadStreetView(){
mStreetView.setStreetViewFirstLoadListener(new StreetViewFirstLoadListener() {
@Override
public void firstLoad() {
mStreetView.loadStreetViewByPosition(110.4010705,19.977281293);
}
});

mStreetView1.setStreetViewFirstLoadListener(new StreetViewFirstLoadListener() {
@Override
public void firstLoad() {
mStreetView1.loadStreetViewByPosition(110.4010705,19.977281293);
}
});
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.ll_back:
finish();
break;
}
}

@Override
protected void onDestroy() {
super.onDestroy();
mStreetView.finish();
}
}

-------------------------------------------------------------------------------------------------------------------------------------
--
vv
--






转载于:https://www.cnblogs.com/wang8023-2016-8-3/p/7090236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值