安卓自定义ToastView

上效果:

安卓自定义ToastView

结构目录:

安卓自定义ToastView

代码解析:

1、toast.xml

布局很简单就是一个ImageView和TextView横向排列,不解释:

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.               android:layout_width="80dp"  
  4.               android:layout_height="30dp"  
  5.               android:padding="10dp"  
  6.               android:gravity="center"  
  7.               android:background="@drawable/toaststyle"  
  8.               android:orientation="horizontal">  
  9.   
  10.     <ImageView  
  11.         android:layout_width="30dp"  
  12.         android:layout_height="30dp"  
  13.         android:id="@+id/imageView"/>  
  14.   
  15.     <TextView  
  16.         android:id="@+id/message"  
  17.         android:layout_width="wrap_content"  
  18.         android:layout_height="wrap_content"  
  19.         android:layout_weight="1"  
  20.         android:shadowColor="#bbfcd603"  
  21.         android:shadowRadius="2.75"  
  22.         android:textColor="#ffffff"  
  23.         />  
  24. </LinearLayout>  
2、toaststyle.xml

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <solid android:color="#21211d" />  
  4.     <corners android:topLeftRadius="10dp"  
  5.              android:topRightRadius="10dp"  
  6.              android:bottomRightRadius="10dp"  
  7.              android:bottomLeftRadius="10dp"/>  
  8. </shape>  
3、CustomToast.java开始我们的封装代码

[html] view plain copy
  1. package com.example.administrator.customview;  
  2.   
  3. import android.content.Context;  
  4. import android.view.Gravity;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.WindowManager;  
  8. import android.widget.ImageView;  
  9. import android.widget.TextView;  
  10. import android.widget.Toast;  
  11.   
  12. /**  
  13.  * Created by Administrator on 2016/6/16 0016.  
  14.  */  
  15. public class CustomToast {  
  16.     private static TextView mTextView;  
  17.     private static ImageView mImageView;  
  18.   
  19.     public static void showToast(Context context, String message) {  
  20.         //加载Toast布局  
  21.         View toastRoot = LayoutInflater.from(context).inflate(R.layout.toast, null);  
  22.         //初始化布局控件  
  23.         mTextView = (TextView) toastRoot.findViewById(R.id.message);  
  24.         mImageView = (ImageView) toastRoot.findViewById(R.id.imageView);  
  25.         //为控件设置属性  
  26.         mTextView.setText(message);  
  27.         mImageView.setImageResource(R.mipmap.ic_launcher);  
  28.         //Toast的初始化  
  29.         Toast toastStart = new Toast(context);  
  30.         //获取屏幕高度  
  31.         WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);  
  32.         int height = wm.getDefaultDisplay().getHeight();  
  33.         //Toast的Y坐标是屏幕高度的1/3,不会出现不适配的问题  
  34.         toastStart.setGravity(Gravity.TOP, 0, height / 3);  
  35.         toastStart.setDuration(Toast.LENGTH_LONG);  
  36.         toastStart.setView(toastRoot);  
  37.         toastStart.show();  
  38.     }  
  39. }  
代码很详细,不用多解释,这里只是一个简单的例子,大家感兴趣的可以自己添加喜欢的设计,顺便说一下,这里很多属性都可以自己抽出来的当成变量的,大家可以根据自己的风格封装乘工具类使用。

这里都是一些纯粹的代码,没有涉及到一些其他的资源文件,大家copy过来就直接用,这里就不上传例子了,感觉copy这用更简单。好了,简单的Demo就到这里了。