Toast用于向用户显示一些帮助/提示。下面我做了4中效果,来说明Toast的强大,定义一个属于你自己的Toast。
1.默认效果
2.自定义显示位置效果
3.带图片效果
4.完全自定义效果
完整代码:
MainActivity.class
package com.ownchan.toastdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Toast mToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.default_toast).setOnClickListener(this);
findViewById(R.id.define_toast).setOnClickListener(this);
findViewById(R.id.image_toast).setOnClickListener(this);
findViewById(R.id.complete_define_toast).setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.default_toast:
Toast.makeText(getApplicationContext(), "Default Toast", Toast.LENGTH_SHORT).show();
break;
case R.id.define_toast:
mToast = Toast.makeText(getApplicationContext(),
"Define Toast", Toast.LENGTH_LONG);
mToast.setGravity(Gravity.CENTER, 0, 0);
mToast.show();
break;
case R.id.image_toast:
mToast = Toast.makeText(getApplicationContext(),
"Image Toast", Toast.LENGTH_LONG);
mToast.setGravity(Gravity.CENTER, 0, 0);
LinearLayout toastView = (LinearLayout) mToast.getView();
ImageView imageCodeProject = new ImageView(getApplicationContext());
imageCodeProject.setImageResource(R.mipmap.ic_launcher);
toastView.addView(imageCodeProject, 0);
mToast.show();
break;
case R.id.complete_define_toast:
View layout = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_center_toast, null);
TextView toastText1 = (TextView) layout.findViewById(R.id.view_bottom_toast_txt);
toastText1.setText("Complete Define Toast");
Toast toast = new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setView(layout);
toast.show();
break;
default:
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/default_toast"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="#a1a1a1"
android:layout_marginTop="100dip"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Default Toast" />
<TextView
android:id="@+id/define_toast"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="#a1a1a1"
android:layout_marginTop="20dip"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Define Toast" />
<TextView
android:id="@+id/image_toast"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="#a1a1a1"
android:layout_marginTop="20dip"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Image Toast" />
<TextView
android:id="@+id/complete_define_toast"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="#a1a1a1"
android:layout_marginTop="20dip"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:text="Complete Define Toast" />
</LinearLayout>
view_center_toast.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shape_toast_circle"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:scaleType="center"/>
<TextView
android:id="@+id/view_bottom_toast_txt"
android:layout_width="145dp"
android:layout_height="34dp"
android:background="#00ffffff"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="13sp" />
</LinearLayout>
shape_toast_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#73000000" />
<corners android:radius="4dp" />
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>