1
0
mirror of https://gitee.com/51danju/workclock.git synced 2025-06-21 17:52:46 +08:00

加入数字时钟的x方向位移设置,更好的和某些壁纸相配

This commit is contained in:
wushunlian 2019-09-01 11:26:25 +08:00
parent 03e6a4c474
commit dd5505a5ab
7 changed files with 100 additions and 17 deletions

View File

@ -137,6 +137,8 @@ public class DigitClockConfigFragment extends Fragment {
VerticalRangeSeekBar tvTimeTextPadding;
@BindView(R.id.tv_textStyle_border_doubble)
CheckBox tvTextStyleBorderDoubble;
@BindView(R.id.tv_time_text_basline_x)
VerticalRangeSeekBar tvTimeTextBaslineX;
public DigitClockConfigFragment(ThemeUIManager themeUIManager) {
this.themeUIManager = themeUIManager;
@ -174,10 +176,13 @@ public class DigitClockConfigFragment extends Fragment {
tvTimeTextBaslineDown.setTickMarkTextArray(new CharSequence[]{"", "位移", ""});
tvTimeTextBaslineX.setTickMarkTextArray(new CharSequence[]{"", "位移", ""});
tvTimeTextSubscriptScale.setTickMarkTextArray(new CharSequence[]{"1", "秒比", "100"});
tvTimeTextPadding.setTickMarkTextArray(new CharSequence[]{"0", "间隔", "20"});
loadForViewModel();
tvHourSystemGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@ -185,8 +190,6 @@ public class DigitClockConfigFragment extends Fragment {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.tv_hourSystem12:
globalViewModel.setHourSystem12(tvHourSystem12.isChecked());
break;
case R.id.tv_hourSystem24:
globalViewModel.setHourSystem12(tvHourSystem12.isChecked());
break;
@ -375,6 +378,23 @@ public class DigitClockConfigFragment extends Fragment {
}
});
tvTimeTextBaslineX.setOnRangeChangedListener(new OnRangeChangedListener() {
@Override
public void onRangeChanged(RangeSeekBar view, float leftValue, float rightValue, boolean isFromUser) {
digitViewModel.setBaseLineX(new Float(leftValue - 100).intValue());
}
@Override
public void onStartTrackingTouch(RangeSeekBar view, boolean isLeft) {
}
@Override
public void onStopTrackingTouch(RangeSeekBar view, boolean isLeft) {
}
});
tvTimeTextSubscriptScale.setOnRangeChangedListener(new OnRangeChangedListener() {
@Override
public void onRangeChanged(RangeSeekBar view, float leftValue, float rightValue, boolean isFromUser) {
@ -566,6 +586,13 @@ public class DigitClockConfigFragment extends Fragment {
baseLineDown = 100;
tvTimeTextBaslineDown.setProgress(baseLineDown);
baseLineDown = 100f + digitViewModel.getBaseLineX().getValue();
if (baseLineDown > 200)
baseLineDown = 200;
else if (baseLineDown < 0)
baseLineDown = 100;
tvTimeTextBaslineX.setProgress(baseLineDown);
tvTimeTextSubscriptScale.setVisibility(digitViewModel.getDisplaySecond().getValue() ? View.VISIBLE : View.GONE);
tvTimeTextSubscriptScale.setProgress(digitViewModel.getSubscriptFontScale().getValue());

View File

@ -6,19 +6,13 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.jeremyliao.liveeventbus.LiveEventBus;
import clock.socoolby.com.clock.ClockApplication;
import clock.socoolby.com.clock.R;
import clock.socoolby.com.clock.dao.base.TimeFontStyle;
import clock.socoolby.com.clock.event.ClockEvent;
import clock.socoolby.com.clock.event.ClockEventListener;
import clock.socoolby.com.clock.event.EventListenerHandle;
import clock.socoolby.com.clock.event.EventManger;
import clock.socoolby.com.clock.state.ClockStateMachine;
@ -108,6 +102,13 @@ public class DigitClockFragment extends Fragment {
}
});
digitViewModel.getBaseLineX().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
tv_time.setBaseLineY(integer);
}
});
digitViewModel.getLinearGradientAble().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {

View File

@ -49,6 +49,9 @@ public class DigitPerferenceModel {
protected final static String KEY_TIME_TEXT_BASELINE_DOWN= "key_time_text_baseline_down";
protected Integer baseLineDown=13;
protected final static String KEY_TIME_TEXT_BASELINE_Y= "key_time_text_baseline_y";
protected Integer baseLineX =0;
protected final static String KEY_TIME_TEXT_SUBSCRIPT_FONT_SCALE= "key_time_text_subscript_font_scale";
protected Integer subscriptFontScale=40;
@ -78,6 +81,7 @@ public class DigitPerferenceModel {
subscriptFontScale=jsonObject.optInt(KEY_TIME_TEXT_SUBSCRIPT_FONT_SCALE, 40);
timeTextPadding=jsonObject.optInt(KEY_TIME_TEXT_PADDING, 2);
charBackgroundBorderWithDoubble=jsonObject.optBoolean(KEY_IS_CHAR_BACKGROUND_BORDER_DUBBLE, false);
baseLineX =jsonObject.optInt(KEY_TIME_TEXT_BASELINE_Y,0);
}
@ -99,6 +103,7 @@ public class DigitPerferenceModel {
jsonObject.put(KEY_TIME_TEXT_SUBSCRIPT_FONT_SCALE,subscriptFontScale);
jsonObject.put(KEY_TIME_TEXT_PADDING,timeTextPadding);
jsonObject.put(KEY_IS_CHAR_BACKGROUND_BORDER_DUBBLE,charBackgroundBorderWithDoubble);
jsonObject.put(KEY_TIME_TEXT_BASELINE_Y, baseLineX);
}
public static String integerArrayToString(Integer[] fromArrays){
@ -259,4 +264,12 @@ public class DigitPerferenceModel {
public void setFontStyleSize(Integer fontStyleSize) {
this.fontStyleSize = fontStyleSize;
}
public Integer getBaseLineX() {
return baseLineX;
}
public void setBaseLineX(Integer baseLineX) {
this.baseLineX = baseLineX;
}
}

View File

@ -6,12 +6,10 @@ import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.Serializable;
import java.util.Timer;
import java.util.TimerTask;
import clock.socoolby.com.clock.Constants;
import clock.socoolby.com.clock.utils.FileUtils;
public class SharePerferenceModel extends AbstractPerferenceModel {
@ -633,6 +631,15 @@ public class SharePerferenceModel extends AbstractPerferenceModel {
dirtySave();
}
public Integer getBaseLineX() {
return digitPerferenceModel.getBaseLineX();
}
public void setBaseLineX(Integer baseLineY) {
digitPerferenceModel.setBaseLineX(baseLineY);
dirtySave();
}
//simulate
public String getSimulateClockTypeName() {

View File

@ -48,6 +48,8 @@ public class DigitViewModel extends ViewModel {
private MutableLiveData<Boolean> charBackgroundBorderWithDoubble=new MutableLiveData<>();
private MutableLiveData<Integer> baseLineX =new MutableLiveData<>();
SharePerferenceModel model;
@ -74,6 +76,7 @@ public class DigitViewModel extends ViewModel {
subscriptFontScale.setValue(model.getSubscriptFontScale());
timeTextPadding.setValue(model.getTimeTextPadding());
charBackgroundBorderWithDoubble.setValue(model.isCharBackgroundBorderWithDoubble());
baseLineX.setValue(model.getBaseLineX());
}
public MutableLiveData<Boolean> getDisplaySecond() {
@ -241,4 +244,13 @@ public class DigitViewModel extends ViewModel {
this.charBackgroundBorderWithDoubble.setValue(charBackgroundBorderWithDoubble);
model.setCharBackgroundBorderWithDoubble(charBackgroundBorderWithDoubble);
}
public MutableLiveData<Integer> getBaseLineX() {
return baseLineX;
}
public void setBaseLineX(Integer baseLineX) {
this.baseLineX.setValue(baseLineX);
model.setBaseLineX(baseLineX);
}
}

View File

@ -29,7 +29,8 @@ import clock.socoolby.com.clock.widget.textview.charanimator.Up2DownCharAnimator
public class DigitTextView extends androidx.appcompat.widget.AppCompatTextView {
public static final String Tag = DigitTextView.class.getSimpleName();
float baseLineDownScale = 0;
float baseLineYScale = 0;
float baseLineXScale = 0;
private LinearGradient mLinearGradient;
@ -116,7 +117,12 @@ public class DigitTextView extends androidx.appcompat.widget.AppCompatTextView {
}
public void setBaseLineDown(float baseLineDown) {
this.baseLineDownScale =baseLineDown;
this.baseLineYScale =baseLineDown;
layoutReflushAble=true;
}
public void setBaseLineY(float baseLineDown) {
this.baseLineXScale =baseLineDown;
layoutReflushAble=true;
}
@ -254,8 +260,6 @@ public class DigitTextView extends androidx.appcompat.widget.AppCompatTextView {
textSubscriptSpan = textSubscriptSpan + subscriptCharWidth * 2;
}
layoutReflushAble=false;
}
@ -283,8 +287,8 @@ public class DigitTextView extends androidx.appcompat.widget.AppCompatTextView {
if(layoutReflushCheck(textToDraw))
layoutReflush(textToDraw);
startX = (getWidth() - textWidth - textSubscriptSpan) / 2;
startY = (getHeight() + textBodyHight) / 2+getHeight()/2*(-baseLineDownScale /100);
startX = (getWidth() - textWidth - textSubscriptSpan) / 2+getHeight()/2*(-baseLineXScale /100);
startY = (getHeight() + textBodyHight) / 2+getHeight()/2*(-baseLineYScale /100);
for (int i = 0; i < textLength; i++) {
charStr = String.valueOf(textToDraw.charAt(i));

View File

@ -344,7 +344,7 @@
android:layout_height="match_parent"
android:layout_above="@id/text_style_group4"
android:layout_below="@id/text_style_group2"
android:layout_toLeftOf="@id/tv_time_text_basline_down"
android:layout_toLeftOf="@id/tv_time_text_basline_x"
android:layout_marginRight="20dp"
app:rsb_mode="single"
app:rsb_gravity="center"
@ -377,5 +377,24 @@
app:rsb_max="200"
app:rsb_min_interval="5"
/>
<com.jaygoo.widget.VerticalRangeSeekBar
android:id="@+id/tv_time_text_basline_x"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_above="@id/text_style_group4"
android:layout_below="@id/text_style_group2"
android:layout_toLeftOf="@id/tv_time_text_basline_down"
android:layout_marginRight="20dp"
app:rsb_mode="single"
app:rsb_gravity="center"
app:rsb_progress_radius="4dp"
app:rsb_thumb_width="30dp"
app:rsb_thumb_height="30dp"
app:rsb_tick_mark_mode="other"
app:rsb_tick_mark_gravity="center"
app:rsb_min="0"
app:rsb_max="200"
app:rsb_min_interval="5"
/>
</RelativeLayout>