android 消息提示机制

 

消息提示机制

一 对话框 Dialog AlertDialog

对话框有:标准对话框, 菜单式对话框, 菜单式复选框对话框,自定义对话框

(注意:这里的上下文公用了,代码的点击方法我已经在点击监听事件里注册了)
1 标准对话框:
在布局界面写好按钮,然后设置点击事件,
在事件种创建 dialog 的构造器 AlertDialog.Builder builder = new AlertDialog.Builder(context);
然后用构造器设置dialog的各种属性,最后create,show 出来。代码如下:

public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setIcon(R.drawable.g_18)
.setTitle(R.string.dialog_title)
.setMessage(R.string.isdelete)
.setCancelable(false)
.setPositiveButton(R.string.button_ok,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
Toast.makeText(context, which + "",Toast.LENGTH_SHORT);

}
}) // 设置是否可以中断对话框 ,即点击Activity的其他界面,而不显示对话框
.setNegativeButton(R.string.button_cancel,
new DialogInterface.OnClickListener() { // 取消按钮

@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss(); // 退出对话框

}
})

.create().show();

}

2 菜单式对话框 


public void menuDialog() {
final String[] roleArray = getResources().getStringArray(R.array.array_role); // 获取数组数据
AlertDialog.Builder builder = new Builder(context);
builder.setIcon(R.drawable.png_0019) // 设置图标

.setTitle("QQ华夏角色")
.setItems(R.array.array_role,
new DialogInterface.OnClickListener() { // 设置listview 项数据,并且添加点击事件监听

@Override
public void onClick(DialogInterface dialog,int which) {
ToastUtils.show(context, roleArray[which]); // 
// 显示获取的值

}
})
.create()
.show();

}

  

  

3 菜单式复选框对话框
在这里用到了 稀疏布尔数组 这个数组或拿到你点击过的选项,有key,value;
key:保存的是那你点击过的条目的位置position,(注意:这个位置不是数组的索引位置)。
value:保存的是一个boolean 值 true 表示你选中了这个checkBox,false 则没有。

public void menuCheckboxDialog() {
String[] loveCityArray = getResources().getStringArray(
R.array.array_loveCity);
AlertDialog.Builder builder = new Builder(context);
builder.setIcon(R.drawable.png_city)
.setTitle("你到过哪些城市?")
.setMultiChoiceItems(R.array.array_loveCity, null,
new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
/*
* AlertDialog alertdialog= (AlertDialog)
* dialog; //向下转型 String str=
* alertdialog.getListView
* ().getAdapter().getItem(which).toString();
* //获取ListView每一个项种的数据(object)
* ToastUtils.show(context, str);
*/

}
})
// 确定按钮,获取用户选择的项目 
.setPositiveButton(R.string.button_ok,new DialogInterface.OnClickListener() { 
@Override
public void onClick(DialogInterface dialog,int which) {
AlertDialog alertDialog =(AlertDialog)dialog;
ListView listView= alertDialog.getListView();
//获取listview ,获取稀疏布尔数组 这个数组 key value
SparseBooleanArray sparseBoleanArray=alertDialog.getListView().getCheckedItemPositions();
int size= sparseBoleanArray.size();
StringBuilder sb=new StringBuilder();
for(int i=0;i<size;i++)
{
if(sparseBoleanArray.valueAt(i)){
int position=sparseBoleanArray.keyAt(i);
String selectStr = listView.getAdapter().getItem(position).toString();
sb.append(selectStr);
}
}
ToastUtils.show(context, sb.toString());

}
})
// 取消按钮
.setNegativeButton(R.string.button_cancel,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss(); // 退出对话框

}
})

.create().show();

}

  

4 自定义对话框

这里我没有用系统的主题,而是自己写了一个样式(样式和主题这里不讨论)。
默认会有系统提供的背景的,我写了一个自定义样式继承系统提供的样式,重写了系统的背景属性
<style name="MyDiy_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
实现思路:
创建一个布局xml,这个布局xml就是显示我对话框的布局。
创建dialog 对象,加载窗口布局xml。
通过父控件dialog 找到子控件 文本编辑框
设置监听事件



