論壇逛了一圈,還是沒辦法解決。
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個。
uj5u.com熱心網友回復:
臥槽,中文代碼我是真的裂開了uj5u.com熱心網友回復:
可以用setDuration這個啊uj5u.com熱心網友回復:
中文是表達我想做出來的效果。
uj5u.com熱心網友回復:
你會你就多寫點呀,你這代碼加上去了還是沒用。
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")
uj5u.com熱心網友回復:
是不是我哪里也定義錯了?uj5u.com熱心網友回復:
你把toast.setDuration(2000)放到 toast.show();前面uj5u.com熱心網友回復:
還是一樣的,第一個沒顯示暫停2000毫秒。顯示第2個。
uj5u.com熱心網友回復:
我明白你的意思了,你用執行緒來計時,在handle中toast。uj5u.com熱心網友回復:
或者用timer計時,間隔設定為2suj5u.com熱心網友回復:
我這問題要怎么處理呢?百度都翻遍了,解決不了。


uj5u.com熱心網友回復:
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();
}
}
這個你試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/270187.html
標籤:Android
