由FrameLayout派生而出,用于为普通组件添加滚动条的组件。它最多只能包含一个组件,ScrollView的作用就是为该组件添加垂直滚动条。(如果需要添加水平滚动条,则可借助HorizontalScrollView来实现,用法基本相似。)
.......
二、Notification 手机状态栏的通知
程序一般通过NotificationManager服务来发送Notification(如未读微信在状态栏的提示):
用法示例:
// 获取系统的NotificationManager服务 NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 创建一个启动其他Activity的Intent(必须定义OtherActivity) Intent intent = new Intent(NotificationTest.this , OtherActivity.class); PendingIntent pi = PendingIntent.getActivity( NotificationTest.this, 0, intent, 0); Notification notify = new Notification.Builder(this) // 设置打开该通知,该通知自动消失 .setAutoCancel(true) // 设置显示在状态栏的通知提示信息 .setTicker("有新消息") // 设置通知的图标 .setSmallIcon(R.drawable.notify) // 设置通知内容的标题 .setContentTitle("您有新的消息") // 设置通知内容 .setContentText("XXX给您发送了3条消息") // // 设置使用系统默认的声音、默认LED灯 // .setDefaults(Notification.DEFAULT_SOUND // |Notification.DEFAULT_LIGHTS) // 设置通知的自定义声音 .setSound(Uri.parse("android.resource:R.raw.msg)) .setWhen(System.currentTimeMillis()) // 设改通知将要启动程序的Intent .setContentIntent(pi).build(); // 发送通知 nm.notify(NOTIFICATION_ID, notify);
三、对话框
1.AlertDialog
由AlertDialog生成的对话框分为图标区、标题区、内容区和按钮区4个区域。
构建一个对话框需要经过以下步骤:
eg1.简单对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this) //设置对话框显示的view .setView(xxxDialog) // 设置对话框标题 .setTitle("简单对话框") // 设置图标 .setIcon(R.drawable.tools) //设置该对话框显示的View .setView(View src) .setMessage("对话框的测试内容\n第二行内容"); // 为AlertDialog.Builder添加【确定】按钮 .setPositiveButton("保存",new onClickListener(){...}); // 为AlertDialog.Builder添加【取消】按钮 .setNegativeButton("取消",null) .create() .show();
其中,setPositiveButton和setNegativeButton方法的代码如下:
private AlertDialog.Builder setPositiveButton( AlertDialog.Builder builder) { // 调用setPositiveButton方法添加确定按钮 return builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("单击了【确定】按钮!"); } }); } private AlertDialog.Builder setNegativeButton( AlertDialog.Builder builder) { // 调用setNegativeButton方法添加取消按钮 return builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("单击了【取消】按钮!"); } }); }
eg2.简单列表项对话框
String[] items = new String[] {"xxx","xxx","xxx","xxx",... }; AlertDialog.Builder builder = new AlertDialog.Builder(this) // 设置对话框标题 .setTitle("简单列表项对话框") // 设置图标 .setIcon(R.drawable.tools) // 设置简单的列表项内容 .setItems(items, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("你选中了《" + items[which] + "》"); } }); // 为AlertDialog.Builder添加【确定】按钮 setPositiveButton(builder); // 为AlertDialog.Builder添加【取消】按钮 setNegativeButton(builder) .create() .show();
eg3.单选列表项对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this) // 设置对话框标题 .setTitle("单选列表项对话框") // 设置图标 .setIcon(R.drawable.tools) // 设置单选列表项,默认选中第二项(索引为1) .setSingleChoiceItems(items, 1, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("你选中了《" + items[which] + "》"); } }); // 为AlertDialog.Builder添加【确定】按钮 setPositiveButton(builder); // 为AlertDialog.Builder添加【取消】按钮 setNegativeButton(builder) .create() .show();
eg4.多选列表项的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this) // 设置对话框标题 .setTitle("多选列表项对话框") // 设置图标 .setIcon(R.drawable.tools) // 设置多选列表项,设置勾选第2项、第4项 .setMultiChoiceItems(items , new boolean[]{false , true ,false ,true}, null); // 为AlertDialog.Builder添加【确定】按钮 setPositiveButton(builder); // 为AlertDialog.Builder添加【取消】按钮 setNegativeButton(builder) .create() .show();
eg5.自定义列表项的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this) // 设置对话框标题 .setTitle("自定义列表项对话框") // 设置图标 .setIcon(R.drawable.tools) // 设置自定义列表项 .setAdapter(new ArrayAdapter(this , R.layout.array_item , items), null); // 为AlertDialog.Builder添加【确定】按钮 setPositiveButton(builder); // 为AlertDialog.Builder添加【取消】按钮 setNegativeButton(builder) .create() .show();
eg6.自定义view的对话框
step1.先定义一个页面布局
step2.创建对话框
//装载/res/layout/login.xml界面布局 TableLayout loginForm = (TableLayout)getLayoutInflater() .inflate( R.layout.login, null); new AlertDialog.Builder(this) // 设置对话框的图标 .setIcon(R.drawable.tools) // 设置对话框的标题 .setTitle("自定义View对话框") // 设置对话框显示的View对象 .setView(loginForm) // 为对话框设置一个“确定”按钮 .setPositiveButton("登录" , new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 此处可执行登录处理 } }) // 为对话框设置一个“取消”按钮 .setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 取消登录,不做任何事情。 } }) // 创建、并显示对话框 .create() .show();
四、DatePickerDialog、TimePickerDialog
用法不难,例如:
Calendar c = Calendar.getInstance(); // 直接创建一个DatePickerDialog对话框实例,并将它显示出来 new DatePickerDialog(DateDialogTest.this, // 绑定监听器 new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker dp, int year, int month, int dayOfMonth) { EditText show = (EditText) findViewById(R.id.show); show.setText("您选择了:" + year + "年" + (month + 1) + "月" + dayOfMonth + "日"); } } //设置初始日期 , c.get(Calendar.YEAR) , c.get(Calendar.MONTH) , c.get(Calendar.DAY_OF_MONTH)).show(); }
如果是TimePicker,相应监听器为:
new TimePickerDialog(DateDialogTest.this, // 绑定监听器 new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker tp, int hourOfDay, int minute) { //more code here.... //设置初始时间 , c.get(Calendar.HOUR_OF_DAY) , c.get(Calendar.MINUTE) //true表示采用24小时制 , true).show(); }
五、ProgressDialog 进度对话框
用法如下:
//第一种方法:调用静态方法显示环形进度条 ProgressDialog.show(this, "任务执行中" , "任务执行中,请等待", false, true); //第二种方法 ProgressDialog pd = new ProgressDialog(ProgressDialogTest.this); // 设置对话框的标题 pd.setTitle("任务正在执行中"); // 设置对话框显示的内容 pd.setMessage("任务正在执行中,敬请等待..."); // 设置对话框能用“取消”按钮关闭 pd.setCancelable(true); // 设置对话框的进度条风格 pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 设置对话框的进度条是否显示进度:false->显示;true->不显示 pd.setIndeterminate(true); pd.show(); //②