Update FCLDynamicIsland.java

This commit is contained in:
Tungstend 2023-07-28 20:55:26 +08:00
parent 77e42d0cc5
commit d65765c3bd
1 changed files with 15 additions and 5 deletions

View File

@ -7,6 +7,7 @@ import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -14,6 +15,7 @@ import androidx.appcompat.widget.AppCompatTextView;
import com.tungsten.fclcore.fakefx.beans.property.IntegerProperty;
import com.tungsten.fclcore.fakefx.beans.property.IntegerPropertyBase;
import com.tungsten.fclcore.task.Schedulers;
import com.tungsten.fcllibrary.anim.DynamicIslandAnim;
import com.tungsten.fcllibrary.component.theme.ThemeEngine;
import com.tungsten.fcllibrary.util.ConvertUtils;
@ -21,6 +23,7 @@ import com.tungsten.fcllibrary.util.ConvertUtils;
public class FCLDynamicIsland extends AppCompatTextView {
private DynamicIslandAnim anim;
private String text = "";
private Path outlinePath;
private Paint outlinePaint;
@ -66,8 +69,8 @@ public class FCLDynamicIsland extends AppCompatTextView {
setTextSize(13);
anim = new DynamicIslandAnim(this);
setGravity(Gravity.CENTER);
int tb = ConvertUtils.dip2px(getContext(), 8f);
int lr = ConvertUtils.dip2px(getContext(), 18f);
int tb = ConvertUtils.dip2px(getContext(), 10f);
int lr = ConvertUtils.dip2px(getContext(), 20f);
setPadding(lr, tb, lr, tb);
outlinePath = new Path();
outlinePaint = new Paint();
@ -120,12 +123,19 @@ public class FCLDynamicIsland extends AppCompatTextView {
outlinePath.lineTo(offset + (height / 2), offset);
canvas.drawPath(outlinePath, insidePaint);
canvas.drawPath(outlinePath, outlinePaint);
canvas.drawText(getText().toString(), getWidth() / 2f, (getHeight() / 2f) + 21, textPaint);
float baseline = (getMeasuredHeight() / 2f) - ((textPaint.getFontMetrics().top + textPaint.getFontMetrics().bottom) / 2);
canvas.drawText(text, getMeasuredWidth() / 2f, baseline, textPaint);
}
public void refresh(String text) {
setText(text);
invalidate();
Schedulers.androidUIThread().execute(() -> {
this.text = text;
ViewGroup.LayoutParams params = getLayoutParams();
params.width = (int) textPaint.measureText(text) + ConvertUtils.dip2px(getContext(), 40f);
params.height = ConvertUtils.dip2px(getContext(), 33f);
setLayoutParams(params);
post(this::invalidate);
});
}
public void setTextWithAnim(String text) {