package com.xixun.xixunplayer; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.view.Choreographer; import android.view.View; import android.widget.ImageView; import java.util.ArrayList; import java.util.HashMap; import gnph.util.Dates; import gnph.util.JSList; import gnph.util.JSMap; import gnph.util.NumFmts; public class EleTimer 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; boolean hasHour; boolean hasMin; boolean hasSec; public EleTimer(String prefix, JSMap json, Context context) { super(context); var imgEntrys = json.jsmap("imgs").entrySet(); for(var imgEntry : imgEntrys) imgMap.put(imgEntry.getKey(), BitmapFactory.decodeFile(prefix+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"); targetTime = Dates.milli(json.stnn("targetTime")) / 1000; 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) {} } void cal() { var cur = System.currentTimeMillis() / 1000; var secs = isDown ? targetTime - cur : cur - 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