package com.xixun.xixunplayer; import android.annotation.SuppressLint; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.Choreographer; import android.view.View; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import gnph.util.JSMap; import gnph.util.NumFmts; @SuppressLint("ViewConstructor") public class SrcTimer extends View implements Choreographer.FrameCallback { HashMap imgMap = new HashMap<>(); ArrayList imgs = new ArrayList<>(); Bitmap text, day, hour, min, sec; int spaceWidth, len; Paint paint = new Paint(); long targetTime; boolean isDown; boolean isMultiline; boolean hasDay, hasHour, hasMin, hasSec; public SrcTimer(Prog prog, JSMap json) { super(prog.getContext()); var imgEntrys = json.jsmap("imgs").entrySet(); for(var imgEntry : imgEntrys) imgMap.put(imgEntry.getKey(), BitmapFactory.decodeFile(Util.programDir+"/"+imgEntry.getValue())); text = imgMap.get("text"); day = imgMap.get("day"); hour = imgMap.get("hour"); min = imgMap.get("min"); sec = imgMap.get("sec"); spaceWidth = (int) Math.round(json.dbl("spaceWidth")); isDown = json.bool("isDown"); var dateFmt = new SimpleDateFormat("y-M-d H:m:s"); try { targetTime = dateFmt.parse(json.stnn("targetTime")).getTime() / 1000; } catch (Exception e) { Util.makeText(prog.getContext(), Util.toStr(e)).show(); Util.printStackTrace(e); } hasDay = json.bool("hasDay"); hasHour = json.bool("hasHour"); hasMin = json.bool("hasMin"); hasSec = json.bool("hasSec"); isMultiline = json.bool("isMultiline"); paint.setTextAlign(Paint.Align.CENTER); try { setBackgroundColor(Color.parseColor(json.stnn("backColor"))); } catch (Exception ignored) {} prog.calls.add(this); } void cal() { var secs = isDown ? targetTime - lastSec : lastSec - targetTime; if(secs < 0) secs = 0; len = 0; imgs.clear(); if(text!=null && ! isMultiline) { imgs.add(text); imgs.add(null); len += text.getWidth(); len += spaceWidth; } if(hasDay) { var str = Long.toString(secs/86400); for(int cc=0; cc