AndroidUtils:Android開發不得不收藏的Utils

codeGoogle發表於2018-09-27

作者:小小程式設計師jh 連結:www.jianshu.com/p/ebae69928…

AndroidUtils Android開發不得不收藏的Utils 之前寫這篇文章主要是專案應用到的Utils,發現已經有一個更全面的開源庫總結,所以還是非常震驚可以總結的這麼全面,在此我準備重新梳理一遍~

AndroidUtils:Android必備utilCode

具體Demo使用參考開源github:AndroidUtilCode。本文只是稍微記錄下方便自己查閱。

Activity相關→ActivityUtils.java

**

App相關→AppUtils.java

狀態列相關→BarUtils.java

AndroidUtils:Android開發不得不收藏的Utils

清除相關→CleanUtils.java

剪貼簿相關→ClipboardUtils.java

關閉相關→CloseUtils.java

常量相關→ConstUtils.java

轉換相關→ConvertUtils.java

崩潰相關→CrashUtils.java

裝置相關→DeviceUtils.java

image.png

判空相關→EmptyUtils.java

編碼解碼相關→EncodeUtils.java

加密解密相關→EncryptUtils.java

encryptMD2, encryptMD2ToString                        : MD2加密
encryptMD5, encryptMD5ToString                        : MD5加密
encryptMD5File, encryptMD5File2String                 : MD5加密檔案
encryptSHA1, encryptSHA1ToString                      : SHA1加密
encryptSHA224, encryptSHA224ToString                  : SHA224加密
encryptSHA256, encryptSHA256ToString                  : SHA256加密
encryptSHA384, encryptSHA384ToString                  : SHA384加密
encryptSHA512, encryptSHA512ToString                  : SHA512加密
encryptHmacMD5, encryptHmacMD5ToString                : HmacMD5加密
encryptHmacSHA1, encryptHmacSHA1ToString              : HmacSHA1加密
encryptHmacSHA224, encryptHmacSHA224ToString          : HmacSHA224加密
encryptHmacSHA256, encryptHmacSHA256ToString          : HmacSHA256加密
encryptHmacSHA384, encryptHmacSHA384ToString          : HmacSHA384加密
encryptHmacSHA512, encryptHmacSHA512ToString          : HmacSHA512加密
encryptDES, encryptDES2HexString, encryptDES2Base64   : DES加密
decryptDES, decryptHexStringDES, decryptBase64DES     : DES解密
encrypt3DES, encrypt3DES2HexString, encrypt3DES2Base64: 3DES加密
decrypt3DES, decryptHexString3DES, decryptBase64_3DES : 3DES解密
encryptAES, encryptAES2HexString, encryptAES2Base64   : AES加密
decryptAES, decryptHexStringAES, decryptBase64AES     : AES解密

複製程式碼

檔案相關→FileUtils.java

