made hook and added images for theme toggle animation

This commit is contained in:
Vologhat
2022-08-25 19:03:29 +03:00
parent 9e9617fd16
commit 2cd856e574
46 changed files with 1186 additions and 0 deletions
@@ -0,0 +1,17 @@
package ru.vtosters.lite.hooks;
import com.vk.extensions.ViewExtKt;
import com.vk.navigation.right.RightMenuPresenter;
import ru.vtosters.lite.ui.views.VTLCheckableButton;
public class DayNightButtonHook {
public static void injectOnClick(VTLCheckableButton button, RightMenuPresenter presenter) {
button.postOnAnimationDelayed(() -> {
var rect = ViewExtKt.e(button);
presenter.a(new float[] { rect.centerX(), rect.centerY() });
}, 550); // minimal delay for fix toggle animation
button.toggle();
}
}
@@ -0,0 +1,95 @@
package ru.vtosters.lite.ui.views;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Checkable;
import androidx.appcompat.widget.AppCompatImageButton;
public class VTLCheckableButton extends AppCompatImageButton implements Checkable {
private boolean mIsChecked;
public VTLCheckableButton(Context context) {
super(context);
}
public VTLCheckableButton(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public VTLCheckableButton(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
}
@Override
public Parcelable onSaveInstanceState() {
var state = new CustomState(super.onSaveInstanceState());
state.setChecked(mIsChecked);
return state;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
if (state instanceof CustomState) {
var customState = ((CustomState) state);
super.onRestoreInstanceState(customState.getSuperState());
mIsChecked = customState.isChecked();
return;
}
super.onRestoreInstanceState(state);
}
@Override
public boolean isChecked() {
return this.mIsChecked;
}
@Override
public void setChecked(boolean checked) {
mIsChecked = checked;
refreshDrawableState();
}
@Override
public int[] onCreateDrawableState(int extraSpace) {
return mIsChecked
? View.mergeDrawableStates(super.onCreateDrawableState(extraSpace + 1), new int[] { android.R.attr.state_checked })
: super.onCreateDrawableState(extraSpace);
}
@Override
public void toggle() {
setChecked(!mIsChecked);
}
static class CustomState extends View.BaseSavedState {
private boolean checked;
public CustomState(Parcelable source) {
super(source);
}
public CustomState(Parcel source) {
super(source);
checked = source.readInt() != 0;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeInt(checked ? 1 : 0);
}
}
}
@@ -0,0 +1,70 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import androidx.annotation.ColorRes;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.recyclerview.widget.RecyclerView;
import com.vk.core.dialogs.actionspopup.ActionsPopup;
import com.vk.core.dialogs.adapter.ModalAdapter;
public class VKUIActionPopup {
private final ActionsPopup.b mLocalBuilder;
public VKUIActionPopup(Context context, View anchorView, boolean anchor, @ColorRes int color) {
this.mLocalBuilder = new ActionsPopup.b(anchorView, anchor, color).a(context);
}
public VKUIActionPopup setItem(String title, @Nullable Drawable icon, boolean z, onClickListener clickListener) {
mLocalBuilder.a(title, icon, z, () -> {
clickListener.onClick();
return null;
});
return this;
}
public VKUIActionPopup setItem(String title, @Nullable Drawable icon, onClickListener clickListener) {
return setItem(title, icon, false, clickListener);
}
public VKUIActionPopup setItem(String title, onClickListener clickListener) {
return setItem(title, null, false, clickListener);
}
public VKUIActionPopup setActionCheckIcon(Drawable actionCheckItem) {
mLocalBuilder.a(actionCheckItem);
return this;
}
public VKUIActionPopup setMaxWidth(@Px int maxWidth) {
mLocalBuilder.a(Integer.valueOf(maxWidth));
return this;
}
public VKUIActionPopup setAdapter(ModalAdapter adapter) {
mLocalBuilder.a((ModalAdapter<Object>) adapter);
return this;
}
public VKUIActionPopup setAdapter(RecyclerView.Adapter adapter) {
mLocalBuilder.a(adapter);
return this;
}
public ActionsPopup create() {
return mLocalBuilder.a();
}
public ActionsPopup create(boolean cancel) {
return mLocalBuilder.a(cancel);
}
public interface onClickListener {
void onClick();
}
}
@@ -0,0 +1,55 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.vtosters.lite.R;
public class VKUIButton extends TextView /*Yes, yes, it's TextView*/ {
public static final int STYLE_PRIMARY = R.style.VKUIButton_Primary;
public static final int STYLE_PRIMARY_ROUNDED = R.style.VKUIButton_Primary_Rounded;
public static final int STYLE_PRIMARY_SMALL = R.style.VKUIButton_Primary_Small;
public static final int STYLE_PRIMARY_SMALL_FLAT = R.style.VKUIButton_Primary_Small_Flat;
public static final int STYLE_PRIMARY_MEDIUM = R.style.VKUIButton_Primary_Medium;
public static final int STYLE_PRIMARY_BIG = R.style.VKUIButton_Primary_Big;
public static final int STYLE_SECONDARY = R.style.VKUIButton_Secondary;
public static final int STYLE_SECONDARY_ROUNDED = R.style.VKUIButton_Secondary_Rounded;
public static final int STYLE_SECONDARY_SMALL = R.style.VKUIButton_Secondary_Small;
public static final int STYLE_SECONDARY_SMALL_FLAT = R.style.VKUIButton_Secondary_Small_Flat;
public static final int STYLE_SECONDARY_MEDIUM = R.style.VKUIButton_Secondary_Medium;
public static final int STYLE_SECONDARY_BIG = R.style.VKUIButton_Secondary_Big;
public static final int STYLE_MUTED = R.style.VKUIButton_Muted;
public static final int STYLE_MUTED_ROUNDED = R.style.VKUIButton_Muted_Rounded;
public static final int STYLE_TERTIARY = R.style.VKUIButton_Tertiary;
public static final int STYLE_TERTIARY_ROUNDED = R.style.VKUIButton_Tertiary_Rounded;
public static final int STYLE_OUTLINE = R.style.VKUIButton_Outline;
public static final int STYLE_OUTLINE_WHITE = R.style.VKUIButton_Outline_White;
public static final int STYLE_GREEN = R.style.VKUIButton_Green;
public static final int STYLE_COMMERCE = STYLE_GREEN;
public static final int STYLE_FLAT = R.style.VKUIButton_Flat;
public static final int STYLE_WHITE = R.style.VKUIButton_White;
public static final int STYLE_MEDIA_OVERLAY = R.style.VKUIButton_MediaOverlay;
public static final int STYLE_SELECTABLE = R.style.VKUIButton_Selectable;
public static final int STYLE_SELECTABLE_FLAT = R.style.VKUIButton_Selectable_Flat;
public VKUIButton(Context context) {
this(context, STYLE_PRIMARY);
}
public VKUIButton(Context context, int style) {
super(new ContextThemeWrapper(context, style));
}
public VKUIButton(Context context, @Nullable AttributeSet attrs) {
super(new ContextThemeWrapper(context, STYLE_PRIMARY), attrs);
}
public VKUIButton(Context context, @Nullable AttributeSet attrs, int style) {
super(new ContextThemeWrapper(context, style), attrs);
}
}
@@ -0,0 +1,24 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.CheckBox;
public class VKUICheckBox extends CheckBox {
public VKUICheckBox(Context context) {
super(context);
}
public VKUICheckBox(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VKUICheckBox(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public VKUICheckBox(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
@@ -0,0 +1,77 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.EditText;
import androidx.annotation.Nullable;
import com.vk.core.drawable.VkUiDrawableHelper;
import com.vk.core.ui.themes.VKThemeHelper;
import com.vtosters.lite.R;
import ru.vtosters.lite.res.VTLColors;
public class VKUIEditText extends EditText {
public VKUIEditText(Context context) {
super(context);
init();
}
public VKUIEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public VKUIEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public VKUIEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
var fieldBackground = VKThemeHelper.d(R.attr.field_background);
var drawable = VkUiDrawableHelper.c.a(getContext(), fieldBackground, fieldBackground, VTLColors.getAccentColor(), fieldBackground);
setBackground(drawable);
}
@Override
public final void setBackground(Drawable background) {
super.setBackground(background);
}
@Override
public final void setBackgroundColor(int color) {
}
@Override
public final void setBackgroundResource(int resid) {
}
@Override
public void setCursorVisible(boolean visible) {
super.setCursorVisible(visible);
}
@Nullable
@Override
public Drawable getTextCursorDrawable() {
return super.getTextCursorDrawable();
}
@Override
public void setTextCursorDrawable(int textCursorDrawable) {
super.setTextCursorDrawable(textCursorDrawable);
}
@Override
public void setTextCursorDrawable(@Nullable Drawable textCursorDrawable) {
super.setTextCursorDrawable(textCursorDrawable);
}
}
@@ -0,0 +1,18 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import androidx.appcompat.widget.AppCompatRadioButton;
public class VKUIRadioCheckbox extends AppCompatRadioButton {
public VKUIRadioCheckbox(Context context) {
super(new ContextThemeWrapper(context, android.R.style.Widget_CompoundButton_RadioButton));
}
public VKUIRadioCheckbox(Context context, AttributeSet attributeSet) {
super(new ContextThemeWrapper(context, android.R.style.Widget_CompoundButton_RadioButton), attributeSet);
}
}
@@ -0,0 +1,83 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.Window;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import com.vk.core.dialogs.snackbar.VkSnackbar;
public class VKUISnackbar {
private VkSnackbar.a mLocalBuilder;
public VKUISnackbar(Context context, boolean darkMode) {
this.mLocalBuilder = new VkSnackbar.a(context, darkMode);
}
public VKUISnackbar setIcon(Drawable icon) {
mLocalBuilder.a(icon);
return this;
}
public VKUISnackbar setIcon(@DrawableRes int iconId) {
mLocalBuilder.b(iconId);
return this;
}
public VKUISnackbar setMessage(String message) {
mLocalBuilder.a((CharSequence) message);
return this;
}
public VKUISnackbar setMessage(@StringRes int resId) {
mLocalBuilder.a(resId);
return this;
}
public VKUISnackbar setShowTime(long time) {
mLocalBuilder.a(time);
return this;
}
public VKUISnackbar setView(View anchorView) {
mLocalBuilder.a(anchorView);
return this;
}
public VKUISnackbar setFragment(Fragment fragment) {
mLocalBuilder.a(fragment);
return this;
}
public VKUISnackbar setActionButton(String text, OnClickListener clickListener) {
mLocalBuilder.a(text, vkSnackbar -> {
clickListener.onClick(vkSnackbar);
return null;
});
return this;
}
public VKUISnackbar setActionButton(@StringRes int textId, OnClickListener clickListener) {
mLocalBuilder.a(textId, vkSnackbar -> {
clickListener.onClick(vkSnackbar);
return null;
});
return this;
}
public VkSnackbar create() {
return mLocalBuilder.d();
}
public VkSnackbar create(Window window) {
return mLocalBuilder.a(window);
}
public interface OnClickListener {
void onClick(VkSnackbar snackbar);
}
}
@@ -0,0 +1,38 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.vtosters.lite.R;
public class VKUITextView extends TextView {
public static final int STYLE_TITLE_1 = R.style.VKUIText_Title1;
public static final int STYLE_TITLE_2 = R.style.VKUIText_Title2;
public static final int STYLE_HEADLINE = R.style.VKUIText_Headline;
public static final int STYLE_DEFAULT = R.style.VKUIText_Text;
public static final int STYLE_SUBHEAD_1 = R.style.VKUIText_Subhead1;
public static final int STYLE_SUBHEAD_2 = R.style.VKUIText_Subhead2;
public static final int STYLE_CAPTION_1 = R.style.VKUIText_Caption1;
public static final int STYLE_CAPTION_2 = R.style.VKUIText_Caption2;
public VKUITextView(Context context) {
this(context, STYLE_DEFAULT);
}
public VKUITextView(Context context, int style) {
super(new ContextThemeWrapper(context, style));
}
public VKUITextView(Context context, @Nullable AttributeSet attrs) {
super(new ContextThemeWrapper(context, STYLE_DEFAULT), attrs);
}
public VKUITextView(Context context, @Nullable AttributeSet attrs, int style) {
super(new ContextThemeWrapper(context, style), attrs);
}
}
@@ -0,0 +1,23 @@
package ru.vtosters.lite.ui.vkui;
import android.content.Context;
import android.text.TextUtils;
import androidx.appcompat.widget.SwitchCompat;
import ru.vtosters.lite.utils.AndroidUtils;
public class VKUiSwitch extends SwitchCompat {
public VKUiSwitch(Context context) {
super(context);
setEllipsize(TextUtils.TruncateAt.END);
setPadding(AndroidUtils.dp2px(8), AndroidUtils.dp2px(8), AndroidUtils.dp2px(8), AndroidUtils.dp2px(8));
setTextSize(16.0f);
}
@Override
public final void setEllipsize(TextUtils.TruncateAt where) {
super.setEllipsize(where);
}
}
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="28dp"
android:width="28dp"
android:viewportWidth="28.0"
android:viewportHeight="28.0">
<path
android:fillColor="#FF000000"
android:pathData="M24.1662,15.6852C24.9586,15.4046 25.7226,16.1675 25.4431,16.9603C24.8744,18.5739 23.9978,20.0062 22.8112,21.1886C18.393,25.6068 11.2319,25.6061 6.8145,21.1888C2.3952,16.7721 2.3952,9.6093 6.8143,5.1906C7.9987,4.0061 9.4314,3.1289 11.0417,2.5592C11.8346,2.2787 12.5985,3.0428 12.3179,3.8357C11.1241,7.2082 11.9241,10.9693 14.4782,13.5252C17.0322,16.0787 20.7953,16.879 24.1662,15.6852ZM13.064,14.9394C10.4879,12.3616 9.3792,8.777 9.9012,5.2958C9.2915,5.6653 8.7316,6.1016 8.2284,6.6048C4.5906,10.2424 4.5906,16.1386 8.2285,19.7744C11.8651,23.4109 17.7599,23.4115 21.3982,19.7731C21.9025,19.2706 22.339,18.7114 22.7083,18.1016C19.227,18.6242 15.6403,17.5154 13.064,14.9394Z"
android:strokeColor="#00000000"
android:strokeWidth="1.0"
android:fillType="nonZero" />
</vector>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="28dp"
android:width="28dp"
android:viewportWidth="28.0"
android:viewportHeight="28.0">
<path
android:fillColor="#FF000000"
android:pathData="m15,2c0,-0.5523 -0.4477,-1 -1,-1s-1,0.4477 -1,1v3c0,0.5523 0.4477,1 1,1s1,-0.4477 1,-1z" />
<path
android:fillColor="#FF000000"
android:pathData="m15,23c0,-0.5523 -0.4477,-1 -1,-1s-1,0.4477 -1,1v3c0,0.5523 0.4477,1 1,1s1,-0.4477 1,-1z" />
<path
android:fillColor="#FF000000"
android:pathData="m23.8923,20.866c0.4783,0.2762 1.0899,0.1123 1.366,-0.366 0.2762,-0.4783 0.1123,-1.0899 -0.366,-1.366l-2.5981,-1.5c-0.4782,-0.2762 -1.0898,-0.1123 -1.366,0.366 -0.2761,0.4783 -0.1122,1.0899 0.366,1.366z" />
<path
android:fillColor="#FF000000"
android:pathData="m5.7058,10.366c0.4783,0.2762 1.0899,0.1123 1.366,-0.366 0.2761,-0.4783 0.1123,-1.0899 -0.366,-1.366l-2.5981,-1.5c-0.4783,-0.2761 -1.0899,-0.1123 -1.366,0.366s-0.1123,1.0899 0.366,1.366z" />
<path
android:fillColor="#FF000000"
android:pathData="m2.7417,20.5c-0.2761,-0.4783 -0.1123,-1.0899 0.366,-1.366l2.5981,-1.5c0.4783,-0.2762 1.0899,-0.1123 1.366,0.366s0.1123,1.0899 -0.366,1.366l-2.5981,1.5c-0.4783,0.2762 -1.0899,0.1123 -1.366,-0.366z" />
<path
android:fillColor="#FF000000"
android:pathData="m20.9282,10c-0.2761,-0.4783 -0.1122,-1.0899 0.366,-1.366l2.5981,-1.5c0.4783,-0.2761 1.0899,-0.1123 1.366,0.366 0.2762,0.4783 0.1123,1.0899 -0.366,1.366l-2.5981,1.5c-0.4782,0.2762 -1.0898,0.1123 -1.366,-0.366z" />
<path
android:fillColor="#FF000000"
android:pathData="m14,8.0313c-3.2964,0 -5.9688,2.6723 -5.9688,5.9688s2.6723,5.9688 5.9688,5.9688 5.9688,-2.6724 5.9688,-5.9688 -2.6724,-5.9688 -5.9688,-5.9688zM9.9922,14c0,-2.3546 1.6532,-4.0078 4.0078,-4.0078s4.0156,1.6532 4.0156,4.0078 -1.661,4 -4.0156,4 -4.0078,-1.6454 -4.0078,-4z"
android:fillType="evenOdd" />
</vector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:name="moon_to_sun_animation"
android:height="28dp"
android:width="28dp"
android:viewportWidth="28.0"
android:viewportHeight="28.0">
<group
android:name="corepath"
android:pivotX="14.0"
android:pivotY="14.0"
android:rotation="-180.0">
<path
android:name="1"
android:pathData="M 14 5 L 14 2"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="2"
android:pathData="M 21.794 9.5 L 24.392 8"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="3"
android:pathData="M 21.794 18.5 L 24.392 20"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="4"
android:pathData="M 14 26 L 14 23"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="5"
android:pathData="M 3.608 20 L 6.206 18.5"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="6"
android:pathData="M 3.608 8 L 6.206 9.5"
android:strokeColor="#FF979797"
android:trimPathStart="0.5"
android:trimPathEnd="0.5"
android:strokeLineCap="round"
android:strokeAlpha="0.0"
android:fillType="evenOdd" />
<path
android:name="mainpath"
android:pathData="M 16.624 24.497 C 21 23 23.5 19 23.5 14.75 C 23.5 9.089 18.911 4.5 13.25 4.5 C 9 4.5 5 7 3.5 11.376 C 5.314 10.762 7.113 10.625 8.898 10.964 C 11.575 11.472 13.232 12.769 14.23 13.771 C 15.227 14.773 16.486 16.343 17.029 18.996 C 17.391 20.764 17.256 22.597 16.624 24.497 Z"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineJoin="round"
android:fillType="evenOdd" />
</group>
</vector>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="M 16.624 24.497 C 21 23 23.5 19 23.5 14.75 C 23.5 9.089 18.911 4.5 13.25 4.5 C 9 4.5 5 7 3.5 11.376 C 5.314 10.762 7.113 10.625 8.898 10.964 C 11.575 11.472 13.232 12.769 14.23 13.771 C 15.227 14.773 16.486 16.343 17.029 18.996 C 17.391 20.764 17.256 22.597 16.624 24.497 Z"
android:valueTo="M 14 19 C 16.761 19 19 16.761 19 14 C 19 11.239 16.761 9 14 9 C 11.239 9 9 11.239 9 14 C 9 14.724 9.154 15.413 9.431 16.034 C 9.682 16.597 10.034 17.105 10.465 17.536 C 10.895 17.966 11.403 18.318 11.965 18.569 C 12.587 18.846 13.275 19 14 19 Z"
android:valueType="pathType"
android:propertyName="pathData" />
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="-180"
android:valueTo="-300"
android:valueType="floatType"
android:propertyName="rotation" />
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0.5"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="2"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="200"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:name="sun_to_moon_animation"
android:height="28dp"
android:width="28dp"
android:viewportWidth="28.0"
android:viewportHeight="28.0">
<group
android:name="corepath"
android:pivotX="14.0"
android:pivotY="14.0">
<path
android:name="1"
android:pathData="M 14 5 L 14 2"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="2"
android:pathData="M 21.794 9.5 L 24.392 8"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="3"
android:pathData="M 21.794 18.5 L 24.392 20"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="4"
android:pathData="M 14 26 L 14 23"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="5"
android:pathData="M 3.608 20 L 6.206 18.5"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="6"
android:pathData="M 3.608 8 L 6.206 9.5"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineCap="round"
android:fillType="evenOdd" />
<path
android:name="mainpath"
android:pathData="M 14 19 C 16.761 19 19 16.761 19 14 C 19 11.239 16.761 9 14 9 C 11.239 9 9 11.239 9 14 C 9 14.724 9.154 15.413 9.431 16.034 C 9.682 16.597 10.034 17.105 10.465 17.536 C 10.895 17.966 11.403 18.318 11.965 18.569 C 12.587 18.846 13.275 19 14 19 Z"
android:strokeColor="#FF979797"
android:strokeWidth="2.0"
android:strokeLineJoin="round"
android:fillType="evenOdd" />
</group>
</vector>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="M 14 19 C 16.761 19 19 16.761 19 14 C 19 11.239 16.761 9 14 9 C 11.239 9 9 11.239 9 14 C 9 14.724 9.154 15.413 9.431 16.034 C 9.682 16.597 10.034 17.105 10.465 17.536 C 10.895 17.966 11.403 18.318 11.965 18.569 C 12.587 18.846 13.275 19 14 19 Z"
android:valueTo="M 16.624 24.497 C 21 23 23.5 19 23.5 14.75 C 23.5 9.089 18.911 4.5 13.25 4.5 C 9 4.5 5 7 3.5 11.376 C 5.314 10.762 7.113 10.625 8.898 10.964 C 11.575 11.472 13.232 12.769 14.23 13.771 C 15.227 14.773 16.486 16.343 17.029 18.996 C 17.391 20.764 17.256 22.597 16.624 24.497 Z"
android:valueType="pathType"
android:propertyName="pathData" />
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="-180"
android:valueType="floatType"
android:propertyName="rotation" />
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="1"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathEnd" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="500"
android:valueFrom="0"
android:valueTo="0.5"
android:valueType="floatType"
android:propertyName="trimPathStart" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeWidth" />
<objectAnimator
android:interpolator="@android:interpolator/fast_out_slow_in"
android:duration="400"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="strokeAlpha" />
</set>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:drawable="@drawable/$vk_icon_animated_moon_to_sun__0">
<target
android:name="mainpath"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__1" />
<target
android:name="corepath"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__2" />
<target
android:name="1"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__3" />
<target
android:name="2"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__4" />
<target
android:name="3"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__5" />
<target
android:name="4"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__6" />
<target
android:name="5"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__7" />
<target
android:name="6"
android:animation="@drawable/$vk_icon_animated_moon_to_sun__8" />
</animated-vector>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:drawable="@drawable/$vk_icon_animated_sun_to_moon__0">
<target
android:name="mainpath"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__1" />
<target
android:name="corepath"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__2" />
<target
android:name="1"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__3" />
<target
android:name="2"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__4" />
<target
android:name="3"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__5" />
<target
android:name="4"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__6" />
<target
android:name="5"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__7" />
<target
android:name="6"
android:animation="@drawable/$vk_icon_animated_sun_to_moon__8" />
</animated-vector>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
android:id="@id/checked"
android:drawable="@drawable/vk_icon_sun_outline_28" />
<item
android:state_checked="false"
android:id="@id/unchecked"
android:drawable="@drawable/vk_icon_moon_outline_28" />
<transition
android:drawable="@drawable/vk_icon_animated_sun_to_moon"
android:toId="@id/unchecked"
android:fromId="@id/checked" />
<transition
android:drawable="@drawable/vk_icon_animated_moon_to_sun"
android:toId="@id/checked"
android:fromId="@id/unchecked" />
</animated-selector>
+8
View File
@@ -10900,6 +10900,14 @@
<public name="zhukov" id="0x7f0a1005" type="id" />
<public name="button_update" id="0x7f0a1006" type="id" />
<public name="choose_btn" id="0x7f0a1007" type="id" />
<public name="color_preview" id="0x7f0a1008" type="id" />
<public name="color_name" id="0x7f0a1009" type="id" />
<public name="color_value" id="0x7f0a100a" type="id" />
<public name="color_preview_border" id="0x7f0a100b" type="id" />
<public name="theme_mode_preview" id="0x7f0a100c" type="id" />
<public name="theme_mode_preview_border" id="0x7f0a100d" type="id" />
<public name="checked" id="0x7f0a100e" type="id" />
<public name="unchecked" id="0x7f0a100f" type="id" />
<public name="abc_config_activityDefaultDur" id="0x7f0b0000" type="integer" />
<public name="abc_config_activityShortDur" id="0x7f0b0001" type="integer" />
<public name="angle_rtl_180" id="0x7f0b0002" type="integer" />