100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android中自定义 toast android 自定义Toast样式和显示方式

android中自定义 toast android 自定义Toast样式和显示方式

时间:2019-05-28 20:25:59

相关推荐

android中自定义 toast android 自定义Toast样式和显示方式

问题:

1.android 开发中如果不停的触发显示Toast,会造成Toast一个接一个的弹出,非常影响用户体验。

2.android设备有千万个,每个设备的Toast的背景有可能不一样,造成在应用内显示时造成显示不够清晰

在这里我封装了一个Toast工具类可以实现弹出下一个Toast时检查当前是否有显示Toast,有的话重用当前Toast,避免重复弹出。

可以自定义Toast显示的view,实现你想要的样式,实现领导的梦想!!!

Toast工具类

/**

* Created by Aaron on /07/18.

*

* 弹出toast提示工具类

*/

object ToastUtils {

private var mToast: Toast? = null //toast样式

private val mMsg: String? = null //上一次弹出的内容

private var mToastView: ToastView? = null //自定义view

private var mToastGravity:Int = -1 //位置

/**

* 弹出提示

* @param msg 提示信息

* @param time 显示时间

*/

fun showToast(msg: String?, time: Int, context: Context?) {

if (mToast == null || mMsg != null && msg != mMsg) {

mToast = Toast.makeText(context, msg, time)

if (mToastView != null) {

mToast!!.view = mToastView

mToastView!!.setText(msg!!)

} else {

mToast!!.setText(msg)

}

} else {

if (mToastView != null && mToast!!.view != mToastView) {

mToast!!.view = mToastView

}

if (mToastView != null) {

mToastView!!.setText(msg!!)

} else {

mToast!!.setText(msg)

}

mToast!!.duration = time

}

if (mToastGravity != -1) {

mToast!!.setGravity(mToastGravity, 0, 0)

}

//不设置的话,最高显示到状态栏下面

mToast!!.view.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

mToast!!.show()

}

/**

* 弹出提示信息

* @param msgId 提示信息id

* @param time 显示时间

*/

fun showToast(msgId: Int, time: Int, context: Context?) {

showToast(context?.getString(msgId), time, context)

}

/**

* 弹出短时间提示

* @param msg 提示信息

*/

fun showShortToast(msg: String, context: Context?) {

showToast(msg, Toast.LENGTH_SHORT, context)

}

fun showShortToast(msgId:Int, context: Context?) {

showToast(msgId, Toast.LENGTH_SHORT, context)

}

/**

* 弹出长时间提示

* @param msg 提示信息

*/

fun showLongToast(msg: String, context: Context?) {

showToast(msg, Toast.LENGTH_LONG, context)

}

/**

* 关闭当前Toast

*/

fun cancelCurrentToast() {

if (mToast != null) {

mToast!!.cancel()

}

}

fun reToast(msg: String) {

Toast.makeText(JblBaseApplication.sInstance, msg, Toast.LENGTH_SHORT).show()

}

fun reToast(msgId: Int) {

Toast.makeText(JblBaseApplication.sInstance, msgId, Toast.LENGTH_SHORT).show()

}

fun setToastView(context: Context?) {

mToastView = ToastView(context!!)

}

fun setToastGravity(gravity: Int) {

mToastGravity = gravity

}

/**

* 重置toast 信息

*/

fun resetToast() {

mToastView = null

mToastGravity = -1

mToast = null

}

}

自定义view

/**

* Created by Aaron on -07-18.

*

* 自定义toast view

*/

class ToastView : FrameLayout {

private var toastText: TextView? = null

constructor(context: Context) : super(context) {

init(context)

}

constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {

init(context)

}

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {

init(context)

}

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(

context,

attrs,

defStyleAttr,

defStyleRes

) {

init(context)

}

private fun init(context: Context) {

addView(View.inflate(context, R.layout.toast_view, null))

toastText = findViewById(R.id.toastText)

}

fun setText(text: String) {

toastText!!.text = text

}

fun setTextSize(size: Int) {

toastText!!.textSize = size.toFloat()

}

fun setTextColor(color: Int) {

toastText!!.setTextColor(color)

}

}

自定义view layout

xmlns:android="/apk/res/android"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#88000000">

android:id="@+id/toastText"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:textColor="@color/text_color_white"

android:textSize="30sp"

android:paddingLeft="60dp"

android:paddingTop="10dp"

android:paddingRight="60dp"

android:paddingBottom="10dp"

tools:ignore="MissingConstraints"/>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。