简介
xxx
属性
xxx
封装一
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/loading_background"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/d36">
<ImageView
android:id="@+id/ivToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/d6"
android:contentDescription="@string/toDo" />
<TextView
android:id="@+id/tvToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/background"
android:textSize="@dimen/s13" />
</LinearLayout>
loading_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/d3" />
<solid android:color="@color/color_8c000000" />
</shape>
<color name="color_8c000000">#8c000000</color>
ToastUtils
package util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.self.zsp.dfs.R;
import application.App;
/**
* Created on 2017/9/14.
*
* @author xxx
* @decs 吐司
*/
public class ToastUtils {
private static Toast toast;
private static Toast toast2;
/**
* 短吐司
*
* @param content 内容
*/
public static void shortShow(String content) {
if (toast == null) {
toast = Toast.makeText(App.getInstance(), content, Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
}
/**
* 长吐司
*
* @param content 内容
*/
public static void longShow(String content) {
if (toast == null) {
toast = Toast.makeText(App.getInstance(), content, Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
}
/**
* 图文
*
* @param hint 提示
* @param imageResource 图
*/
public static void showImageText(final String hint, final int imageResource) {
if (toast2 == null) {
toast2 = new Toast(App.getInstance());
}
@SuppressLint("InflateParams") View view = LayoutInflater.from(App.getInstance()).inflate(R.layout.toast, null);
TextView tv = view.findViewById(R.id.tvToast);
tv.setText(TextUtils.isEmpty(hint) ? "" : hint);
ImageView iv = view.findViewById(R.id.ivToast);
if (imageResource > 0) {
iv.setVisibility(View.VISIBLE);
iv.setImageResource(imageResource);
} else {
iv.setVisibility(View.GONE);
}
toast2.setView(view);
toast2.setGravity(Gravity.CENTER, 0, 0);
toast2.setDuration(Toast.LENGTH_SHORT);
toast2.show();
}
}
封装二
优化频提
布局
同上
loading_background.xml
同上
ToastUtils
package util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.lalala.lalala.R;
/**
* Created on 2017/9/14.
*
* @author 郑少鹏
* @decs 吐司
*/
public class ToastUtils {
private static Toast toast;
/**
* 短吐司
*
* @param content 内容
*/
public static void shortShow(Context context, String content) {
if (toast != null) {
toast.cancel();
}
toast = Toast.makeText(context.getApplicationContext(), content, Toast.LENGTH_SHORT);
toast.show();
}
/**
* 长吐司
*
* @param context 上下文
* @param content 内容
*/
public static void longShow(Context context, String content) {
if (toast != null) {
toast.cancel();
}
toast = Toast.makeText(context.getApplicationContext(), content, Toast.LENGTH_LONG);
toast.show();
}
/**
* 图文
*
* @param context 上下文
* @param hint 提
* @param imageResource 图
* @param duration 时长
*/
public static void imageTextShow(Context context, final String hint, final int imageResource, int duration) {
if (toast != null) {
toast.cancel();
}
@SuppressLint("InflateParams") View view = LayoutInflater.from(context.getApplicationContext()).inflate(R.layout.toast, null);
TextView tv = view.findViewById(R.id.tvToast);
tv.setText(TextUtils.isEmpty(hint) ? "" : hint);
ImageView iv = view.findViewById(R.id.ivToast);
if (imageResource > 0) {
iv.setVisibility(View.VISIBLE);
iv.setImageResource(imageResource);
} else {
iv.setVisibility(View.GONE);
}
toast = new Toast(context.getApplicationContext());
toast.setView(view);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(duration);
toast.show();
}
}
内存泄漏
package util;
import android.content.Context;
import android.widget.Toast;
import java.lang.ref.WeakReference;
/**
* Created on 2017/9/14.
*
* @author 郑少鹏
* @decs 吐司
*/
public class ToastUtils {
private static Toast toast;
/**
* 短吐司
*
* @param content 内容
*/
public static void shortShow(Context context, String content) {
WeakReference<Context> weakReference = new WeakReference<>(context);
if (toast != null) {
toast.cancel();
}
toast = Toast.makeText(weakReference.get(), content, Toast.LENGTH_SHORT);
toast.show();
}
}
如上仍泄漏换Toasty。
失效
注意
Toast连显时长仅持续短或长时。