getFileByPath            : 根據檔案路徑獲取檔案
isFileExists             : 判斷檔案是否存在
rename                   : 重新命名檔案
isDir                    : 判斷是否是目錄
isFile                   : 判斷是否是檔案
createOrExistsDir        : 判斷目錄是否存在,不存在則判斷是否建立成功
createOrExistsFile       : 判斷檔案是否存在,不存在則判斷是否建立成功
createFileByDeleteOldFile: 判斷檔案是否存在,存在則在建立之前刪除
copyDir                  : 複製目錄
copyFile                 : 複製檔案
moveDir                  : 移動目錄
moveFile                 : 移動檔案
deleteDir                : 刪除目錄
deleteFile               : 刪除檔案
listFilesInDir           : 獲取目錄下所有檔案
listFilesInDir           : 獲取目錄下所有檔案包括子目錄
listFilesInDirWithFilter : 獲取目錄下所有字尾名為suffix的檔案
listFilesInDirWithFilter : 獲取目錄下所有字尾名為suffix的檔案包括子目錄
listFilesInDirWithFilter : 獲取目錄下所有符合filter的檔案
listFilesInDirWithFilter : 獲取目錄下所有符合filter的檔案包括子目錄
searchFileInDir          : 獲取目錄下指定檔名的檔案包括子目錄
writeFileFromIS          : 將輸入流寫入檔案
writeFileFromString      : 將字串寫入檔案
readFile2List            : 指定編碼按行讀取檔案到連結串列中
readFile2String          : 指定編碼按行讀取檔案到字串中
readFile2Bytes           : 讀取檔案到字元陣列中
getFileLastModified      : 獲取檔案最後修改的毫秒時間戳
getFileCharsetSimple     : 簡單獲取檔案編碼格式
getFileLines             : 獲取檔案行數
getDirSize               : 獲取目錄大小
getFileSize              : 獲取檔案大小
getDirLength             : 獲取目錄長度
getFileLength            : 獲取檔案長度
getFileMD5               : 獲取檔案的MD5校驗碼
getFileMD5ToString       : 獲取檔案的MD5校驗碼
getDirName               : 根據全路徑獲取最長目錄
getFileName              : 根據全路徑獲取檔名
getFileNameNoExtension   : 根據全路徑獲取檔名不帶擴充名
getFileExtension         : 根據全路徑獲取檔案擴充名

複製程式碼

Handler相關→HandlerUtils.java

防止記憶體洩露Handler(匿名內部類)持有外部類的引用

複製程式碼

圖片相關→ImageUtils.java

bitmap2Bytes, bytes2Bitmap      : bitmap與byteArr互轉
drawable2Bitmap, bitmap2Drawable: drawable與bitmap互轉
drawable2Bytes, bytes2Drawable  : drawable與byteArr互轉
getBitmap                       : 獲取bitmap
scale                           : 縮放圖片
clip                            : 裁剪圖片
skew                            : 傾斜圖片
rotate                          : 旋轉圖片
getRotateDegree                 : 獲取圖片旋轉角度
toRound                         : 轉為圓形圖片
toRoundCorner                   : 轉為圓角圖片
fastBlur                        : 快速模糊
renderScriptBlur                : renderScript模糊圖片
stackBlur                       : stack模糊圖片
addFrame                        : 新增顏色邊框
addReflection                   : 新增倒影
addTextWatermark                : 新增文字水印
addImageWatermark               : 新增圖片水印
toAlpha                         : 轉為alpha點陣圖
toGray                          : 轉為灰度圖片
save                            : 儲存圖片
isImage                         : 根據檔名判斷檔案是否為圖片
getImageType                    : 獲取圖片型別
compressByScale                 : 按縮放壓縮
compressByQuality               : 按質量壓縮
compressBySampleSize            : 按取樣大小壓縮

複製程式碼

意圖相關→IntentUtils.java

getInstallAppIntent        : 獲取安裝App(支援6.0)的意圖
getUninstallAppIntent      : 獲取解除安裝App的意圖
getLaunchAppIntent         : 獲取開啟App的意圖
getAppDetailsSettingsIntent: 獲取App具體設定的意圖
getShareTextIntent         : 獲取分享文字的意圖
getShareImageIntent        : 獲取分享圖片的意圖
getComponentIntent         : 獲取其他應用元件的意圖
getShutdownIntent          : 獲取關機的意圖
getCaptureIntent           : 獲取拍照的意圖

複製程式碼

鍵盤相關→KeyboardUtils.java

hideSoftInput               : 動態隱藏軟鍵盤
clickBlankArea2HideSoftInput: 點選螢幕空白區域隱藏軟鍵盤
showSoftInput               : 動態顯示軟鍵盤
toggleSoftInput             : 切換鍵盤顯示與否狀態

複製程式碼

定位相關→LocationUtils.java

isGpsEnabled     : 判斷Gps是否可用
isLocationEnabled: 判斷定位是否可用
openGpsSettings  : 開啟Gps設定介面
register         : 註冊
unregister       : 登出
getAddress       : 根據經緯度獲取地理位置
getCountryName   : 根據經緯度獲取所在國家
getLocality      : 根據經緯度獲取所在地
getStreet        : 根據經緯度獲取所在街道

