time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android不使用系统Toast自定义Toast示例

Android不使用系统Toast自定义Toast示例

时间:2013-12-25 17:40 点击:1552次 字体:[ ]




效果图: 

Android不使用系统Toast自定义Toast示例_www.fengfly.com

 

创建Toast类

  1. package com.example.messageboxtest;   
  2.     
  3. import android.app.Activity;   
  4. import android.content.Context;   
  5. import android.os.Handler;   
  6. import android.view.Gravity;   
  7. import android.view.View;   
  8. import android.view.ViewGroup;   
  9. import android.view.animation.AlphaAnimation;   
  10. import android.view.animation.Animation;   
  11. import android.widget.LinearLayout;   
  12. import android.widget.TextView;   
  13. /**   
  14.  *    
  15.  * @author chaowen   
  16.  *   
  17.  */ 
  18. public class MyMsgBox {   
  19.     
  20.     private static final int ANIMATION_DURATION = 600;   
  21.     
  22.     private int HIDE_DELAY = 5000;   
  23.     
  24.     private View mContainer;   
  25.     
  26.     private int gravity = Gravity.CENTER;   
  27.     
  28.     private TextView mTextView;   
  29.     
  30.     private Handler mHandler;   
  31.     
  32.     private AlphaAnimation mFadeInAnimation;   
  33.     
  34.     private AlphaAnimation mFadeOutAnimation;   
  35.     
  36.     public MyMsgBox(Context context, int HIDE_DELAY, int gravity) {   
  37.         ViewGroup container = (ViewGroup) ((Activity) context)   
  38.                 .findViewById(android.R.id.content);   
  39.         View v = ((Activity) context).getLayoutInflater().inflate(   
  40.                 R.layout.newmb__messagebar, container);   
  41.         this.HIDE_DELAY = HIDE_DELAY;   
  42.         this.gravity = gravity;   
  43.         init(v);   
  44.     }   
  45.     
  46.     private void init(View v) {   
  47.         mContainer = v.findViewById(R.id.mbContainer);   
  48.         mContainer.setVisibility(View.GONE);   
  49.         mTextView = (TextView) v.findViewById(R.id.mbMessage);   
  50.         mFadeInAnimation = new AlphaAnimation(0.0f, 1.0f);   
  51.         mFadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);   
  52.         mFadeOutAnimation.setDuration(ANIMATION_DURATION);   
  53.         mFadeOutAnimation   
  54.                 .setAnimationListener(new Animation.AnimationListener() {   
  55.                     @Override 
  56.                     public void onAnimationStart(Animation animation) {   
  57.                     }   
  58.     
  59.                     @Override 
  60.                     public void onAnimationEnd(Animation animation) {   
  61.                         mContainer.setVisibility(View.GONE);   
  62.                     }   
  63.     
  64.                     @Override 
  65.                     public void onAnimationRepeat(Animation animation) {   
  66.                     }   
  67.                 });   
  68.     
  69.         mHandler = new Handler();   
  70.     
  71.     }   
  72.     
  73.     public void show(String message) {   
  74.         mContainer.setVisibility(View.VISIBLE);   
  75.     
  76.         ((LinearLayout) mContainer).setGravity(gravity   
  77.                 | Gravity.CENTER_VERTICAL);   
  78.     
  79.         mTextView.setText(message);   
  80.     
  81.         mFadeInAnimation.setDuration(ANIMATION_DURATION);   
  82.     
  83.         mContainer.startAnimation(mFadeInAnimation);   
  84.         mHandler.postDelayed(mHideRunnable, HIDE_DELAY);   
  85.     }   
  86.     
  87.     private final Runnable mHideRunnable = new Runnable() {   
  88.         @Override 
  89.         public void run() {   
  90.             mContainer.startAnimation(mFadeOutAnimation);   
  91.         }   
  92.     };   
  93.     

对应的布局

  1. ?<?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:id="@+id/mbContainer" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     android:layout_margin="10dp" 
  7.     android:gravity="bottom" 
  8.     android:orientation="vertical" >   
  9.     
  10.     <LinearLayout   
  11.         style="@style/bgTheme" 
  12.         android:layout_width="fill_parent" 
  13.         android:layout_height="wrap_content" 
  14.         android:layout_margin="10dp" 
  15.         android:gravity="bottom" 
  16.         android:orientation="vertical" >   
  17.     
  18.         <TextView   
  19.             android:id="@+id/mbMessage" 
  20.             android:layout_width="fill_parent" 
  21.             android:layout_height="wrap_content" 
  22.             android:text="Test" 
  23.             android:textColor="@drawable/white" />   
  24.     </LinearLayout>   
  25.     
  26. </LinearLayout>   

使用方法:

  1. MyMsgBox m = new MyMsgBox(arg0.getContext(), 5000,  
  2.                         Gravity.BOTTOM);  
  3.         m.show("这是一个性化Toast");  


本文地址 : http://www.fengfly.com/plus/view-214374-1.html
标签: Android Toast
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: