吐司自定义来个大佬,帮忙下。

qq_45860132 2021-03-30 01:52:14
论坛逛了一圈,还是没办法解决。 importClass("android.graphics.drawable.NinePatchDrawable") importClass("android.content.Context") importClass("android.graphics.Bitmap") importClass("android.graphics.BitmapFactory") importClass("android.graphics.NinePatch") importClass("android.os.Bundle") importClass("android.graphics.Rect") //图片需要.9.png格式 var imgPath = "./res/03.9.png"; imgPath = files.path(imgPath) function setBackground(view, path) { bitmap = BitmapFactory.decodeFile(path) chunk = bitmap.getNinePatchChunk(); npd = new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null); view.setBackground(npd); } var 气泡 = function Toast9Patch(str) { importClass(android.widget.Toast); importClass(android.view.Gravity); importClass(android.graphics.Color); importPackage(android.content); // LENGTH_SHORT var toast = Toast.makeText(context,"",Toast.LENGTH_SHORT); view = ui.inflate( <frame > <TextView w="auto" id='_text' paddingTop="140px" paddingLeft="115px" paddingRight="80px" paddingBottom="35px" gravity="center|bottom" textColor="#FFFFFF" /> </frame>, null) view._text.setText(str) //背景 setBackground(view._text, imgPath); //视图 toast.setView(view); toast.show(); setTimeout(function () { toast.cancel(); }, 2000) } 气泡("1") sleep(1000) //不暂停运行第1。加暂停运行第2。 气泡("2") //想要的效果。吐司显示两秒。第1个现实一秒的时候会被第2个顶掉,第2个持续两秒。当sleep()大于两秒。先显示第1个,之后在显示第2个。
...全文
331 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
王能 2021-04-06
你在主线程中sleep会卡死,用handler
气泡("1");
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                气泡("3");
            }
        },1000);
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;

import androidx.annotation.NonNull;

import static java.lang.Thread.sleep;

public class Test {
    private static final int FIRST = 0x01;
    private static final int SECOND = 0x02;
    @SuppressLint("StaticFieldLeak")
    private static Context context;
    private Test(Context mContext) {
        context = mContext;
    }
    private static Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(@NonNull Message msg) {
            if (msg.what == FIRST) {
                Toast.makeText(context, "11111", Toast.LENGTH_SHORT).show();
            } else if (msg.what == SECOND) {
                Toast.makeText(context, "22222", Toast.LENGTH_SHORT).show();
            }
            return false;
        }
    });
    private static void Test() {
        new Thread(() -> {
            handler.sendEmptyMessage(FIRST);
            try {
                sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            handler.sendEmptyMessage(SECOND);
        }).start();
    }
}
这个你试试。
  • 打赏
  • 举报
回复
qq_45860132 2021-03-30
引用 8 楼 不会写代码的猴子的回复:
我明白你的意思了,你用线程来计时,在handle中toast。
我这问题要怎么处理呢?百度都翻遍了,解决不了。
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30
或者用timer计时,间隔设置为2s
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30
我明白你的意思了,你用线程来计时,在handle中toast。
  • 打赏
  • 举报
回复
qq_45860132 2021-03-30
引用 6 楼 不会写代码的猴子的回复:
你把toast.setDuration(2000)放到 toast.show();前面
还是一样的,第一个没显示暂停2000毫秒。显示第2个。
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30
你把toast.setDuration(2000)放到 toast.show();前面
  • 打赏
  • 举报
回复
qq_45860132 2021-03-30
是不是我哪里也定义错了?
  • 打赏
  • 举报
回复
qq_45860132 2021-03-30
引用 2 楼 不会写代码的猴子的回复:
可以用setDuration这个啊
你会你就多写点呀,你这代码加上去了还是没用。 importClass("android.graphics.drawable.NinePatchDrawable") importClass("android.content.Context") importClass("android.graphics.Bitmap") importClass("android.graphics.BitmapFactory") importClass("android.graphics.NinePatch") importClass("android.os.Bundle") importClass("android.graphics.Rect") var imgPath = "./res/03.9.png"; imgPath = files.path(imgPath) function setBackground(view, path) { bitmap = BitmapFactory.decodeFile(path) chunk = bitmap.getNinePatchChunk(); npd = new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null); view.setBackground(npd); } var 气泡 = function Toast9Patch(str) { importClass(android.widget.Toast); importClass(android.view.Gravity); importClass(android.graphics.Color); importPackage(android.content); // LENGTH_SHORT var toast = Toast.makeText(context,"",Toast.LENGTH_SHORT); view = ui.inflate( <frame > <TextView w="auto" id='_text' paddingTop="140px" paddingLeft="115px" paddingRight="80px" paddingBottom="35px" gravity="center|bottom" textColor="#FFFFFF" /> </frame>, null) view._text.setText(str) //背景 setBackground(view._text, imgPath); //视图 toast.setView(view); toast.show(); //setTimeout(function () { toast.cancel(); }, 2000) toast.setDuration(2000) } 气泡("1") sleep(2000) 气泡("3")
  • 打赏
  • 举报
回复
qq_45860132 2021-03-30
引用 1 楼 不会写代码的猴子的回复:
卧槽,中文代码我是真的裂开了
中文是表达我想做出来的效果。
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30
可以用setDuration这个啊
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-03-30
卧槽,中文代码我是真的裂开了
  • 打赏
  • 举报
回复
发帖
Android

7.9w+

社区成员

移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
帖子事件
创建了帖子
2021-03-30 01:52
社区公告
暂无公告