複製程式碼

日誌相關→LogUtils.java

init      : 初始化函式
getBuilder: 獲取LogUtils建造者
v         : Verbose日誌
d         : Debug日誌
i         : Info日誌
w         : Warn日誌
e         : Error日誌

複製程式碼

網路相關→NetworkUtils.java

openWirelessSettings  : 開啟網路設定介面
isConnected           : 判斷網路是否連線
isAvailableByPing     : 判斷網路是否可用
getDataEnabled        : 判斷移動資料是否開啟
setDataEnabled        : 開啟或關閉移動資料
is4G                  : 判斷網路是否是4G
getWifiEnabled        : 判斷wifi是否開啟
setWifiEnabled        : 開啟或關閉wifi
isWifiConnected       : 判斷wifi是否連線狀態
isWifiAvailable       : 判斷wifi資料是否可用
getNetworkOperatorName: 獲取行動網路運營商名稱
getNetworkType        : 獲取當前網路型別
getIPAddress          : 獲取IP地址
getDomainAddress      : 獲取域名ip地址

複製程式碼

手機相關→PhoneUtils.java

isPhone            : 判斷裝置是否是手機
getIMEI            : 獲取IMEI碼
getIMSI            : 獲取IMSI碼
getPhoneType       : 獲取移動終端型別
isSimCardReady     : 判斷sim卡是否準備好
getSimOperatorName : 獲取Sim卡運營商名稱
getSimOperatorByMnc: 獲取Sim卡運營商名稱
getPhoneStatus     : 獲取手機狀態資訊
dial               : 跳至撥號介面
call               : 撥打phoneNumber
sendSms            : 跳至傳送簡訊介面
sendSmsSilent      : 傳送簡訊
getAllContactInfo  : 獲取手機聯絡人
getContactNum      : 開啟手機聯絡人介面點選聯絡人後便獲取該號碼
getAllSMS          : 獲取手機簡訊並儲存到xml中

複製程式碼

拼音相關→PinyinUtils.java

ccs2Pinyin           : 漢字轉拼音
ccs2Pinyin           : 漢字轉拼音
getPinyinFirstLetter : 獲取第一個漢字首字母
getPinyinFirstLetters: 獲取所有漢字的首字母
getSurnamePinyin     : 根據名字獲取姓氏的拼音
getSurnameFirstLetter: 根據名字獲取姓氏的首字母

複製程式碼

程式相關→ProcessUtils.java

getForegroundProcessName  : 獲取前臺執行緒包名
killAllBackgroundProcesses: 殺死所有的後臺服務程式
killBackgroundProcesses   : 殺死後臺服務程式

複製程式碼

正則相關→RegexUtils.java

isMobileSimple : 驗證手機號(簡單)
isMobileExact  : 驗證手機號(精確)
isTel          : 驗證電話號碼
isIDCard15     : 驗證身份證號碼15位
isIDCard18     : 驗證身份證號碼18位
isEmail        : 驗證郵箱
isURL          : 驗證URL
isZh           : 驗證漢字
isUsername     : 驗證使用者名稱
isDate         : 驗證yyyy-MM-dd格式的日期校驗,已考慮平閏年
isIP           : 驗證IP地址
isMatch        : 判斷是否匹配正則
getMatches     : 獲取正則匹配的部分
getSplits      : 獲取正則匹配分組
getReplaceFirst: 替換正則匹配的第一部分
getReplaceAll  : 替換所有正則匹配的部分

複製程式碼

螢幕相關→ScreenUtils.java

getScreenWidth         : 獲取螢幕的寬度(單位:px)
getScreenHeight        : 獲取螢幕的高度(單位:px)
setLandscape           : 設定螢幕為橫屏
setPortrait            : 設定螢幕為豎屏
isLandscape            : 判斷是否橫屏
isPortrait             : 判斷是否豎屏
getScreenRotation      : 獲取螢幕旋轉角度
captureWithStatusBar   : 獲取當前螢幕截圖,包含狀態列
captureWithoutStatusBar: 獲取當前螢幕截圖,不包含狀態列
isScreenLock           : 判斷是否鎖屏

複製程式碼

SD卡相關→SDCardUtils.java

isSDCardEnable: 判斷SD卡是否可用
getSDCardPath : 獲取SD卡路徑
getDataPath   : 獲取SD卡Data路徑
getFreeSpace  : 計算SD卡的剩餘空間
getSDCardInfo : 獲取SD卡資訊

複製程式碼

服務相關→ServiceUtils.java

getAllRunningService: 獲取所有執行的服務
startService        : 啟動服務
stopService         : 停止服務
bindService         : 繫結服務
unbindService       : 解綁服務
isServiceRunning    : 判斷服務是否執行

複製程式碼

Shell相關→ShellUtils.java

execCmd: 是否是在root下執行命令

複製程式碼

尺寸相關→SizeUtils.java

dp2px, px2dp     : dp與px轉換
sp2px, px2sp     : sp與px轉換
applyDimension   : 各種單位轉換
forceGetViewSize : 在onCreate中獲取檢視的尺寸
measureView      : 測量檢視尺寸
getMeasuredWidth : 獲取測量檢視寬度
getMeasuredHeight: 獲取測量檢視高度

複製程式碼

Snackbar相關→SnackbarUtils.java

showShortSnackbar     : 顯示短時snackbar
showLongSnackbar      : 顯示長時snackbar
showIndefiniteSnackbar: 顯示自定義時長snackbar
addView               : 為SnackBar新增布局
dismissSnackbar       : 取消snackbar顯示

複製程式碼

SpannableString相關工具類→SpannableStringUtils.java

getBuilder        : 獲取建造者
setFlag           : 設定標識
setForegroundColor: 設定前景色
setBackgroundColor: 設定背景色
setQuoteColor     : 設定引用線的顏色
setLeadingMargin  : 設定縮排
setBullet         : 設定列表標記
setProportion     : 設定字型比例
setXProportion    : 設定字型橫向比例
setStrikethrough  : 設定刪除線
setUnderline      : 設定下劃線
setSuperscript    : 設定上標
setSubscript      : 設定下標
setBold           : 設定粗體
setItalic         : 設定斜體
setBoldItalic     : 設定粗斜體
setFontFamily     : 設定字型
setAlign          : 設定對齊
setBitmap         : 設定圖片
setDrawable       : 設定圖片
setUri            : 設定圖片
setResourceId     : 設定圖片
setClickSpan      : 設定點選事件
setUrl            : 設定超連結
setBlur           : 設定模糊
append            : 追加樣式字串
create            : 建立樣式字串

複製程式碼

SP相關→SPUtils.java

SPUtils   : SPUtils建構函式
putString : SP中寫入String型別value
getString : SP中讀取String
putInt    : SP中寫入int型別value
getInt    : SP中讀取int
putLong   : SP中寫入long型別value
getLong   : SP中讀取long
putFloat  : SP中寫入float型別value
getFloat  : SP中讀取float
putBoolean: SP中寫入boolean型別value
getBoolean: SP中讀取boolean
getAll    : SP中獲取所有鍵值對
remove    : SP中移除該key
contains  : SP中是否存在該key
clear     : SP中清除所有資料

複製程式碼

字串相關→StringUtils.java

isEmpty         : 判斷字串是否為null或長度為0
isSpace         : 判斷字串是否為null或全為空格
equals          : 判斷兩字串是否相等
equalsIgnoreCase: 判斷兩字串忽略大小寫是否相等
null2Length0    : null轉為長度為0的字串
length          : 返回字串長度
upperFirstLetter: 首字母大寫
lowerFirstLetter: 首字母小寫
reverse         : 反轉字串
toDBC           : 轉化為半形字元
toSBC           : 轉化為全形字元

複製程式碼

