android sdk----processBar的使用
2014-08-20 10:41
381 查看
需求:
点击按钮,进度环旋转并显示进度信息,结束之后隐藏进度环
代码:
private TextView mTextView1;
private Button mButton;
private ProgressBar mProcessBar;
public int counter = 0;
protected static final int STOP_NOTIFIER = 0x108;
protected static final int THREADING_NOTIFIER = 0x109;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button1);
mTextView1 = (TextView)findViewById(R.id.textView1);
mProcessBar = (ProgressBar)findViewById(R.id.progressBar1);
mProcessBar.setIndeterminate(false);
mButton.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mTextView1.setText("thread starting");
mProcessBar.setVisibility(View.VISIBLE);
mProcessBar.setMax(100);
mProcessBar.setProgress(0);
new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0; i < 10; i++)
{
try
{
counter = (i+1)*20;
Thread.sleep(1000);
if(i == 4)
{
Message m = new Message();
m.what = MainActivity.STOP_NOTIFIER;
MainActivity.this.myMessageHandler.sendMessage(m);
break;
}
else
{
Message m = new Message();
m.what = MainActivity.THREADING_NOTIFIER;
MainActivity.this.myMessageHandler.sendMessage(m);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}).start();
}
});
}
Handler myMessageHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch(msg.what)
{
case MainActivity.STOP_NOTIFIER:
mTextView1.setText("thread is over");
mProcessBar.setVisibility(View.GONE);
Thread.currentThread().interrupt();/*what's this for*/
break;
case MainActivity.THREADING_NOTIFIER:
mProcessBar.setProgress(counter);
mTextView1.setText(
(Integer.toString(counter)+"%\n process:"+
Integer.toString(mProcessBar.getProgress())));
break;
}
super.handleMessage(msg);
}
};
重点:
1.Handle属于MainActivity类
2.Handle和Message可以在线程间传递msg;
3.Handle可发送sendMessage,处理handleMessage
4.message的信息放在what里面
5.progressBar的操作主要是setVisibility,setProgress,getProgress,setIndeterminate
6.本例展示了如何新建一个线程;
问题:
1。 Thread.currentThread().interrupt();这个表示撤销线程吗?
2。放在OnCreate里面和放在class里面有什么区别?
3。新建的线程可共用类的什么信息?
4.indeterminateOnly对于progressBar的显示有何影响?
点击按钮,进度环旋转并显示进度信息,结束之后隐藏进度环
代码:
private TextView mTextView1;
private Button mButton;
private ProgressBar mProcessBar;
public int counter = 0;
protected static final int STOP_NOTIFIER = 0x108;
protected static final int THREADING_NOTIFIER = 0x109;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button1);
mTextView1 = (TextView)findViewById(R.id.textView1);
mProcessBar = (ProgressBar)findViewById(R.id.progressBar1);
mProcessBar.setIndeterminate(false);
mButton.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mTextView1.setText("thread starting");
mProcessBar.setVisibility(View.VISIBLE);
mProcessBar.setMax(100);
mProcessBar.setProgress(0);
new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0; i < 10; i++)
{
try
{
counter = (i+1)*20;
Thread.sleep(1000);
if(i == 4)
{
Message m = new Message();
m.what = MainActivity.STOP_NOTIFIER;
MainActivity.this.myMessageHandler.sendMessage(m);
break;
}
else
{
Message m = new Message();
m.what = MainActivity.THREADING_NOTIFIER;
MainActivity.this.myMessageHandler.sendMessage(m);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}).start();
}
});
}
Handler myMessageHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch(msg.what)
{
case MainActivity.STOP_NOTIFIER:
mTextView1.setText("thread is over");
mProcessBar.setVisibility(View.GONE);
Thread.currentThread().interrupt();/*what's this for*/
break;
case MainActivity.THREADING_NOTIFIER:
mProcessBar.setProgress(counter);
mTextView1.setText(
(Integer.toString(counter)+"%\n process:"+
Integer.toString(mProcessBar.getProgress())));
break;
}
super.handleMessage(msg);
}
};
重点:
1.Handle属于MainActivity类
2.Handle和Message可以在线程间传递msg;
3.Handle可发送sendMessage,处理handleMessage
4.message的信息放在what里面
5.progressBar的操作主要是setVisibility,setProgress,getProgress,setIndeterminate
6.本例展示了如何新建一个线程;
问题:
1。 Thread.currentThread().interrupt();这个表示撤销线程吗?
2。放在OnCreate里面和放在class里面有什么区别?
3。新建的线程可共用类的什么信息?
4.indeterminateOnly对于progressBar的显示有何影响?
相关文章推荐
- 如何使用Android SDK开发Android应用
- Android SDK 使用技巧
- 用JavaScript生成Android SDK的下载地址(1)——使用xsl转换xml,得到核心SDK的下载地址
- Android JNI 使用的数据结构JNINativeMethod详解 ||建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C++代码
- Linux下 android SDK安装及使用时出现的几个问题解决办法(我遇到的)
- 使用新浪微博Android SDK
- 使用迅雷等下载工具下载Android SDK快速安装
- Android SDK弱爆了---在64位Linux机器上使用的同学注意了
- Android零基础开发专题三:Android SDK帮助文档使用方法
- android sdk 9 patches 工具使用方法
- 【Android入门】Android TabHost的使用(翻译与Android SDK)
- 如何使用Android SDK开发Android应用?
- 如何使用android SDK开发android 应用
- 如何使用Android SDK开发Android应用
- Android SDK 2.1的下载地址及其 Setup如何使用
- 如何使用Android SDK开发Android应用?
- android sdk 帮助文档使用说明
- Android SDK工具:使用layoutopt进行布局优化
- processbar 与 RepositoryItemProgressBar 使用
- android SDK 命令行使用技巧(转)