神刀安全网

android 自定义Toast

我们要自定义一个Toast的话肯定要考虑到两点

  • 要保证Toast运行在主线程中
  • 我这写代码是放在Application类中的,放在activity也行,如果需要放到一个类中,那么handler的使用要注意使用handlerThread
    private static HandlerThread ht;   static {       ht = new HandlerThread("download thread");       ht.start();   }   private Handler mHandler = new Handler(ht.getLooper()) {...}

废话不多说、上代码

private Toast toast = null;  Handler displayMessageHandler = new Handler() {         @Override         public void handleMessage(Message msg) {             if (msg.obj != null) {                 displayToastMessage((String) msg.obj);             }             super.handleMessage(msg);         }     }; public void displayToastMessage(String message) {         if (message == null || "".equals(message))             return;          if (!isMainThread()) {             Message msg = new Message();             msg.obj = message;             displayMessageHandler.sendMessage(msg);             return;         }          if (toast != null)             toast.cancel();          LayoutInflater li = LayoutInflater.from(this);         View layout = li.inflate(R.layout.toastview, null);         toast = new Toast(getApplicationContext());         toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);         toast.setDuration(Toast.LENGTH_LONG);         toast.setView(layout);          TextView text = (TextView) toast.getView().findViewById(R.id.toastText);         text.setTextColor(Color.BLACK);         text.setText(message);         toast.show();     }  public boolean isMainThread() {           return this.getMainLooper().getThread().equals(Thread.currentThread()); }

布局文件代码: toastview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:id="@+id/toastRootLayout"               android:orientation="horizontal"               android:layout_width="fill_parent"               android:layout_height="fill_parent"               android:padding="10dp">     <LinearLayout                android:id="@+id/toastLayout"               android:layout_width="fill_parent"               android:layout_height="fill_parent"               android:orientation="horizontal"                android:padding="10dp"               android:background="#FF909090">                      <TextView android:id="@+id/toastText"                   android:layout_width="wrap_content"                   android:layout_height="fill_parent"                   android:textColor="#FFFFFF"                   android:gravity="center" />     </LinearLayout> </LinearLayout>

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » android 自定义Toast

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址