当前位置: 首页 > wzjs >正文

苏州教育学会网站建设搬瓦工wordpress安装

苏州教育学会网站建设,搬瓦工wordpress安装,免费建站网站网页,在线教育网站平台建设的意义支持自定义布局:可以灵活地显示自定义样式的 Toast。 线程安全:确保在主线程中显示 Toast,避免崩溃。 避免内存泄漏:使用 ApplicationContext 和取消机制,防止内存泄漏问题。 工具类:作为一个通用的工具…

支持自定义布局:可以灵活地显示自定义样式的 Toast。

线程安全:确保在主线程中显示 Toast,避免崩溃。

避免内存泄漏:使用 ApplicationContext 和取消机制,防止内存泄漏问题。

工具类:作为一个通用的工具类,方便在项目中复用。

ToastUtil

import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class ToastUtil {private static Toast toast; // 全局Toast对象,避免重复创建private static final int DEFAULT_GRAVITY = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; // 默认显示位置private static final int DEFAULT_Y_OFFSET = 100; // 默认Y轴偏移量private static final Handler mainHandler = new Handler(Looper.getMainLooper()); // 主线程Handler/*** 显示短时间的Toast** @param context 上下文* @param message 要显示的消息*/public static void showShort(Context context, String message) {showToast(context, message, Toast.LENGTH_SHORT, DEFAULT_GRAVITY, 0, DEFAULT_Y_OFFSET);}/*** 显示长时间的Toast** @param context 上下文* @param message 要显示的消息*/public static void showLong(Context context, String message) {showToast(context, message, Toast.LENGTH_LONG, DEFAULT_GRAVITY, 0, DEFAULT_Y_OFFSET);}/*** 显示短时间的Toast(使用字符串资源ID)** @param context 上下文* @param resId   字符串资源ID*/public static void showShort(Context context, int resId) {showShort(context, context.getString(resId));}/*** 显示长时间的Toast(使用字符串资源ID)** @param context 上下文* @param resId   字符串资源ID*/public static void showLong(Context context, int resId) {showLong(context, context.getString(resId));}/*** 显示自定义位置的Toast** @param context  上下文* @param message  要显示的消息* @param gravity  显示位置(例如 Gravity.TOP)* @param xOffset  X轴偏移量* @param yOffset  Y轴偏移量*/public static void showAtPosition(Context context, String message, int gravity, int xOffset, int yOffset) {showToast(context, message, Toast.LENGTH_SHORT, gravity, xOffset, yOffset);}/*** 显示自定义布局的Toast** @param context     上下文* @param layoutResId 自定义布局资源ID* @param message     要显示的消息*/public static void showCustom(Context context, int layoutResId, String message) {runOnUiThread(() -> {if (toast != null) {toast.cancel(); // 取消之前的Toast}// 使用ApplicationContext,避免内存泄漏Context appContext = context.getApplicationContext();LayoutInflater inflater = (LayoutInflater) appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(layoutResId, null);// 查找布局中的TextView(假设id为text)TextView textView = layout.findViewById(R.id.text);if (textView != null) {textView.setText(message);}toast = new Toast(appContext);toast.setDuration(Toast.LENGTH_SHORT);toast.setView(layout);toast.show();});}/*** 显示自定义布局的Toast(支持自定义显示时长)** @param context     上下文* @param layoutResId 自定义布局资源ID* @param message     要显示的消息* @param duration    显示时长(Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG)*/public static void showCustom(Context context, int layoutResId, String message, int duration) {runOnUiThread(() -> {if (toast != null) {toast.cancel(); // 取消之前的Toast}// 使用ApplicationContext,避免内存泄漏Context appContext = context.getApplicationContext();LayoutInflater inflater = (LayoutInflater) appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(layoutResId, null);// 查找布局中的TextView(假设id为text)TextView textView = layout.findViewById(R.id.text);if (textView != null) {textView.setText(message);}toast = new Toast(appContext);toast.setDuration(duration);toast.setView(layout);toast.show();});}/*** 核心方法:显示Toast** @param context  上下文* @param message  要显示的消息* @param duration 显示时长(Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG)* @param gravity  显示位置* @param xOffset  X轴偏移量* @param yOffset  Y轴偏移量*/private static void showToast(Context context, String message, int duration, int gravity, int xOffset, int yOffset) {runOnUiThread(() -> {if (toast != null) {toast.cancel(); // 取消之前的Toast}// 使用ApplicationContext,避免内存泄漏Context appContext = context.getApplicationContext();toast = Toast.makeText(appContext, message, duration);toast.setGravity(gravity, xOffset, yOffset); // 设置显示位置toast.show();});}/*** 取消Toast*/public static void cancelToast() {if (toast != null) {toast.cancel();toast = null; // 释放引用}}/*** 确保在主线程中运行** @param runnable 需要执行的任务*/private static void runOnUiThread(Runnable runnable) {if (Looper.myLooper() == Looper.getMainLooper()) {runnable.run(); // 当前是主线程,直接运行} else {mainHandler.post(runnable); // 当前是子线程,切换到主线程运行}}
}

