一.Dialog(对话框):
我们在android开发当中总会用到一些对话框,用来与用户进行交互。
需要通过AlertDialog.Builder类,来实现一个对话框的创建。
常用的方法:
setTille() : 给对话框设置title;
setIcon() : 给对话框设置图标
setMessage() : 设置对话框的提示信息。
setItems() : 设置对话框要显示的一个list,一般用于显示几个命令时。
setSingleChoiceItems() : 设置对话框显示一个单选的List。
setMultiChoiceItems() : 用来设置对话框显示一系列的复选框。
setPositiveButton() : 给对话框添加"yes"按钮。
setNegativeButton() : 给对话框添加"No"按钮。
Dialog布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.31"
android:text="用户名:" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.31"
android:ems="10" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.31"
android:text="密码:" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.31"
android:password="true"
android:ems="10" />
</LinearLayout>
</LinearLayout>
主界面布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
主代码:
public class MainActivity extends Activity {
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setTitle("登陆提示") //设置标题
.setMessage("请登陆") //设置内容
.setPositiveButton("确定", //设置确定按钮
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//点击"确定"转向登陆框
LayoutInflater factory = LayoutInflater.from(MainActivity.this);
//得到自定义登陆框
View dv = factory.inflate(R.layout.activity_main, null);
AlertDialog dlg = new AlertDialog.Builder(MainActivity.this)
.setTitle("登陆框")
.setView(dv) // 设置自定义对话框的样式
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
text.setText("你已经登陆成功");
}
} )
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
text.setText("你已经登陆失败");
}
})
.create();
dlg.show();
}
}).setNegativeButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
MainActivity.this.finish();
}
})
.create();
dialog.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行界面:
点击确定之后:
·
二.ProgressBar(进度条):
android系统提供了两大类进度条样式,长条进度条(progress-BarStyleHorizontal)和圆形进度条(progressBarStyleLarge),进度条可以再进行应用程序装载资源时应用,可以提示用户稍等等等。
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请点击按钮" />
<ProgressBar
android:id="@+id/p1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:visibility="gone"
/>
<ProgressBar
android:id="@+id/p2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100"
style="?android:attr/progressBarStyleLarge"
android:progress="50"
android:secondaryProgress="70"
android:visibility="gone"
/>
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"
/>
</LinearLayout>
Id为p1的是长形进度条,Id为p2的是圆形进度条,style设置进度条的风格。
style="?android:attr/progressBarStyleHorizontal" 长形进度条
style="?android:attr/progressBarStyleLarge" 超大号圆形ProgressBar
style="?android:attr/progressBarStyleSmall" 小号圆形ProgressBar
style="?android:attr/progressBarStyleSmallTitle" 标题型圆形ProgressBar
主代码:
public class MainActivity extends Activity {
private ProgressBar p1 ;
private ProgressBar p2 ;
private Button b1;
protected static final int STOP_NOTIFIER = 0x108;
protected static final int THREADING_NOTIFIER = 0x109;
public int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口模式
requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarVisibility(true);
setContentView(R.layout.activity_main);
p1 = (ProgressBar)findViewById(R.id.p1);
p2 = (ProgressBar)findViewById(R.id.p2);
b1 = (Button)findViewById(R.id.b1);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置ProgressBar为可见状态
p1.setVisibility(View.VISIBLE);
p2.setVisibility(View.VISIBLE);
//设置ProgressBar的最大值
p1.setMax(100);
//设置ProgressBar当前值
p1.setProgress(0);
p2.setProgress(0);
//通过线程来改变ProgressBar的值
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.handler.sendMessage(m);
break;
}else{
Message m = new Message();
m.what = MainActivity.THREADING_NOTIFIER;
MainActivity.this.handler.sendMessage(m);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}).start();
}
});
}
// 更新界面显示
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what){
//ProgressBar已经是最大值
case MainActivity.STOP_NOTIFIER:
p1.setVisibility(View.GONE);
p2.setVisibility(View.GONE);
//中断线程
Thread.currentThread().interrupt();
break;
case THREADING_NOTIFIER:
if(!Thread.currentThread().isInterrupted()){
p1.setProgress(counter);
p2.setProgress(counter);
//设置标题栏中前景的一个进度条进度值
setProgress(counter*100);
//设置标题栏中后面的一个进度条进度值
setSecondaryProgress(counter*100);
}
break;
}
super.handleMessage(msg);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行图片: