Toast
Toast就是显示一个提示信息,它没有焦点,不接受点击事件。主要掌握Toast.makeText(), toast.setGravity()(位置定位),toast.setDuration()(时间设置),toast.setView()(在自定义的Toast中用)的用法。这里主要有三种设计模式:1)简单模式。2)富文本模式。3)插入图片的模式4)自定义模式。
1)简单模式
简单模式是最基本的模式:可以进行最基本的显示:
代码如下:
Toast toast= Toast.makeText(getApplicationContext(), "hello world", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.LEFT,0,0);
toast.show();
getApplicationContext()是获得Application的Context。”hello world”是要显示的内容。Toast.LENGTH_SHORT是显示的时长,有两种可以选择short,long。 toast.setGravity(Gravity.LEFT,0,0);是设置显示的方位。可以用“|”进行多次的设置,0,0是偏移x轴和y轴的值。
最后不要忘记 toast.show();这条代码。
结果
富文本模式
Toast还可以接受富文本格式的内容。可以使显示的内容更加丰富多彩。
建立spanned文件,这就是富文件,用toast.setText(spanned);将富文件传入,就得到了你所设置的富文件。代码如下:
Toast toast=Toast.makeText(getApplicationContext(),"hehh",Toast.LENGTH_SHORT);
Spanned spanned = Html.fromHtml("我<img src=''>是一个<font color='#ff0000'>富文本</font>", new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable drawable=getResources().getDrawable(R.mipmap.caomei);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
return drawable;
}
}, null);
toast.setText(spanned);
toast.show();
这里的富文本不做过多的介绍,前面已经讲过;结果如下:
可以看到是一个很漂亮的Toast.
插入图片的模式
在插入图片的时候可以通过获得Toast的布局文件来在布局文件中加入各种控件的形式来完成各种富文本的一些操作,步骤如下:
1)获得toast的布局并将其强制造型为LinearLayout布局。
2)创建一个ImageView
3)在ImageView中加载一张图片
4)将ImageView加到布局中,并将其置于第一的位置
5)显示
代码如下:
Toast toast = Toast.makeText(getApplicationContext
(),"hehe",Toast.LENGTH_SHORT);
//1)获得toast的布局并将其强制造型为
LinearLayout
LinearLayout toast_view= (LinearLayout)
toast.getView();
//2)创建一个ImageView
ImageView image = new ImageView
(getApplicationContext());
// image.setImageResource
(R.mipmap.ic_launcher);
//3)在ImageView中加载一张图片
image.setImageDrawable(getResources
().getDrawable(R.mipmap.ic_launcher));
//4)将ImageView加到布局中,并将其置于第一的位置
toast_view.addView(image,0);
toast.show();
结果如下:
自定义模式
前面两种都是利用了系统自带的View,第三种可以自己设计一个View,使其更加符合我们的要求。这里我们用new新建一个Toast的对象。将新建的View用inflater实例化,并将每一个控件初始化,然后将view放入tosat中。toast。setView(View)。然后设置时间和show();
代码如下:
inflater=getLayoutInflater();
View toast_view= inflater.inflate(R.layout.mytoast,null);
ImageView toast_image= (ImageView) toast_view.findViewById(R.id.image_toast);
TextView toast_text= (TextView) toast_view.findViewById(R.id.text_toast);
toast_image.setImageResource(R.mipmap.caomei);
toast_text.setText("这是草莓哦");
Toast toast=new Toast(getApplicationContext());
toast.setView(toast_view);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
XML代码:
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="弹出Toast框"
/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="弹出富文本Toast框"
/>
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="弹出自定义Toast框"
/>
Dialog(弹窗)
Dialog是弹窗的设置,共有四种设计模式:1)简单设计模式。2)显示多条设计模式。3)单选设计模式。4)多选设计模式。5)自定义模式
简单设计模式
可以设置输入图片,标题(title),内容(message),三个按键。
代码如下:
public void onClick(View v) {
switch (v.getId()){
case R.id.button1:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.caomei);
builder.setTitle("这是标题");
builder.setMessage("这是内容");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"确认",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"取消",Toast.LENGTH_SHORT).show();
}
});
builder.show();
用 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);这行代码建立一个bilder,用这个builder进行一系列的设置。最后用builder.show();显示。
2)显示多条设计模式
调用了builder.setItem();这条语句,在其中加入了数组,点击事件,可以判断选择的是哪条信息:
代码如下:
private Button button1;
private Button button2;
String []mDate={"第一条信息","第二条信息","第三条信息","第四条信息"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2= (Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
button1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button1:
show1();
break;
case R.id.button2:
AlertDialog.Builder builder =new AlertDialog.Builder(MainActivity.this);
builder.setItems(mDate, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"你选择了第"+which+"条信息",Toast.LENGTH_SHORT).show();
}
});
builder.show();
结果如下:
单选设计模式
单选设计是显示的许多选项中只可以选择一个。
利用 builder.setSingleChoiceItems(sexs, 0, new DialogInterface.OnClickListener());将乘有信息的数组和默认的选项,以及点击事件写入。代码如下:
在单选模式中可以设置标题,图标,但不可以设置内容,如果设置了内容就会将单选的按钮覆盖掉。
AlertDialog.Builder builder =new AlertDialog.Builder(MainActivity.this);
builder.setSingleChoiceItems(sexs, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sex=sexs[which];
Toast.makeText(getApplicationContext(),"你的性别是"+sexs[which],Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确认",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
button3.setText(sex);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
结果如下:
多选设计模式
多选设计模式设计模式与单选设计模式基本相同
builder.setMultiChoiceItems(hobby, hobbymanager, new DialogInterface.OnMultiChoiceClickListener() )hobby为乘数据的数组,hobbymanager为布尔类型的数组,用于表明选项是否被选中。选中为true,否则为false
代码如下:
```android
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
//hobby为装内容的数组,hobbymanager为boolean类型的决定是否选中的数组
builder.setMultiChoiceItems(hobby, hobbymanager, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
hobbymanager[which]=isChecked;
}
});
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mhhy=new StringBuilder();
for(int i=0;i<hobbymanager.length;i++){
if(hobbymanager[i]){
mhhy.append(hobby[i]);
button4.setText(mhhy);
}
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
自定义模式
自定义模式是利用的builder的setView方法,将自定义的View实例化后传入setView 中,dialog的message就是自定义的view了。
自定义的xml为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入内容"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/go"
/>
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/mimi"
android:layout_gravity="center"
/>
</LinearLayout>
在代码中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("我是标题");
builder.setIcon(R.mipmap.ic_launcher);
LayoutInflater inflater = getLayoutInflater();//对自定义布局实例化
View myView = inflater.inflate(R.layout.myview, null);
Button button = (Button) myView.findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"你提交了",Toast.LENGTH_SHORT).show();
}
});
builder.setView(myView);//加入布局实例
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(),"你取消了",Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
StringBuilder builder1 = new StringBuilder();
for(int a = 0;a<bb.length;a++){
if(bb[a]){
builder1.append(sexs[a]);
}
}
Toast.makeText(getApplicationContext(),"你确定了"+builder1,Toast.LENGTH_SHORT).show();
}
});
Dialog dialog = builder.create();
dialog.show();
}
结果如下: