亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 5.0以上Toast不顯示的解決方法

 更新時(shí)間:2016年11月14日 08:55:01   作者:inerdstack  
最近在開發(fā)中我們經(jīng)常會(huì)在適配5.0以后的機(jī)型遇到各種各樣的問(wèn)題,其中有一個(gè)不大不小的問(wèn)題就是:Toast不顯示問(wèn)題,這篇文章就給大家總結(jié)了Android 5.0以上Toast不顯示的原因與解決方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。

原因分析

用戶使用android 5.0以上的系統(tǒng)在安裝APP時(shí),將消息通知的權(quán)限關(guān)閉掉了。實(shí)際上用戶本意只是想關(guān)閉Notification,但是Toast的show方法中有調(diào)用INotificationManager這個(gè)類,而這個(gè)類在用戶關(guān)閉消息通知權(quán)限的同時(shí)被禁用了,所以我們的吐司無(wú)法顯示。

Toast.show()

效果圖

自定義Toast(上)與Toast(下)比對(duì)

問(wèn)題解決

既然系統(tǒng)不允許我們調(diào)用Toast,那么我們就自立門戶——自己寫一個(gè)Toast出來(lái)。我們總體的思路是:在Activity的布局中添加View實(shí)現(xiàn)Toast的效果。

Toast背景shape定義

我們知道shape的背景是一個(gè)半透明黑色的圓角效果:


Toast

因此我們使用的是shape的corners和solid結(jié)點(diǎn):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 <solid android:color="#99000000" />
 <corners android:radius="8dp" />
</shape>

定義布局

布局中我們主要使用TextView控件,設(shè)置相應(yīng)的邊距和背景即可,布局代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/mbContainer"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_marginBottom="200dp"
 android:gravity="bottom|center"
 android:orientation="vertical"
 android:paddingLeft="50dp"
 android:paddingRight="50dp">

 <LinearLayout android:id="@+id/toast_linear"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/shape_toastutils_bg"
  android:gravity="bottom|center"
  android:orientation="vertical"
  android:padding="8dp">

  <TextView android:id="@+id/mbMessage"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_gravity="center_vertical"
   android:layout_margin="5dp"
   android:layout_weight="1"
   android:gravity="center"
   android:shadowColor="#BB000000"
   android:shadowRadius="2.75"
   android:textSize="12sp"
   android:textColor="#FFFFFFFF" />
 </LinearLayout>
</LinearLayout>

java代碼邏輯

自定義Toast的java代碼邏輯主要模仿系統(tǒng)Toast的makeText() show()兩個(gè)方法,此外還需要reset()方法,實(shí)現(xiàn)Toast顯示過(guò)程中Activity切換時(shí)context也隨之切換,關(guān)鍵代碼如下:

makeText(Context context, String message, int HIDE_DELAY)方法:

public static ToastUtils makeText(Context context, String message,
        int HIDE_DELAY) {
 if (mInstance == null) {
  mInstance = new ToastUtils(context);
 } else {
  // 考慮Activity切換時(shí),Toast依然顯示
  if (!mContext.getClass().getName().endsWith(context.getClass().getName())) {
   mInstance = new ToastUtils(context);
  }
 }
 if (HIDE_DELAY == LENGTH_LONG) {
  mInstance.HIDE_DELAY = 2500;
 } else {
  mInstance.HIDE_DELAY = 1500;
 }
 mTextView.setText(message);
 return mInstance;
}

makeText(Context context, int resId, int HIDE_DELAY)方法

public static ToastUtils makeText(Context context, int resId, int HIDE_DELAY) {
 String mes = "";
 try {
  mes = context.getResources().getString(resId);
 } catch (Resources.NotFoundException e) {
  e.printStackTrace();
 }
 return makeText(context, mes, HIDE_DELAY);
}

show()方法

