最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程實(shí)現(xiàn)Toast只顯示最后一條的方法

 更新時(shí)間:2017年08月31日 11:23:27   作者:QQxiaoqiang1573  
這篇文章主要介紹了Android編程實(shí)現(xiàn)Toast只顯示最后一條的方法,結(jié)合實(shí)例形式總結(jié)了Toast只顯示最后一條的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Android編程實(shí)現(xiàn)Toast只顯示最后一條的方法。分享給大家供大家參考,具體如下:

在做Android開(kāi)發(fā)中,時(shí)不時(shí)的可能會(huì)用到Toast,但用Toast的時(shí)候,連續(xù)使用會(huì)存在一個(gè)問(wèn)題,就是一條條顯示Toast。而不是直接顯示最后一條。因此,根據(jù)此需求,現(xiàn)在寫(xiě)了ToastUtil這個(gè)類(lèi),該類(lèi)中有三個(gè)方法供選擇。

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();
  }
  //方法二:注意此方法不能再子線(xiàn)程中使用
  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);
    }
  }
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android布局layout技巧總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android中Dialog的使用詳解

    Android中Dialog的使用詳解

    Dialog(對(duì)話(huà)框)是Android中常用的UI組件,用于臨時(shí)顯示重要信息或獲取用戶(hù)輸入,本文給大家介紹Android中Dialog的使用,感興趣的朋友一起看看吧
    2025-04-04
  • Android GridView簡(jiǎn)單實(shí)例

    Android GridView簡(jiǎn)單實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Android GridView簡(jiǎn)單實(shí)例,簡(jiǎn)單實(shí)現(xiàn)九宮格效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android Canvas繪制文字橫縱向?qū)R

    Android Canvas繪制文字橫縱向?qū)R

    這篇文章主要介紹了Android Canvas繪制文字橫縱向?qū)R,Align屬性決定了使用該畫(huà)筆時(shí),相較于繪制點(diǎn)的水平對(duì)稱(chēng)方式,分別是LEFT、CENTER、RIGHT,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容
    2022-06-06
  • 基于SceneForm實(shí)現(xiàn)子彈射擊(繪制子彈運(yùn)行軌跡)

    基于SceneForm實(shí)現(xiàn)子彈射擊(繪制子彈運(yùn)行軌跡)

    這篇文章主要為大家詳細(xì)介紹了基于SceneForm實(shí)現(xiàn)子彈射擊,繪制子彈運(yùn)行軌跡,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android開(kāi)發(fā)RecyclerView單獨(dú)刷新使用技巧

    Android開(kāi)發(fā)RecyclerView單獨(dú)刷新使用技巧

    本篇文章主要是分享下RecyclerView中子item如何單獨(dú)刷新以及子item的某一部分內(nèi)容如何實(shí)現(xiàn)單獨(dú)刷新,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android中3種圖片壓縮處理方法

    Android中3種圖片壓縮處理方法

    這篇文章主要介紹了Android中3種圖片壓縮處理方法,本文講解了質(zhì)量壓縮方法、獲得縮略圖、圖片縮放三種方法并分別給出示例代碼,需要的朋友可以參考下
    2015-06-06
  • Android實(shí)現(xiàn)app分享文件到微信功能

    Android實(shí)現(xiàn)app分享文件到微信功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)app分享文件到微信功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • android實(shí)現(xiàn)驗(yàn)證碼按鈕

    android實(shí)現(xiàn)驗(yàn)證碼按鈕

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)驗(yàn)證碼按鈕功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • android ListView和ProgressBar(進(jìn)度條控件)的使用方法

    android ListView和ProgressBar(進(jìn)度條控件)的使用方法

    這篇文章主要介紹了android ListView控件的使用方法和ProgressBar(進(jìn)度條控件)的使用方法,代碼大家可以參考使用
    2013-11-11
  • Android使用Handler實(shí)現(xiàn)定時(shí)器與倒計(jì)時(shí)器功能

    Android使用Handler實(shí)現(xiàn)定時(shí)器與倒計(jì)時(shí)器功能

    Handler的最常見(jiàn)應(yīng)用場(chǎng)景之一便是通過(guò)Handler在子線(xiàn)程中間接更新UI。這篇文章主要介紹了Android使用Handler實(shí)現(xiàn)定時(shí)器與倒計(jì)時(shí)器功能,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

蛟河市| 互助| 绥滨县| 宾阳县| 漳浦县| 兰西县| 舞阳县| 应城市| 蒙城县| 苏尼特右旗| 牙克石市| 淮阳县| 南投县| 灌云县| 上思县| 五家渠市| 上虞市| 阿鲁科尔沁旗| 海安县| 凤山县| 隆尧县| 武汉市| 河东区| 公安县| 镇巴县| 九台市| 凉山| 紫阳县| 康定县| 襄垣县| 太和县| 朝阳市| 丹棱县| 凌源市| 齐齐哈尔市| 临潭县| 彭泽县| 旌德县| 浮梁县| 清新县| 襄汾县|