Android自定義Toast 解決關閉通知 Toast無法彈出
package common; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.widget.LinearLayout; import android.widget.TextView; import java.util.List; import java.util.Stack; import java.util.Vector; import video.bwgc.com.bwgclibrary.R; /** * <b>類 名:</b>${TYPE_NAME} <br/> * <b>類描述:</b> <br/> * <b>建立人:</b>zhangqi<br/> * <b>建立時間:</b>2017/6/6<br/> * <b>修改人:</b>zhangqi<br/> * <b>修改時間:</b>2017/6/6<br/> * <b>修改備註:</b><br/> * * @version 1.0.0<br/> */ public class ToastUtil { public static final int LENGTH_SHORT = 0x00; public static final int LENGTH_LONG = 0x01; private final int ANIMATION_DURATION = 600; public Context mContext; public String msg; private int HIDE_DELAY = 2000; public static boolean isRunning=false; private Handler mHandler = new Handler(); public static Stack<ToastUtil> stack = new Stack(); // 表示吐司裡顯示的文字 public static ToastUtil makeText(Context context, String message, int HIDE_DELAY) { ToastUtil utils=new ToastUtil(); utils.mContext=context; utils.msg=message; if (HIDE_DELAY == LENGTH_LONG) { utils.HIDE_DELAY= 2500; } else { utils.HIDE_DELAY= 1500; } return utils; } public static void wakeUp(){ isRunning=true; if (!stack.empty()) { ToastUtil util=stack.pop(); util.doshow(); }else{ isRunning=false; } } public void doshow(){ final ViewGroup container = (ViewGroup) ((Activity) mContext) .findViewById(android.R.id.content); final View mView = ((Activity) mContext).getLayoutInflater().inflate( R.layout.toast_layout, null); container.addView(mView); final LinearLayout mContainer = (LinearLayout) mView.findViewById(R.id.mbContainer); mContainer.setVisibility(View.GONE); TextView mTextView = (TextView) mView.findViewById(R.id.mbMessage); mTextView.setText(msg); // 顯示動畫 AlphaAnimation mFadeInAnimation = new AlphaAnimation(0.0f, 1.0f); // 消失動畫 final AlphaAnimation mFadeOutAnimation = new AlphaAnimation(1.0f, 0.0f); mFadeOutAnimation.setDuration(ANIMATION_DURATION); mFadeOutAnimation .setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { // 消失動畫後更改狀態為 未顯示 } @Override public void onAnimationEnd(Animation animation) { // 隱藏佈局,不使用remove方法為防止多次建立多個佈局 mContainer.setVisibility(View.GONE); container.removeView(mView); wakeUp(); } @Override public void onAnimationRepeat(Animation animation) { } }); mContainer.setVisibility(View.VISIBLE); mFadeInAnimation.setDuration(ANIMATION_DURATION); mContainer.startAnimation(mFadeInAnimation); mHandler.postDelayed(new Runnable() { @Override public void run() { mContainer.startAnimation(mFadeOutAnimation); } }, HIDE_DELAY); } public void show() { stack.push(this); if(!isRunning){ wakeUp(); } } }
toast_layout.xml檔案
<?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="60dp" 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:orientation="vertical" android:layout_marginBottom="50dp" 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:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_weight="1" android:gravity="center" android:background="@drawable/shape_toastutils_bg" android:shadowColor="#BB000000" android:shadowRadius="2.75" android:textSize="12sp" android:textColor="#ffffff" /> </LinearLayout> </LinearLayout>
shape_toastutils_bg.xml檔案
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#70000000" />
<corners android:radius="12dp" />
</shape>
使用方法:
ToastUtil.makeText(context,msg,ToastUtil.LENGTH_SHORT).show();
相關推薦
Android自定義Toast 解決關閉通知 Toast無法彈出
package common; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.util.Log; import
android中自定義的dialog中的EditText無法彈出輸入法解決方案
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);//彈出輸入法,並且寫在show()方法之後。 解決Dialog 消失,輸入法不消失的問題: 參考:https://blog.csd
Android自定義PopWindow(QQ、微信彈出選單)
前段時間在個人開發的專案中需要用到彈出選單,類似QQ右上角的彈出選單,自己使用popwin的次數也不是很多,其中也遇到過一點問題,今天正好有時間就把一些經驗分享給大家。 先來看看最終實現過後的效果怎麼樣,下面放上圖 自定義的彈出選單是繼承的p
Android 自定義View 解決 TextView 自動換行排版不整齊
第一次寫東西,內心小緊張,又不知道怎麼寫,儘量把遇到的問題和解決思路說清楚,寫的不好請見諒。 需求 專案有一個需求,很簡單,就是一個recyclerview,item裡面是兩個textview。一個TextView顯示的字串包含圓角、半形和中、英文以及數字。 想起來
android-自定義View解決wrap_content無效的問題
###問題提出 在我們自定義view時,如何需要是當前的view內容自適應,這種平常的使用中,只需要在xml檔案中制定寬高或者長高為wrap_content即可,但是如果該view是我們自定義的,那麼此時再在xml檔案中指定寬高為wrap_content則不能起到內容自適
Android定位&地圖&導航——基於百度地圖,實現自定義圖示繪製並點選時彈出泡泡
public class MainActivity extends Activity { private EditText txtAddr; // 定位相關 LocationClient mLocClient; LocationData locData = nul
android 自定義鍵盤 游標只在前面無法變動
今天做了一個自定義鍵盤,發現手指無法移動游標。 下面是解決方案: getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); try {
Android自定義View實戰-100行帶你寫出SwitchButton
1 序言 網上很多自定義View的例子都非常詳細講解了如何寫出一個高效實用的自定義View,但是這些由於過於詳細,給予一些新手的學習造成了一定的困難,比如說,當初我要學習如何自定義下拉重新整理控制元件,結果,很多大神順便把一些在我看來 學習自定義View非必要的技術帶了進來
Android-自定義Toast、LayoutInflater使用其他佈局
內容: 1.自定義樣式toast 2.再活動中新增其他佈局 實現效果: 步驟: 一、自定義View 引用zidingyixml檔案 生成一個佈局物件 二、採用Toast 的addView() 方法將該物件新增到Toast物件中 三、顯示:Toast.show()
android 自定義toast停留時間
Toast類 //首先定義全域性變數mToast已經顯示和隱藏函式 private Toast mToast; // 隱藏toast資訊框常量 public static final int AIRPLAY_MESSAGE_HIDE_TOAST
Android-自定義圓角Toast提示框
有時候我們根據需求需要自己指定toast的樣式,例如在介面中間顯示、圓角、帶圖片什麼的。 今天我給大家帶來的就是自定義圓角帶圖片顯示的toast提示框,先來看看最終效果圖:圖一為圓角帶圖片顯示的,圖二為圓角普通顯示。均為居中顯示 圖1: 圖2: 先來看看
Android 自定義Toast顯示多種方式
Toast toast = Toast.makeText(this.getApplicationContext,"This is a Toast including Image!", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); Lin
Android 自定義Toast,修改Toast樣式和顯示時長
Android 中有一個 Toast 控制元件,可以用來顯示提示資訊,還是非常好用的,但是樣式和顯示時長比較侷限。所以我們來自定義一個 Toast ,讓它可以顯示我們想要的效果,並能設定顯示時長。 首先,在 res\layout 資料夾下建立自定義 Toast 的佈
android 自定義Toast顯示風格
1.建立一個自己想要顯示Toast風格的XML如下程式碼(toast_xml.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.
android自定義Toast——讓你應用別具一格
實際上,在github上層看到這種toast,但我的感覺是:用起來太麻煩了!我需要的要求是越簡單越好! 簡化Toast 原toast形式: Toast.makeText(this,”t”,Toast.LENGTH_LONG).show();或T
Android自定義Toast檢視和動畫
在Android Toast基礎與原理中,我們對Toast的原始碼進行了分析。我們也對Toast的實現原理有了一定的瞭解。接下來我們將編寫一個工具類,來完成Toast的自定義檢視和動畫。 一、實現原理分析 通過上篇文章,我們知道Toast是通過內部類TN(一個ITra
android 自定義Toast增加點選事件、Toast彈出隱藏動畫、Toast寬度為match_parent
在自定義Toast的時候,可能會用到點選事件,但是android系統本身Toast只是用於提示,並不支援點選事件,即使自定義Toast也不支援點選事件,檢視Toast原始碼可以發現,其內部的TN.class(該為私有類,外部調用不了)裡面的WindowManag
自定義View繼承現有的Toast,實現訂單提醒的Toast,從左下角顯示然後退出
自定義View繼承現有的Toast,實現訂單提醒的Toast,從左下角顯示然後退出 /** * Created by on 16-2-4. */ public class NotifyToast extends Toast { private long last
Android 自定義Dialog 裡面有EditText控制元件點選關閉輸入法失效的問題
在做一個專案的時候,自定義額了一個Dialog 裡面有取消,儲存按鈕,以及EditText,在輸入法彈出的時候,點選取消按鈕,自定義dialog對話方塊關閉了,但是輸入法始終關閉不了,在網上找了很多方法,都不能很好的解決,輸入法不能關閉的問題。 最好找到的解決辦法是
androidの自定義控制元件View在Activity中使用findByViewId得到結果為null,解決方法。。
androidの自定義控制元件View在Activity中使用findByViewId得到結果為null 1. 大家常常自定義view,,然後在xml 中新增該view 元件。。如果在Activity 中使用findByViewId 方法獲取該view 時候,返回物件總為