public void show() {
 if (isShow) {
  // 若已經(jīng)顯示,則不再次顯示
  return;
 }
 isShow = true;
 // 顯示動(dòng)畫
 mFadeInAnimation = new AlphaAnimation(0.0f, 1.0f);
 // 消失動(dòng)畫
 mFadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
 mFadeOutAnimation.setDuration(ANIMATION_DURATION);
 mFadeOutAnimation
   .setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
     // 消失動(dòng)畫后更改狀態(tài)為 未顯示
     isShow = false;
    }
    @Override
    public void onAnimationEnd(Animation animation) {
     // 隱藏布局,不使用remove方法為防止多次創(chuàng)建多個(gè)布局
     mContainer.setVisibility(View.GONE);
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    }
   });
 mContainer.setVisibility(View.VISIBLE);
 mFadeInAnimation.setDuration(ANIMATION_DURATION);
 mContainer.startAnimation(mFadeInAnimation);
 mHandler.postDelayed(mHideRunnable, HIDE_DELAY);
}

方法調(diào)用

自定義Toast的使用與系統(tǒng)Toast類似,調(diào)用方法如下:

ToastUtils.makeText(context, "消息內(nèi)容",ToastUtils.LENGTH_SHORT).show();

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開發(fā)者們能有所幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • Android項(xiàng)目中引入aar包的正確方法介紹

    Android項(xiàng)目中引入aar包的正確方法介紹

    生成aar之后下一步就是如何引用本地的aar文件,下面這篇文章主要給大家介紹了關(guān)于Android項(xiàng)目中引入aar包的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Android中ImageView.src設(shè)置圖片拉伸、填滿控件的方法

    Android中ImageView.src設(shè)置圖片拉伸、填滿控件的方法

    最近公司有個(gè)需求,要展示客戶公司的企業(yè)形象,用一張圖片放在ImageView中實(shí)現(xiàn),但是發(fā)現(xiàn)圖片并沒(méi)有填滿,而是在上下邊上留出了一點(diǎn)空白,下面這篇文章主要跟大家介紹了Android中ImageView.src設(shè)置圖片拉伸、填滿控件的方法,需要的朋友可以參考下。
    2017-06-06
  • 簡(jiǎn)單實(shí)現(xiàn)Android驗(yàn)證碼

    簡(jiǎn)單實(shí)現(xiàn)Android驗(yàn)證碼

    在登錄或者注冊(cè)的時(shí)候要求輸入驗(yàn)證碼,這篇文章主要為大家詳細(xì)介紹了如何簡(jiǎn)單實(shí)現(xiàn)Android驗(yàn)證碼的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android 對(duì)話框sweet-alert-dialog

    Android 對(duì)話框sweet-alert-dialog

    這篇文章主要介紹了Android 對(duì)話框sweet-alert-dialog的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Android開發(fā)中比較耗時(shí)的一些操作小結(jié)

    Android開發(fā)中比較耗時(shí)的一些操作小結(jié)

    這篇文章主要介紹了Android開發(fā)中比較耗時(shí)的一些操作小結(jié),本文根據(jù)實(shí)際開發(fā)經(jīng)驗(yàn)總結(jié)了6條比較耗時(shí)的編程操作,請(qǐng)大家注意下,需要的朋友可以參考下
    2015-06-06
  • Android 密碼 顯示與隱藏功能實(shí)例

    Android 密碼 顯示與隱藏功能實(shí)例

    這篇文章主要介紹了Android 密碼 顯示與隱藏功能實(shí)例,需要的朋友可以參考下
    2017-06-06
  • android實(shí)現(xiàn)接通和掛斷電話

    android實(shí)現(xiàn)接通和掛斷電話

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)接通和掛斷電話功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • TextView長(zhǎng)按復(fù)制的實(shí)現(xiàn)方法(總結(jié))

    TextView長(zhǎng)按復(fù)制的實(shí)現(xiàn)方法(總結(jié))

    下面小編就為大家?guī)?lái)一篇TextView長(zhǎng)按復(fù)制的實(shí)現(xiàn)方法(總結(jié))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • android圖像繪制(四)自定義一個(gè)SurfaceView控件

    android圖像繪制(四)自定義一個(gè)SurfaceView控件

    自定義控件(類似按鈕等)的使用,自定義一個(gè)SurfaceView。如某一塊的動(dòng)態(tài)圖(自定義相應(yīng)),或者類似UC瀏覽器下面的工具欄,感興趣的朋友可以了解下
    2013-01-01
  • Android實(shí)現(xiàn)圓角圖片

    Android實(shí)現(xiàn)圓角圖片

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圓角圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評(píng)論