diff --git a/app/src/main/java/clock/socoolby/com/clock/MainActivity.java b/app/src/main/java/clock/socoolby/com/clock/MainActivity.java index 9d6e165..3caa353 100755 --- a/app/src/main/java/clock/socoolby/com/clock/MainActivity.java +++ b/app/src/main/java/clock/socoolby/com/clock/MainActivity.java @@ -133,7 +133,7 @@ public class MainActivity extends Activity implements Handler.Callback, View.OnC fontStyleList.add(new TimeFontStyle("affair",110,120,130,150)); fontStyleList.add(new TimeFontStyle("agenda",140,150,160,180)); - fontStyleList.add(new TimeFontStyle("cheapfire",110,120,130,150)); + fontStyleList.add(new TimeFontStyle("cheapfire",140,150,160,180)); fontStyleList.add(new TimeFontStyle("cherif",80,100,110,140)); fontStyleList.add(new TimeFontStyle("Cigar Box Guitar",120,130,140,150)); fontStyleList.add(new TimeFontStyle("Ciung Wanara Sejati",110,120,130,150)); @@ -176,9 +176,9 @@ public class MainActivity extends Activity implements Handler.Callback, View.OnC fontStyleList.add(new TimeFontStyle("Xtra Power",100,110,120,160)); fontStyleList.add(new TimeFontStyle("海报圆圆",110,120,130,150)); - fontStyleList.add(new TimeFontStyle("爱心小兔",80,100,110,140)); + fontStyleList.add(new TimeFontStyle("爱心小兔",110,115,130,140)); fontStyleList.add(new TimeFontStyle("王漢宗海報體一半天水",110,120,130,150)); - fontStyleList.add(new TimeFontStyle("立体铁山硬笔行楷简",110,120,130,150)); + fontStyleList.add(new TimeFontStyle("立体铁山硬笔行楷简",120,130,140,180)); fontStyleList.add(new TimeFontStyle("腾祥倩心简",110,120,130,150)); fontStyleList.add(new TimeFontStyle("苏新诗毛糙体简",110,120,130,150)); fontStyleList.add(new TimeFontStyle("谁能许我扶桑花期",110,120,130,150)); @@ -238,12 +238,11 @@ public class MainActivity extends Activity implements Handler.Callback, View.OnC } private void setFontSize(int fontSize){ - tv_time.setText("", TextView.BufferType.NORMAL); tv_time.setTextSize(fontSize); } - private TextView tv_time; + private DigitTextView tv_time; private TextView tv_date; private TextView tv_day; private TextView tv_weather; @@ -1206,26 +1205,26 @@ public class MainActivity extends Activity implements Handler.Callback, View.OnC clockAnimator = new ClockAnimator(); clockAnimator.init(clockView.getContext(),clockView); clockAnimator.setColor(foregroundColor); - if(index>5) + if(index>4) currentClockAnimatorIndex=index=0; switch (index) { case 0: clockAnimator.setClock(new CircleClock()); break; - case 3: + case 2: clockAnimator.setClock(new OvalClock()); break; - case 2: + case 1: clockAnimator.setClock(new SquareClock()); break; - case 1: - clockAnimator.setClock(new OctagonalClock()); - break; - case 4: + //case 3: + // clockAnimator.setClock(new OctagonalClock()); + // break; + case 3: clockAnimator.setClock(new HexagonalClock()); break; - case 5: + case 4: clockAnimator.setClock(new HelixClock()); break; default: @@ -1371,42 +1370,19 @@ public class MainActivity extends Activity implements Handler.Callback, View.OnC } } - DigitTextView.DigitSpan digitSpan,digitSpan1; - DigitTextView.DigitSmallSpan digitSpan2; - SpannableString spannable; - DigitTextView.DigitFlagSpan digitFlagSpan; + private void setCurrentTimeToView(String timeString){ if(isArtificialHiddle) return; - spannable = new SpannableString(timeString); - if(digitSpan==null) { - digitSpan = new DigitTextView.DigitSpan(); - digitSpan1 = new DigitTextView.DigitSpan(); - digitSpan2 = new DigitTextView.DigitSmallSpan(); - digitFlagSpan=new DigitTextView.DigitFlagSpan(); - } if(isFullScreen){ - digitSpan.setBeseLineDown(0); - digitSpan1.setBeseLineDown(0); - digitFlagSpan.setBeseLineDown(0); - digitSpan2.setBeseLineDown(0); + tv_time.setBaseLineDown(0); }else{ - float baseLineDown=tv_date.getHeight()/2; - digitSpan.setBeseLineDown(baseLineDown); - digitSpan1.setBeseLineDown(baseLineDown); - digitFlagSpan.setBeseLineDown(baseLineDown); - digitSpan2.setBeseLineDown(baseLineDown); + tv_time.setBaseLineDown(tv_day.getHeight()/2); } - spannable.setSpan(digitSpan,0,2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - spannable.setSpan(digitFlagSpan,2,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - spannable.setSpan(digitSpan1,3,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - if(timeString.length()>5) - spannable.setSpan(digitSpan2,5,8,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - //tv_time.setText(spannable, TextView.BufferType.SPANNABLE); - tv_time.setText(spannable, TextView.BufferType.NORMAL); - //tv_time.setText(timeString); + tv_time.setText(timeString); } + boolean heartbeat=false; private void updateTime() { heartbeat=!heartbeat; diff --git a/app/src/main/java/clock/socoolby/com/clock/widget/textview/DigitTextView.java b/app/src/main/java/clock/socoolby/com/clock/widget/textview/DigitTextView.java index c773128..fb0566c 100644 --- a/app/src/main/java/clock/socoolby/com/clock/widget/textview/DigitTextView.java +++ b/app/src/main/java/clock/socoolby/com/clock/widget/textview/DigitTextView.java @@ -1,21 +1,19 @@ package clock.socoolby.com.clock.widget.textview; -import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; -import android.os.Build; import android.text.TextPaint; import android.text.style.ReplacementSpan; import android.util.AttributeSet; import android.util.Log; -import android.widget.TextView; - import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; -@SuppressLint("AppCompatCustomView") -public class DigitTextView extends TextView { +public class DigitTextView extends android.support.v7.widget.AppCompatTextView { + public static final String Tag=DigitTextView.class.getSimpleName(); + + float baseLineDown=0; + public DigitTextView(Context context) { super(context); } @@ -28,9 +26,69 @@ public class DigitTextView extends TextView { super(context, attrs, defStyleAttr); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - public DigitTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); + public void setBaseLineDown(float baseLineDown) { + this.baseLineDown = baseLineDown; + } + + protected void onDraw(Canvas canvas) { + int color = getCurrentTextColor(); + + Paint mTextPaint=getPaint(); + + mTextPaint.setColor(color); + + CharSequence textToDraw=getText(); + + Paint.FontMetricsInt fm=mTextPaint.getFontMetricsInt(); + + int baseCharWidth= getCharWidth("8",mTextPaint); + int flagCharwidth=getCharWidth(":",mTextPaint); + int textHight=-fm.descent - fm.ascent; + int smallTextHight=0; + int smallCharWidth=0; + Paint smallCharPaint=null; + + int textLength=textToDraw.length(); + int textWidth=0; + int textSmallSpan=0; + + + if(textLength>4){ + textWidth=baseCharWidth*4+flagCharwidth; + } + if(textLength>7){ + float fontScale = getResources().getDisplayMetrics().scaledDensity; + smallCharPaint = getCustomTextPaint(mTextPaint,mTextPaint.getTextSize()/fontScale*4/5); + smallCharWidth=getCharWidth("8",smallCharPaint); + fm=smallCharPaint.getFontMetricsInt(); + smallTextHight=-fm.descent - fm.ascent; + textSmallSpan=smallCharWidth*2; + } + + float startX=(getWidth()-textWidth-textSmallSpan)/2; + float startY=(getHeight()+textHight)/2; + + for(int i=0;i= RANDOM_EFFECT_TYPE_SQUARE){ mEndValue=1.0f; mStartDelay=0; - //mDuration=mDuration*2; mValueAnimator.setFloatValues(0F, mEndValue); initCurtainEffect(mStyle); mAnimatorView.setVisibility(View.GONE); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7262c23..7b566c2 100755 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -31,15 +31,6 @@ android:background="#00FFFFFF" > - - - + + + + +