執行緒池相關→ThreadPoolUtils.java

ThreadPoolUtils       : ThreadPoolUtils建構函式
execute               : 在未來某個時間執行給定的命令
execute               : 在未來某個時間執行給定的命令連結串列
shutDown              : 待以前提交的任務執行完畢後關閉執行緒池
shutDownNow           : 試圖停止所有正在執行的活動任務
isShutDown            : 判斷執行緒池是否已關閉
isTerminated          : 關閉執行緒池後判斷所有任務是否都已完成
awaitTermination      : 請求關閉、發生超時或者當前執行緒中斷
submit                : 提交一個Callable任務用於執行
submit                : 提交一個Runnable任務用於執行
invokeAll, invokeAny  : 執行給定的任務
schedule              : 延遲執行Runnable命令
schedule              : 延遲執行Callable命令
scheduleWithFixedRate : 延遲並迴圈執行命令
scheduleWithFixedDelay: 延遲並以固定休息時間迴圈執行命令

複製程式碼

時間相關→TimeUtils.java

millis2String           : 將時間戳轉為時間字串
string2Millis           : 將時間字串轉為時間戳
string2Date             : 將時間字串轉為Date型別
date2String             : 將Date型別轉為時間字串
date2Millis             : 將Date型別轉為時間戳
millis2Date             : 將時間戳轉為Date型別
getTimeSpan             : 獲取兩個時間差(單位:unit)
getFitTimeSpan          : 獲取合適型兩個時間差
getNowTimeMills         : 獲取當前毫秒時間戳
getNowTimeString        : 獲取當前時間字串
getNowTimeDate          : 獲取當前Date
getTimeSpanByNow        : 獲取與當前時間的差(單位:unit)
getFitTimeSpanByNow     : 獲取合適型與當前時間的差
getFriendlyTimeSpanByNow: 獲取友好型與當前時間的差
isSameDay               : 判斷是否同一天
isLeapYear              : 判斷是否閏年
getWeek, getWeekIndex   : 獲取星期
getWeekOfMonth          : 獲取月份中的第幾周
getWeekOfYear           : 獲取年份中的第幾周
getChineseZodiac        : 獲取生肖
getZodiac               : 獲取星座

複製程式碼

吐司相關→ToastUtils.java

init              : 吐司初始化
showShortToastSafe: 安全地顯示短時吐司
showLongToastSafe : 安全地顯示長時吐司
showShortToast    : 顯示短時吐司
showLongToast     : 顯示長時吐司
cancelToast       : 取消吐司顯示

複製程式碼

壓縮相關→ZipUtils.java→Test

zipFiles          : 批量壓縮檔案
zipFile           : 壓縮檔案
unzipFiles        : 批量解壓檔案
unzipFile         : 解壓檔案
unzipFileByKeyword: 解壓帶有關鍵字的檔案
getFilesPath      : 獲取壓縮檔案中的檔案路徑連結串列
getComments       : 獲取壓縮檔案中的註釋連結串列
getEntries        : 獲取壓縮檔案中的檔案物件

複製程式碼

1.判斷手機格式(正規表示式)

public static Boolean isPhone(String str) {
        String regex = "^1[3|4|5|7|8]\\d{9}$";
        return match(regex, str);
    }

    private static boolean match(String regex, String str) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

//程式碼呼叫:

複製程式碼

2.dp-px;px-dp

 /**
     * 根據手機的解析度從 dp 的單位 轉成為 px(畫素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根據手機的解析度從 px(畫素) 的單位 轉成為 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
}

複製程式碼

3. 網路判斷 2G - 3G - 4G -wifi

/**
 * Created by ziyang on 16/12/14.
 * Version 1.0
 */

public class NetWorkHelper {

    /**
     * 沒有網路
     */
    public static final int NETWORKTYPE_INVALID = 0;
    /**
     * wap網路
     */
    public static final int NETWORKTYPE_WAP = 1;
    /**
     * 2G網路
     */
    public static final int NETWORKTYPE_2G = 2;
    /**
     * 3G和3G以上網路,或統稱為快速網路
     */
    public static final int NETWORKTYPE_3G = 3;
    /**
     * wifi網路
     */
    public static final int NETWORKTYPE_WIFI = 4;