使用示例

  1. 显示自定义布局的 Toast
ToastUtil.showCustom(MainActivity.this, R.layout.custom_toast, "这是一个自定义Toast");

在子线程中调用:

new Thread(() -> {// 在子线程中调用ToastUtil.showCustom(MainActivity.this, R.layout.custom_toast, "子线程中的自定义Toast");
}).start();

自定义布局示例:
假设 res/layout/custom_toast.xml 是一个自定义布局文件,例如:

<!-- res/layout/custom_toast.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/toast_background"android:padding="16dp"android:orientation="horizontal"><ImageViewandroid:id="@+id/icon"android:layout_width="24dp"android:layout_height="24dp"android:src="@drawable/ic_toast_icon"android:layout_marginEnd="8dp"/><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/white"android:textSize="16sp"/>
</LinearLayout>

文章转载自:

http://QLFeG9r6.jpmcb.cn
http://HLScHpJO.jpmcb.cn
http://NirpzKkW.jpmcb.cn
http://P8vH1DSl.jpmcb.cn
http://rtSnswF6.jpmcb.cn
http://2VSVCkaJ.jpmcb.cn
http://d2mY2Edd.jpmcb.cn
http://uqnH1RiG.jpmcb.cn
http://EHiUNrZy.jpmcb.cn
http://qaNeautM.jpmcb.cn
http://E90OsE8C.jpmcb.cn
http://UY5s2QFT.jpmcb.cn
http://epJFpkRm.jpmcb.cn
http://dRZS6m3x.jpmcb.cn
http://rOhJK6Hu.jpmcb.cn
http://8AOVQzF2.jpmcb.cn
http://vm4QJNyg.jpmcb.cn
http://tJXDBDU1.jpmcb.cn
http://vC6ajhhv.jpmcb.cn
http://lvZlgeLr.jpmcb.cn
http://o81UPUzL.jpmcb.cn
http://JxN9jYpR.jpmcb.cn
http://6B6qkLUR.jpmcb.cn
http://zZVBxvlP.jpmcb.cn
http://pqW0vgH7.jpmcb.cn
http://YhsBr4YL.jpmcb.cn
http://caP6g9yT.jpmcb.cn
http://5elpkt0u.jpmcb.cn
http://1Z28fscZ.jpmcb.cn
http://00EOsYEs.jpmcb.cn
http://www.dtcms.com/wzjs/655954.html

相关文章:

  • 实用写作网站网站制作教学
  • 东莞市建设银行招聘网站什么是营销渠道
  • 免费网站推广网址云服务器网站解析
  • 网站开发要服务器吗免费建网站在那里好
  • 免费做二维码网站设计公司网站运营
  • 自己做服务器的网站网站集群怎么做
  • 30秒网站建网站需要了解什么
  • 499全包网站建设app对接网站登录要怎么做
  • 做一个公司网站一般多少钱seo岗位有哪些
  • 广州建设厅电工网站施工企业报验资质清单
  • 做房产网站不备案可以吗企业网站源码排行
  • 网站建设需要入无形资产吗百度网站前三名权重一般在多少
  • 怎么用wordpress建手机网站微网站的链接怎么做
  • 长沙住建信息中心网站网页图片不清晰怎么办
  • 网站开发需要什么基础北京各大网站推广平台哪家好
  • 做网站前端后端ui什么意思十大SEO网站外链建设误区
  • 代做毕业设计网站多少钱软件公司运营是做什么的
  • 专业商城网站搭建费用网站建网站建设企业电话
  • 河北衡水建设网站公司购物平台网站建设
  • 上海网站建设选缘魁-企查深圳网站优化
  • 贵美商城网站的首页怎么做代码合肥网站设计机构
  • 小型企业的网站建设论文网络服务器配置与管理试题
  • 西安城乡住房建设厅网站校友录网站开发设计
  • 网站权重6了该则么做优化方案怎样查别人网站的外链
  • 自媒体专用网站免费关键词查网址
  • 美容培训东莞网站建设wordpress忘记密码ftp
  • 网站开发人员是什么找设计工作哪个网站好
  • 我想在网站做宣传怎么弄html5做图网站
  • 咸阳做网站的公司电话sem优化和seo的区别
  • 站长统计免费下载学校做网站难吗