栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android编程实现Toast只显示最后一条的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android编程实现Toast只显示最后一条的方法

本文实例讲述了Android编程实现Toast只显示最后一条的方法。分享给大家供大家参考,具体如下:

在做Android开发中,时不时的可能会用到Toast,但用Toast的时候,连续使用会存在一个问题,就是一条条显示Toast。而不是直接显示最后一条。因此,根据此需求,现在写了ToastUtil这个类,该类中有三个方法供选择。

ToastUtil.Java

import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
public class ToastUtil {
  //方法一
  private static Handler mHandler = new Handler(Looper.getMainLooper());
  private static Toast mToast = null;
  private static Object synObject = new Object();
  public static void showToastByThread(Context context, String msg){
    showToastByThread(context, msg, Toast.LENGTH_SHORT);
  }
  public static void showToastByThread(Context context, int msg){
    showToastByThread(context, context.getText(msg), Toast.LENGTH_SHORT);
  }
  public static void showToastByThread(final Context context, final CharSequence msg, final int length){
    new Thread(new Runnable() {
      @Override
      public void run() {
 mHandler.post(new Runnable() {
   @Override
   public void run() {
     synchronized (synObject) {
if (mToast != null){
  mToast.setText(msg);
  mToast.setDuration(length);
}else{
  mToast = Toast.makeText(context, msg, length);
}
mToast.show();
     }
   }
 });
      }
    }).start();
  }
  //方法二:注意此方法不能再子线程中使用
  private static long oneTime;
  private static long twoTime;
  private static String oldMsg;
  public static void showToastByTime(Context context, String msg){
    if (mToast == null) {
      mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
      mToast.show();
      oneTime = System.currentTimeMillis();
    } else {
      twoTime = System.currentTimeMillis();
      if (msg.equals(oldMsg)){
 if (twoTime-oneTime > Toast.LENGTH_SHORT){
   mToast.show();
 }
      } else {
 oldMsg = msg;
 mToast.setText(msg);
 mToast.show();
      }
    }
    oneTime = twoTime;
  }
  public static void showToastByTime(Context context, int msg){
    showToastByTime(context, context.getString(msg));
  }
  //方法三
  public static TextView mTextView;
  public static WindowManager mWindowManager = null;
  private static Handler mPriHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
      cancelToast();
    }
  };
  public static void showToastByWindow(Context context, String msg){
    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    if (mTextView == null){
      mTextView = new TextView(context);
    }
    mTextView.setText(msg);
    mTextView.setTextSize(20);
    mTextView.setPadding(0, 0, 0, 30);
    if (mTextView.getParent() == null){
      WindowManager.LayoutParams params = new WindowManager.LayoutParams();
      params.gravity= Gravity.BOTTOM;
      params.alpha = 0.65f;
      params.x = 0;
      params.height = WindowManager.LayoutParams.WRAP_CONTENT;
      params.width = WindowManager.LayoutParams.WRAP_CONTENT;
      params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
   WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
   WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
   WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
      params.format = PixelFormat.TRANSLUCENT;
      params.windowAnimations = 0;
      mWindowManager.addView(mTextView, params);
      mPriHandler.sendEmptyMessageDelayed(101, 1000);
    } else {
      mTextView.setText(msg);
      mPriHandler.removeMessages(101);
      mPriHandler.sendEmptyMessageDelayed(101, 1000);
    }
  }
  public static void cancelToast(){
    if (mTextView != null && mTextView.getParent() != null){
      mWindowManager.removeView(mTextView);
    }
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/157931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号