精华内容
参与话题
问答
  • Toast

    2017-09-08 16:26:53
    Toast

    Toast是一个提示语句,今天学习的是有关它的三个提示形式。

    1.默认的提示。

    2.在手机屏幕中间提示。

    3.自定义Toast

    首先创建一个ToastActivity

    在activity_toast.xml中写三个按钮,分别是上面说的三种形式,分别点击出现不同的效果。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:id="@+id/btn_toast_a"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="默认 "/>
        <Button
            android:id="@+id/btn_toast_b"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="改变位置 "/>
        <Button
            android:id="@+id/btn_toast_c"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="带图片(自定义)"/>
        <Button
            android:id="@+id/btn_toast_d"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="ToastUtil"/>
    
    </LinearLayout>

    接着在ToastActivity.java中写代码:

    package net.nyist.lenovo.mytest;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import net.nyist.lenovo.mytest.util.ToastUtil;
    
    public class ToastActivity extends AppCompatActivity {
    
        private Button mBtnToast1;
        private Button mBtnToast2;
        private Button mBtnToast3;
        private Button mBtnToast4;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_toast);
            mBtnToast1 = (Button) findViewById(R.id.btn_toast_a);
            mBtnToast2 = (Button) findViewById(R.id.btn_toast_b);
            mBtnToast3 = (Button) findViewById(R.id.btn_toast_c);
            mBtnToast4 = (Button) findViewById(R.id.btn_toast_d);
            Onclick onclick = new Onclick();
            mBtnToast1.setOnClickListener(onclick);
            mBtnToast2.setOnClickListener(onclick);
            mBtnToast3.setOnClickListener(onclick);
            mBtnToast4.setOnClickListener(onclick);
        }
        class Onclick implements View.OnClickListener{
    
            @Override
            public void onClick(View v) {
                switch (v.getId()){
                    case R.id.btn_toast_a:
                        Toast.makeText(ToastActivity.this, "Toast", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.btn_toast_b:
                        Toast toastCenter = Toast.makeText(ToastActivity.this, "Toast", Toast.LENGTH_SHORT);
                        toastCenter.setGravity(Gravity.CENTER,0,0);
                        //在手机屏幕中间显示提示
                        toastCenter.show();
                        break;
                    case R.id.btn_toast_c:
                        Toast toastCustom = new Toast(getApplicationContext());
                        //加载容器
                        LayoutInflater inflater = LayoutInflater.from(ToastActivity.this);
                        //将布局放到容器中
                        View view = inflater.inflate(R.layout.layout_toast,null);
                        //接下来获得到布局中的ImageView和TextView
                        ImageView imageView = (ImageView) view.findViewById(R.id.iv_toast);
                        TextView textView = (TextView)view.findViewById(R.id.tv_toast);
                        //将图片放到ImageView中
                        imageView.setImageResource(R.drawable.icon_smile);
                        textView.setText("自定义Toast");
                        toastCustom.setView(view);
                        toastCustom.show();
                        break;
                    case R.id.btn_toast_d:
                        ToastUtil.showMsg(getApplicationContext(),"包装的Toast");
                        break;
                }
            }
        }
    }

    这里强调一下自定义中的Toast,自定义的话,提示为一张图片,我们就像需要一个容器来把照片放到里面,首先需要准备给自定义的Toast准备一个布局layout_toast.xml
    接着给他添加自定义的ImageView和TextView
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#99000000">
        <LinearLayout
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:orientation="vertical"
            android:gravity="center">
            <ImageView
                android:id="@+id/iv_toast"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:scaleType="fitCenter"
                />
            <TextView
                android:id="@+id/tv_toast"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:textColor="@color/colorWhite"
                android:layout_marginTop="10dp"
                />
    
        </LinearLayout>
    
    
    
    </LinearLayout>

    这里由于根布局不能够灵活运用,所以内嵌一个LinearLayout,设置ImageView的宽高都是100dp。

    这里会发现还有第一个按钮,那就是和默认的那个有区别,什么区别呢?
    默认的按钮我们点击十下的话,是从第一个提示一直等到第十个按钮一个一个显示完,一个两秒,这样的话就会长时间的得不到最新的结果,所以在这里我们不建议使用默认的Toast,在这里我们要想点击十下立即显示最后点击的结果,我们就需要封装一个Toast类来修改一下:

    新建一个ToastUtil.java

    package net.nyist.lenovo.mytest.util;
    
    import android.content.Context;
    import android.widget.Toast;
    
    /**
     * Created by LENOVO on 2017/9/8.
     */
    
    public class ToastUtil {
    
        public static Toast mToast;
        public static void showMsg(Context context,String msg){
            if (mToast==null){
                mToast = Toast.makeText(context,msg,Toast.LENGTH_SHORT);
            }else {
                mToast.setText(msg);
            }
            mToast.show();
        }
    }

    这样的话如果我们点击十下就会很快显示最后的结果。

     case R.id.btn_toast_d:
                        ToastUtil.showMsg(getApplicationContext(),"包装的Toast");
                        break;

    在第四个case中调用这个类的方法,就可以实现了。

    运行结果如下:
    menu
    default
    center
    diy

    展开全文
  • toast

    千次阅读 2017-04-14 19:31:19
    做这个的出发点是不管是测试还是本身的项目需求,需要搞一个toast,满足各式各样的需要,大概有这些,于是就有写了 有需求的单列的toast 有需求可以自定义弹出时间的toast 有需求在关闭系统的通知权限后照样可以弹出...

    ToastCompat

    欢迎各位提出改进意见及完善,欢迎star.

    • 做这个的出发点是不管是测试还是本身的项目需求,需要搞一个toast,满足各式各样的需要,大概有这些,于是就有写了
      • 有需求的单列的toast
      • 有需求可以自定义弹出时间的toast
      • 有需求在关闭系统的通知权限后照样可以弹出toast
      • 有需求可以弹出自定义view
    • 参考资料
      • 参考toast的源码,系统维护是一个队列,同时也用到了aidl
        public void show() {
    
            if (mNextView == null) {
                throw new RuntimeException("setView must have been called");
            }
            INotificationManager service = getService();
            String pkg = mContext.getOpPackageName();
            TN tn = mTN;
            tn.mNextView = mNextView;
    
            try {
                service.enqueueToast(pkg, tn, mDuration);
            } catch (RemoteException e) {
                // Empty
            }
        }


    • 参考okhttp源码,以前没有太在意,后来发现,不管是okhttp中的builder还是dialog中的,他们的功能都是设置参数,这种思想非常好
    • 使用方法
      • 直接拷贝源码到项目中,简单暴力直接,有点重口味了,同时源码也不多。
      • 直接引入库
        compile ‘com.gs:ToastCompat:1.0.0’

    具体调用api方法
    1.单列
    new CustomToast.Builder(this).setIsSingle(true).setText("你好").build()
    .show();

    2.自定义时间
    new CustomToast.Builder(this).setText("你好").setDuration(2000).build()
    .show();

    3.自定义View
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.mipmap.ic_launcher);
    new CustomToast.Builder(this).setIsSingle(true).setView(imageView).setDuration(2000).build()
    .show();

    4.复合使用
    new CustomToast.Builder(this).setIsSingle(true).setText("你好").setDuration(2000).build()
    .show();

    效果展示
    Thanks
    [rongwu](https://github.com/rongwu/ToastCompat
    项目地址

    展开全文
  • Toast

    2011-04-09 18:55:00
     layoutView = (LinearLayout) layoutInflater.inflate( R.layout.toast,(ViewGroup) findViewById(R.id.toast_area));Toast toast = new Toast(getApplicationContext());toast.setGravity(Gravity.CENTER

     

    展开全文
  • 关于Toast

    2017-10-18 10:00:41
    Toast

    吐司的内容不单单只有吐司文字,还可以吐司图片或者图片和文字.首先,我们先认识下面两个方法

    1. toast.setGravity(gravity,xOffest,yOffset)   设置Toast的位置
    2. toast.setView(View v)   设置吐司的样式
    只显示图片的吐司:

    代码如下:

          //获取一个Toast对象,为下面操作准备
          Toast toast = new Toast(this);
          ImageView img = new ImageView(this);
          //用系统提供的图片
          img.setImageResource(R.drawable.ic_launcher);
          //设置图片
          toast.setView(img);
          toast.show();   
                                            

                                   

    显示图片和文字的吐司

    代码如下:

     Toast toast = Toast.makeText(this, "这是一个有图片的吐司", Toast.LENGTH_LONG);
          ImageView img = new ImageView(this);
          img.setImageResource(R.drawable.ic_launcher);
              //得到toast的布局对象
          LinearLayout toast_layout = (LinearLayout) toast.getView();
          //为toast添加图片资源,第二个参数,0表示图片在上
          toast_layout.addView(img,1);
          toast.show();

                                     


    自定义Toast

    布局文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal">
    
        <TextView
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="文字"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_launcher_round"/>
        
    </LinearLayout>

    Activity代码:

    //构造来创建Toast
    Toast toast = new Toast(this);
    //创建要显示的view
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.ic_launcher);
    //设置属性
    toast.setView(imageView);
    toast.setDuration(Toast.LENGTH_SHORT);
    toast.show();
    
    

    展开全文
  • 单列Toast

    2017-03-29 09:00:58
    toast
  • Toast提醒

    2016-10-29 15:30:14
    Toast
  • bootstrap-toast 的消息提示toastbootstrap-toast 的消息提示toastbootstrap-toast 的消息提示toastbootstrap-toast 的消息提示toastbootstrap-toast 的消息提示toastbootstrap-toast 的消息提示toast
  • 原子线程调用Toast报Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()错误 今天用子线程调Toast报了一个Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()错误。 因为toast的现实...
  • 自定义Toast,解决系统Toast存在的问题
  • android toast_Android Toast

    2020-07-14 05:24:52
    android toastToast message is useful to show notification for ... In this tutorial, we’ll discuss and implement android Toast message example. Toast消息对在Android应用中显示少量通知非常有用。 在本教...
  • 自定义Toast,设置Toast显示位置,自定义Toast的复杂布局 博客地址:http://blog.csdn.net/xy_nyle/article/details/20137953

空空如也

1 2 3 4 5 ... 20
收藏数 21,719
精华内容 8,687
关键字:

toast