自定义Toast样式

好长时间没写博客了,刚换个新工作没几天,今天公司小组要求写一个自定义的Toast,工作交给我了,其实并不难,几分钟搞定,把代码发出来当做记录一下把。废话不多说,上效果:


结构目录:


代码解析:

1、toast.xml

布局很简单就是一个ImageView和TextView横向排列,不解释:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="80dp"
              android:layout_height="30dp"
              android:padding="10dp"
              android:gravity="center"
              android:background="@drawable/toaststyle"
              android:orientation="horizontal">

    <ImageView
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:id="@+id/imageView"/>

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:shadowColor="#bbfcd603"
        android:shadowRadius="2.75"
        android:textColor="#ffffff"
        />
</LinearLayout>
2、toaststyle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#21211d" />
    <corners android:topLeftRadius="10dp"
             android:topRightRadius="10dp"
             android:bottomRightRadius="10dp"
             android:bottomLeftRadius="10dp"/>
</shape>
3、CustomToast.java开始我们的封装代码

package com.example.administrator.customview;

import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by Administrator on 2016/6/16 0016.
 */
public class CustomToast {
    private static TextView mTextView;
    private static ImageView mImageView;

    public static void showToast(Context context, String message) {
        //加载Toast布局
        View toastRoot = LayoutInflater.from(context).inflate(R.layout.toast, null);
        //初始化布局控件
        mTextView = (TextView) toastRoot.findViewById(R.id.message);
        mImageView = (ImageView) toastRoot.findViewById(R.id.imageView);
        //为控件设置属性
        mTextView.setText(message);
        mImageView.setImageResource(R.mipmap.ic_launcher);
        //Toast的初始化
        Toast toastStart = new Toast(context);
        //获取屏幕高度
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        int height = wm.getDefaultDisplay().getHeight();
        //Toast的Y坐标是屏幕高度的1/3,不会出现不适配的问题
        toastStart.setGravity(Gravity.TOP, 0, height / 3);
        toastStart.setDuration(Toast.LENGTH_LONG);
        toastStart.setView(toastRoot);
        toastStart.show();
    }
}
代码很详细,不用多解释,这里只是一个简单的例子,大家感兴趣的可以自己添加喜欢的设计,顺便说一下,这里很多属性都可以自己抽出来的当成变量的,大家可以根据自己的风格封装乘工具类使用。

这里都是一些纯粹的代码,没有涉及到一些其他的资源文件,大家copy过来就直接用,这里就不上传例子了,感觉copy这用更简单。好了,简单的Demo就到这里了。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anonymous-OS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值