    private static boolean isFastMobileNetwork(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        switch (telephonyManager.getNetworkType()) {
            case TelephonyManager.NETWORK_TYPE_1xRTT:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_CDMA:
                return false; // ~ 14-64 kbps
            case TelephonyManager.NETWORK_TYPE_EDGE:
                return false; // ~ 50-100 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
                return true; // ~ 400-1000 kbps
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
                return true; // ~ 600-1400 kbps
            case TelephonyManager.NETWORK_TYPE_GPRS:
                return false; // ~ 100 kbps
            case TelephonyManager.NETWORK_TYPE_HSDPA:
                return true; // ~ 2-14 Mbps
            case TelephonyManager.NETWORK_TYPE_HSPA:
                return true; // ~ 700-1700 kbps
            case TelephonyManager.NETWORK_TYPE_HSUPA:
                return true; // ~ 1-23 Mbps
            case TelephonyManager.NETWORK_TYPE_UMTS:
                return true; // ~ 400-7000 kbps
            case TelephonyManager.NETWORK_TYPE_EHRPD:
                return true; // ~ 1-2 Mbps
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
                return true; // ~ 5 Mbps
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return true; // ~ 10-20 Mbps
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return false; // ~25 kbps
            case TelephonyManager.NETWORK_TYPE_LTE:
                return true; // ~ 10+ Mbps
            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
                return false;
            default:
                return false;
        }
    }

    /**
     * 獲取網路狀態,wifi,wap,2g,3g.
     *
     * @param context 上下文
     * @return int 網路狀態 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G},
     * *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}*
     * <p>{@link #NETWORKTYPE_WIFI}
     */
    public static int getNetWorkType(Context context) {
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = manager.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            String type = networkInfo.getTypeName();
            if (type.equalsIgnoreCase("WIFI")) {
                return NETWORKTYPE_WIFI;
            } else if (type.equalsIgnoreCase("MOBILE")) {
                String proxyHost = android.net.Proxy.getDefaultHost();
                return TextUtils.isEmpty(proxyHost)
                        ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)
                        : NETWORKTYPE_WAP;
            }
        } else {
            return NETWORKTYPE_INVALID;
        }
        return NETWORKTYPE_INVALID;
    }

    public static boolean isNetWorkConn(Context context) {

        return getNetWorkType(context) != 0;
    }
}

複製程式碼

4.LogUtils.java debug,release no log,當然可以新增更詳細的比如新增時間,msg等等

/**
 * LogUtils log工具類
 * @author ziyang
 */

public class LogUtils {

    public static boolean isDebug = BuildConfig.LOG_DEBUG;

    // 下面是傳入自定義tag的函式
    public static void i(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void d(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void e(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }

    public static void v(String tag, String msg)
    {
        if (isDebug)
            Log.i(tag, msg);
    }
}

//在app build.gradle配置
 buildTypes {
        debug {
            buildConfigField "boolean", "LOG_DEBUG", "true"
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //signingConfig signingConfigs.debug
        }
        release {
            buildConfigField "boolean", "LOG_DEBUG", "false"
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

複製程式碼

5.MyToast.java當然可以擴充,時間控制,content內容控制等等

public class MyToast extends Toast {
    private Toast mToast;

public MyToast(Context context) {
    super(context);
}

public void showToast(String text, Context mContext) {
    if (mToast == null) {
        mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT);
    } else {
        mToast.setText(text);
        mToast.setDuration(Toast.LENGTH_SHORT);
    }
    mToast.show();
}

public void cancelToast() {
    if (mToast != null) {
        mToast.cancel();
    }
}

}

複製程式碼

閱讀更多

技術精華總結,說說我上半年都幹了什麼

【Android】一次面試總結

相關文章