public void diyDialog() {
final Dialog dialog=new Dialog(context,R.style.MyDiy_dialog); //创建窗口对象

dialog.setContentView(R.layout.diydialog); //将自定义对话框窗体加载到对话框
final EditText et=(EditText) dialog.findViewById(R.id.txt_et); //通过付控件 找到子控件 文本编辑框
Button btn_ok=(Button) dialog.findViewById(R.id.ok_btn); //找到 确定按钮
Button btn_cancel=(Button) dialog.findViewById(R.id.cancle_btn); //找到 取消按钮
btn_ok.setOnClickListener(new OnClickListener() { //设置 确定按钮的 点击监听事件

@Override
public void onClick(View v) {
String strEidtText=et.getText().toString().trim(); // 获取EditText控件的文本值
dialog.dismiss();
//.... 其它逻辑

ToastUtils.show(context, strEidtText); //土司帮助类 显示文本值

}
});
btn_cancel.setOnClickListener(new OnClickListener() { //设置取消按钮的监听事件

@Override
public void onClick(View v) {
dialog.dismiss();

}
});

dialog.show();

}

二 Logcat:日志猫

1 级别 :v、d、i、w、e 级别由低往高
- verbose :混淆的 ,所有信息都可以输出,级别最低
- debug :调试级别
- info:信息级别
- warning:警告级别
- error :错误级别
2 添加过滤器 按照Tag进行过滤

3 System.out.println()与Log输出之间的区别
- System.out.println()输出的信息 等级是info级别,标记tag:System.out
- System.out.print() 输出信息 需要System.out.flush()刷缓存输出

三 Toast: 吐司
Toast通知是一种浮现在屏幕上层的消息提醒,它只填充消息所需要的空间,而当前正在运行的活动仍然保持其自身的可见性和交互性。
这种通知自动淡入淡出且不接受交互事件 。
1 xml定义Toast
在xml 中定义好布局 ,然后写java代码

public void diyToast2(View v) {
// 定义Toast对象
Toast toast = new Toast(context);
// 布局填充器
/**
* 把布局xml文件进行实例化为对象,把布局的内容填充到View对象中
* resource: 布局资源 root:父控件或者根节点
* inflate:打氣筒的形式把布局资源填充到View对象中,View对象具有层次性
*/
View view = LayoutInflater.from(context).inflate(R.layout.diy, null);
toast.setView(view);
// 设置持续时间
toast.setDuration(Toast.LENGTH_LONG);
// Gravity :显示的位置 ,xOffset:偏移量 yOffset:偏移量
toast.setGravity(Gravity.LEFT, 0, 0);
toast.show();
}

2 通过代码的形式自定义Toast

public void diyToast1(View v) {
// 声明一个Toast对象
Toast toast = new Toast(context);
// 构建布局对象
LinearLayout layout = new LinearLayout(context);
ViewGroup.LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
// 设置布局参数
layout.setLayoutParams(params);
// 设置线性布局的方向
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setBackgroundColor(Color.CYAN);
// 创建图像对象
ImageView image = new ImageView(context);
image.setImageResource(R.drawable.emoji_044);
// 向布局对象中添加图片视图控件
layout.addView(image);
// 构建文本视图控件
TextView message = new TextView(context);
message.setText("巴西世界杯!");
message.setTextColor(Color.BLUE);
layout.addView(message);
// 在toast对象中设置View
toast.setView(layout);
// 设置持续时间
toast.setDuration(Toast.LENGTH_LONG);
// Gravity :显示的位置 ,xOffset:x方向偏移量 yOffset:y方向偏移量
toast.setGravity(Gravity.LEFT, 0, 0);
toast.show();}

转载于:https://www.cnblogs.com/chz1992/p/4738114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值