1、Activity的生命周期:
说明:可以使用系统日志Log.d()方法来显示
onCreate() 当Activity首次被创建时候调用
onStart() 当Activity活动对用户可见时候调用
onResume() 当Activity与用户交互时候调用
onPause() 当Activity被暂停并回复以前的活动时候调用
onStop() 当Activity不再对用户可见时候调用
onDestroy() 在Activity被系统销毁(手动或由系统执行以节省内存)前调用
onRestart() 在Activity已经停止并在此启动时候调用
2、对Activity应用样式和主题
说明:在AndroidManifest.xml文件中的<Activity>元素中添加android:theme属性
android:theme="@android:style/Theme.Dialog"
3、隐藏Activity标题
说明:使用requestWindowFeature()方法传递Window.FEATURE_NO_TITLE属性。
requestWindowFeature(Window.FEATURE_NO_TITLE);
4、显示Activity对话框窗口
说明:1)要创建一个对话框,需要使用AlertDialog类的Builder构造方法来设置不同的属性如标题、图标、按钮和复选框。
2)由于Toast类并没有在Activity中直接使用,而是在AlertDialog中使用,因此需要使用getBaseContext()方法来返回一个Context类的对象。
3)关于Context类的方法比较如下:
getApplicationContext()返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
Activity.this的context返回当前activity的上下文,属于activity,activity摧毁他就摧毁
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文
public class MainActivity extends Activity {
CharSequence[] items = {"Google", "Apple", "Microsoft"};
boolean[] itemsChecked = new boolean[items.length];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v){
showDialog(0);
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case 0:
Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("This is a dialog with some simple text...");
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(),
"OK clicked!", Toast.LENGTH_SHORT).show();
}
});
builder.setMultiChoiceItems(items, itemsChecked,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0,
int which, boolean isChecked) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(),
items[which]+(isChecked?"checked!":"unchecked!"),
Toast.LENGTH_SHORT).show();
}
});
return builder.create();
}
return null;
}
}
5、显示进度对话框
说明:1)首先要创建一个ProgessDialog类的对象并调用其show方法。
2)使用Runnable代码块创建一个Thread线程,使用sleep方法插入延迟,使用dismiss方法关闭。
public class MainActivity extends Activity {
CharSequence[] items = {"Google","Apple","Microsoft"};
boolean[] itemsChecked = new boolean[items.length];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v){
final ProgressDialog dialog = ProgressDialog.show(this,
"Doing something", "Please wait...", true);
new Thread(new Runnable(){
public void run(){
try{
Thread.sleep(5000);
dialog.dismiss();
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}).start();
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
return super.onCreateDialog(id);
}
}
6、显示百分比效果的进度对话框
说明:1)创建ProgressDialog类的一个实例,并设置其图标、标题、样式属性。
2)设置进度对话框的两个按钮,使用Thread对象来运行一个Runnable代码块
3)incrementProgressBy()方法增加进度对话框的技术,进度到100%时候用dismiss方法关闭对话框。
public class MainActivity extends Activity {
CharSequence[] items = {"Google","Apple","Microsoft"};
boolean[] itemsChecked = new boolean[items.length];
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v){
showDialog(0);
progressDialog.setProgress(0);
new Thread(new Runnable(){
public void run(){
for (int i = 0; i < 15; i++) {
try {
Thread.sleep(1000);
progressDialog.incrementProgressBy((int)(100/15));
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
}
progressDialog.dismiss();
}
}).start();
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case 0:
progressDialog = new ProgressDialog(this);
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setTitle("Downloading files...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show();
}
});
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Cancel clicked!", Toast.LENGTH_SHORT).show();
}
});
return progressDialog;
}
return null;
}
}