多次使用自定义ToastDialog显示toast,显示过慢,无法立刻显示最新toast

使用自定义ToastDialog连续多次显示toast,toast连续显示时过慢,无法立刻显示最新toast,并且app卡顿,疑似线程阻塞。

请问是否有办法解决

鸿蒙
HarmonyOS
自定义
2021-10-15 10:25:32
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
爱吃土豆丝的打工人
1

DialogToast的消失时间是可以设置的

你可以在dialogToast里面设置他的消失时间,最好跟你的线程绑定一下,也可以给你的线程一个睡眠时间,时间的大小与弹窗的消失时间一致就可以了。

分享
微博
QQ
微信
回复
2021-10-18 08:59:55
Hazelp

可以试下以下代码,本地测试OK:

public class Toast {
    private static final int TEXT_SIZE = 40;
    private static final int TEXT_PADDING = 20;
    private static final int TEXT_HEIGHT = 100;
    private static final int TEXT_CORNER = 20;
    private static final int TEXT_OFFSETY = 200;
    private static final int TEXT_ALPHA = 120;

    private Toast() {}

    /**
     * 吐司
     *
     * @param context the context
     * @param text    the toast content
     * @param ms      the toast ime,ms
     */
    public static void show(Context context, String text, int ms) {
        DependentLayout layout = new DependentLayout(context);
        layout.setWidth(ScreenUtils.getScreenWidth(context));
        layout.setHeight(TEXT_HEIGHT);
        Text textView = new Text(context);
        ShapeElement background = new ShapeElement();
        background.setCornerRadius(TEXT_CORNER);
        background.setRgbColor(new RgbColor(0, 0, 0, TEXT_ALPHA));
        textView.setBackground(background);
        DependentLayout.LayoutConfig config =
                new DependentLayout.LayoutConfig(
                        DependentLayout.LayoutConfig.MATCH_CONTENT, DependentLayout.LayoutConfig.MATCH_CONTENT);
        config.addRule(DependentLayout.LayoutConfig.HORIZONTAL_CENTER);
        textView.setLayoutConfig(config);
        textView.setPadding(TEXT_PADDING, TEXT_PADDING, TEXT_PADDING, TEXT_PADDING);
        textView.setMaxTextLines(1);
        textView.setTextSize(TEXT_SIZE);
        textView.setMaxTextWidth(ScreenUtils.getScreenWidth(context));
        textView.setTextColor(Color.WHITE);
        textView.setText(text);
        layout.addComponent(textView);
        ToastDialog toastDialog = new ToastDialog(context);
        toastDialog.setContentCustomComponent(layout);
        toastDialog.setTransparent(true);
        toastDialog.setOffset(0, TEXT_OFFSETY);
        toastDialog.setSize(ScreenUtils.getScreenWidth(context), TEXT_HEIGHT);
        toastDialog.setDuration(ms);
        toastDialog.show();
    }
}

使用方法:Toast.show()

分享
微博
QQ
微信
回复
2021-10-15 13:57:03
相关问题
鸿蒙组件toast自定义样式
3034浏览 • 1回复 待解决
自定义组件嵌套子组件
4494浏览 • 3回复 待解决
js 自定义组件如何传递方法?
1757浏览 • 1回复 待解决
智慧推荐可以自定义app吗
3346浏览 • 1回复 待解决
如何自定义Component 属性
9372浏览 • 3回复 待解决
函数内容没法toast!!!
3338浏览 • 3回复 待解决
鸿蒙app使用js显示地图
2971浏览 • 1回复 待解决
【求助】自定义相机Camera2焦距异常
3473浏览 • 1回复 待解决
鸿蒙中如何自定义字体文件
12236浏览 • 1回复 待解决
JAVA卡片怎么用自定义组件?
1729浏览 • 1回复 待解决
鸿蒙怎么实现自定义布局的Dialog
4531浏览 • 2回复 已解决
华为手机是否支持自定义锁屏页面?
346浏览 • 1回复 待解决
如何在js文件中引入自定义js文件
2824浏览 • 1回复 待解决
鸿蒙Toast能指定弹出的位置吗
2282浏览 • 1回复 待解决
鸿蒙 | Text 内容显示问题
5149浏览 • 5回复 待解决