diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt index b5d627a..ffbf95c 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt @@ -9,7 +9,9 @@ import androidx.fragment.app.viewModels import com.ama.core.architecture.appBase.AppViewsFragment import com.ama.core.architecture.appBase.OnFragmentBackgroundListener import com.ama.core.architecture.util.SpUtil +import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.util.setStatusBarDarkFont +import com.gamedog.vididin.main.fragments.task.DailySignDialog import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener import dagger.hilt.android.AndroidEntryPoint import kotlin.getValue @@ -41,7 +43,15 @@ class TasksFragment : AppViewsFragment(), OnTab } override fun ViewBinding.initViews() { - + with(binding) { + setOnClickBatch(ivGotoDailySign) { + when(this) { + ivGotoDailySign->{ + DailySignDialog(context).build().show() + } + } + } + } } override fun ViewBinding.initListeners() { diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt new file mode 100644 index 0000000..6a0f94d --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt @@ -0,0 +1,47 @@ +package com.gamedog.vididin.main.fragments.task + +import android.content.Context +import com.ama.core.architecture.util.setOnClickBatch +import com.ama.core.architecture.widget.BindingDialog +import com.gamedog.vididin.databinding.DialogDailySignBinding + + +class DailySignDialog(context: Context) : BindingDialog(context, DialogDailySignBinding::inflate) { + fun build(): DailySignDialog { + with() + setCenter() + setMaskValue(0.8f) + + binding.run { + setOnClickBatch(butLeft, butRight) { + when (this) { + butLeft -> { + dismiss() + } + butRight -> { + handleRightButClicked() + dismiss() + } + } + } + + initDailySignItems() + } + + show() + return this + } + + + + + private fun initDailySignItems() { + + } + + private fun handleRightButClicked() { + + } + +} + diff --git a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt new file mode 100644 index 0000000..74ee66d --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt @@ -0,0 +1,30 @@ +package com.gamedog.vididin.widget + + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.gamedog.vididin.databinding.DailySignItemBinding +import kotlin.run + +class DailySignItemView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + + private var mBinding: DailySignItemBinding? = null + + + init { + mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true) + mBinding?.run { + + } + } + +} + + + diff --git a/app/src/main/res/drawable/bg_sign_left_but.xml b/app/src/main/res/drawable/bg_sign_left_but.xml new file mode 100644 index 0000000..bcd7f2d --- /dev/null +++ b/app/src/main/res/drawable/bg_sign_left_but.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/layout/daily_sign_item.xml b/app/src/main/res/layout/daily_sign_item.xml new file mode 100644 index 0000000..c8bf3d7 --- /dev/null +++ b/app/src/main/res/layout/daily_sign_item.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_daily_sign.xml b/app/src/main/res/layout/dialog_daily_sign.xml new file mode 100644 index 0000000..480aecd --- /dev/null +++ b/app/src/main/res/layout/dialog_daily_sign.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/vididinapp_feature_message_fragment_message.xml b/app/src/main/res/layout/vididinapp_feature_message_fragment_message.xml index 822d8ac..2e7fa3b 100644 --- a/app/src/main/res/layout/vididinapp_feature_message_fragment_message.xml +++ b/app/src/main/res/layout/vididinapp_feature_message_fragment_message.xml @@ -381,6 +381,7 @@ /> #FF009B39 + #ff333333 + #ff666666 + #ff999999 + #fff6f6f6 + #ff282828 + #fff3f4ff + #ffbebebe + #FFFF740B + #FFFF862F + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3eb2b59..0681200 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,8 @@ Benefícios Convidar Game Center + Conclua o login de hoje e pode ganhar até 666 moedas! + Logins realizados: 0/7 + Resgatar + Assistir \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/ScreenUtils.java b/core/architecture/src/main/java/com/ama/core/architecture/util/ScreenUtils.java new file mode 100644 index 0000000..acd1791 --- /dev/null +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/ScreenUtils.java @@ -0,0 +1,73 @@ +package com.ama.core.architecture.util; + +import android.app.Activity; +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Point; +import android.view.Display; +import android.view.WindowManager; +import com.ama.core.architecture.BaseApp; + + +public class ScreenUtils { + /** + * 可用距离: 全屏高度- 状态栏- 导航栏 + * @return 可用高度 + */ + public static int getHeightRealPixels() { + return getScreenHeight(); + } + + private static Display getDisplay(Context context) { + WindowManager wm; + if (context instanceof Activity) { + Activity activity = (Activity) context; + wm = activity.getWindowManager(); + } else { + wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + } + if (wm != null) { + return wm.getDefaultDisplay(); + } + return null; + } + + /** + * Return the width of screen, in pixel. + * + * @return the width of screen, in pixel + */ + public static int getScreenWidth() { + WindowManager wm = (WindowManager) BaseApp.Companion.appContext().getSystemService(Context.WINDOW_SERVICE); + if (wm == null) return -1; + Point point = new Point(); + wm.getDefaultDisplay().getRealSize(point); + return point.x; + } + + /** + * 获得整个屏幕的高度,包括状态栏和导航栏 + * + * @return the height of screen, in pixel + */ + public static int getScreenHeight() { + WindowManager wm = (WindowManager) BaseApp.Companion.appContext().getSystemService(Context.WINDOW_SERVICE); + if (wm == null) return -1; + Point point = new Point(); + wm.getDefaultDisplay().getRealSize(point); + return point.y; + } + + /** + * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android + * + * @param context + * @return 平板返回 True,手机返回 False + */ + public static boolean isPad(Context context) { + return (context.getResources().getConfiguration().screenLayout + & Configuration.SCREENLAYOUT_SIZE_MASK) + >= Configuration.SCREENLAYOUT_SIZE_LARGE; + } + +} diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/StatusBarUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/StatusBarUtil.kt new file mode 100644 index 0000000..7d3bfff --- /dev/null +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/StatusBarUtil.kt @@ -0,0 +1,51 @@ +package com.ama.core.architecture.util + + +import android.annotation.SuppressLint +import android.app.Activity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.doOnAttach +import kotlin.math.abs + + +object StatusBarUtil { + + + private var statusBarHeight: Int = 0 + + /** + * 获得状态栏的高度 + * Insets 只有在 view attached 才是可用的 + */ + @SuppressLint("InternalInsetResource", "DiscouragedApi") + fun getStatusBarHeight(activity: Activity) { + activity.window.decorView.doOnAttach { + /** + * 正确获取status bar方法,通过windowInset获取 + * getInsetsIgnoringVisibility 是获取到真实高度,无论状态栏是否隐藏 + * getInsets 是根据隐藏状态获取 + */ + val ignoringVisibilityTop = + ViewCompat.getRootWindowInsets(activity.window.decorView)?.getInsetsIgnoringVisibility(WindowInsetsCompat.Type.statusBars())?.top ?: 0 + val ignoringVisibilityBottom = + ViewCompat.getRootWindowInsets(activity.window.decorView)?.getInsetsIgnoringVisibility(WindowInsetsCompat.Type.statusBars())?.bottom ?: 0 + statusBarHeight = abs(ignoringVisibilityTop - ignoringVisibilityBottom) + /** + * 兼容,系统resources可能修改 + */ + if (statusBarHeight == 0) { + statusBarHeight = try { + activity.resources + .getIdentifier("status_bar_height", "dimen", "android") + .takeIf { it > 0 } + ?.run { + activity.resources.getDimensionPixelSize(this) + } ?: 0 + } catch (_: Exception) { + 0 + } + } + } + } +} \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/UiUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/UiUtil.kt new file mode 100644 index 0000000..569dc25 --- /dev/null +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/UiUtil.kt @@ -0,0 +1,26 @@ +package com.ama.core.architecture.util + +import android.os.SystemClock +import android.view.View +import com.ama.core.architecture.R + +class UiUtil { + +} + +typealias viewClickHandler = View.() -> Unit + +inline fun setOnClickBatch(vararg v: View?, crossinline block: viewClickHandler) { + val interval = 500L + v.forEach { + it?.let { view -> + view.setOnClickListener { + val lastClickedTimestamp = view.getTag(R.id.view_last_click_timestamp)?.toString()?.toLongOrNull() ?: 0L + val currTimestamp = SystemClock.uptimeMillis() + if (currTimestamp - lastClickedTimestamp < interval) return@setOnClickListener + view.setTag(R.id.view_last_click_timestamp, currTimestamp) + view.block() + } + } + } +} \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt b/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt new file mode 100644 index 0000000..a0d70a0 --- /dev/null +++ b/core/architecture/src/main/java/com/ama/core/architecture/widget/BindingDialog.kt @@ -0,0 +1,436 @@ +package com.ama.core.architecture.widget + +import android.app.Dialog +import android.content.Context +import android.content.DialogInterface +import android.graphics.Bitmap +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.RoundRectShape +import android.os.Bundle +import android.util.SparseArray +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.WindowManager +import android.widget.ImageView +import android.widget.TextView +import androidx.activity.ComponentActivity +import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes +import androidx.annotation.IdRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.LifecycleOwner +import androidx.viewbinding.ViewBinding +import com.ama.core.architecture.R +import com.ama.core.architecture.util.ScreenUtils +import com.ama.core.common.util.dp + + +open class BindingDialog(private val context: Context, + private val inflate: (LayoutInflater) -> VB, + themeResId: Int = R.style.LDialog) : Dialog(context, themeResId), LifecycleEventObserver { + private val views = SparseArray() + private var width = 0 + private var height = 0 + private var bgRadius = 0 //背景圆角 + + private var leftTopRadius = 0 + private var rightTopRadius = 0 + private var leftBottomRadius = 0 + private var rightBottomRadius = 0 + private var bgColor = Color.TRANSPARENT //背景颜色 + + lateinit var binding: VB + var currEvent: Lifecycle.Event? = null + + companion object { + + fun getRoundRectDrawable(radius: Int, color: Int): ShapeDrawable { + return getRoundRectDrawable(radius, radius, radius, radius, color) + } + + fun getRoundRectDrawable(leftTop: Int, rightTop: Int, rightBottom: Int, leftBottom: Int, color: Int): ShapeDrawable { + //左上、右上、右下、左下的圆角半径 + val radius = floatArrayOf( + leftTop.toFloat(), + leftTop.toFloat(), + rightTop.toFloat(), + rightTop.toFloat(), + rightBottom.toFloat(), + rightBottom.toFloat(), + leftBottom.toFloat(), + leftBottom.toFloat() + ) + val drawable = ShapeDrawable().apply { + shape = RoundRectShape(radius, null, null) + paint.color = color + } + return drawable + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = inflate(layoutInflater) + setContentView(binding.root) + init() + } + + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + currEvent = event + if (Lifecycle.Event.ON_DESTROY == event && isShowing) { + dismiss() + } + } + + fun init() { + if (context is ComponentActivity) { + context.lifecycle.addObserver(this) + } + setCanceledOnTouchOutside(true) + window?.setBackgroundDrawableResource(R.color.transparent) + width = (ScreenUtils.getScreenWidth() * 0.8).toInt() + height = WindowManager.LayoutParams.WRAP_CONTENT + setWidthHeight() + window?.setWindowAnimations(R.style.dialog_alpha) + } + + fun with(): BindingDialog { + create() + setBg() + return this + } + + fun setAnimationsStyle(style: Int): BindingDialog { + window?.setWindowAnimations(style) + return this + } + + /** + * 设置位置 + */ + fun setGravity(gravity: Int, offX: Int, offY: Int): BindingDialog { + setGravity(gravity) + val layoutParams = window?.attributes + layoutParams?.x = offX + layoutParams?.y = offY + window?.attributes = layoutParams + return this + } + + fun setGravity(gravity: Int): BindingDialog { + window?.setGravity(gravity) + return this + } + + + fun setBottom(): BindingDialog { + setGravity(Gravity.BOTTOM) + setAnimationsStyle(R.style.dialog_translate) + setWidthRatio(1.0) + setDBgRadius(24, 24, 0, 0) + return this + } + + fun setCenter(cancelable: Boolean = true): BindingDialog { + setGravity(Gravity.CENTER) + setWidthRatio(0.8) + setBgRadius(16) + setAnimationsStyle(R.style.dialog_alpha) + setCanceledOnTouchOutside(cancelable) + setCancelable(cancelable) + return this + } + + override fun show() { + if (!isShowing) { + super.show() + } + } + + fun thisShow(): DialogInterface { + this.show() + return this + } + + /** + * 遮罩透明度 + * + * @param value 0-1f + */ + fun setMaskValue(value: Float): BindingDialog { + window?.setDimAmount(value) + return this + } + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>设置背景>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + open fun setBg(): BindingDialog { + if (leftTopRadius != 0 || rightTopRadius != 0 || rightBottomRadius != 0 || leftBottomRadius != 0) { + window?.setBackgroundDrawable(getRoundRectDrawable(leftTopRadius, rightTopRadius, rightBottomRadius, leftBottomRadius, bgColor)) + } else { + window?.setBackgroundDrawable(getRoundRectDrawable(bgRadius, bgColor)) + } + return this + } + + /** + * 设置背景颜色 + */ + fun setBgColor(@ColorInt color: Int): BindingDialog { + bgColor = color + return setBg() + } + + fun setBgColorRes(colorRes: Int): BindingDialog { + bgColor = ContextCompat.getColor(context, colorRes) + return setBg() + } + + /** + * 设置背景圆角 + */ + fun setBgRadius(bgRadius: Int): BindingDialog { + this.bgRadius = bgRadius.dp + return setBg() + } + + /** + * 设置背景不同圆角 + */ + fun setDBgRadius(leftTopRadius: Int, rightTopRadius: Int, rightBottomRadius: Int, leftBottomRadius: Int): BindingDialog { + this.leftTopRadius = leftTopRadius.dp + this.rightTopRadius = rightTopRadius.dp + this.rightBottomRadius = rightBottomRadius.dp + this.leftBottomRadius = leftBottomRadius.dp + return setBg() + } + + /** + * 设置背景圆角 + */ + fun setBgRadiusPX(bgRadius: Int): BindingDialog { + this.bgRadius = bgRadius + return setBg() + } + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>设置宽高>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + /** + * 设置宽高 + */ + open fun setWidthHeight(): BindingDialog { + val dialogWindow = window + val lp = dialogWindow?.attributes + lp?.width = width + lp?.height = height + dialogWindow?.attributes = lp + return this + } + + fun setWidth(width: Int): BindingDialog { + this.width = width.dp + return setWidthHeight() + } + + fun setWidthPX(width: Int): BindingDialog { + this.width = width + return setWidthHeight() + } + + fun setHeight(height: Int): BindingDialog { + this.height = height.dp + return setWidthHeight() + } + + fun setHeightPX(height: Int): BindingDialog { + this.height = height + return setWidthHeight() + } + + /** + * 设置宽占屏幕的比例 + */ + fun setWidthRatio(widthRatio: Double): BindingDialog { + width = (ScreenUtils.getScreenWidth() * widthRatio).toInt() + setWidthHeight() + return this + } + + /** + * 设置高占屏幕的比例 + */ + fun setHeightRatio(heightRatio: Double): BindingDialog { + height = (ScreenUtils.getHeightRealPixels() * heightRatio).toInt() + setWidthHeight() + return this + } + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>设置监听>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + /** + * 设置监听 + */ + open fun setOnClickListener(onClickListener: DialogOnClickListener, vararg viewIds: Int): BindingDialog { + val lDialog: BindingDialog = this + for (element in viewIds) { + getView(element).setOnClickListener { v -> onClickListener.onClick(v, lDialog) } + } + return this + } + + interface DialogOnClickListener { + fun onClick(v: View, lDialog: BindingDialog<*>) + } + + /** + * 设置 关闭dialog的按钮 + */ + fun setCancelBtn(viewId: Int): BindingDialog { + getView(viewId)?.setOnClickListener(View.OnClickListener { dismiss() }) + return this + } + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>设置常见属性>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + @Suppress("UNCHECKED_CAST") + fun getView(@IdRes viewId: Int): T { + var view = views[viewId] + if (view == null) { + view = binding.root.findViewById(viewId) + views[viewId] = view + } + return view as T + } + + /** + * Will set the text of a TextView. + * + * @param viewId The view id. + * @param value The text to put in the text view. + * @return The BaseViewHolder for chaining. + */ + fun setText(@IdRes viewId: Int, value: CharSequence): BindingDialog { + val view = getView(viewId) + view.text = value + return this + } + + fun setText(@IdRes viewId: Int, @StringRes strId: Int): BindingDialog { + val view = getView(viewId) + view.setText(strId) + return this + } + + /** + * Will set the image of an ImageView from a resource id. + * + * @param viewId The view id. + * @param imageResId The image resource id. + * @return The BaseViewHolder for chaining. + */ + fun setImageResource(@IdRes viewId: Int, @DrawableRes imageResId: Int): BindingDialog { + val view = getView(viewId) + view.setImageResource(imageResId) + return this + } + + /** + * Will set background color of a view. + * + * @param viewId The view id. + * @param color A color, not a resource id. + * @return The BaseViewHolder for chaining. + */ + fun setBackgroundColor(@IdRes viewId: Int, @ColorInt color: Int): BindingDialog { + val view = getView(viewId) + view.setBackgroundColor(color) + return this + } + + /** + * Will set background of a view. + * + * @param viewId The view id. + * @param backgroundRes A resource to use as a background. + * @return The BaseViewHolder for chaining. + */ + fun setBackgroundRes(@IdRes viewId: Int, @DrawableRes backgroundRes: Int): BindingDialog { + val view = getView(viewId) + view.setBackgroundResource(backgroundRes) + return this + } + + /** + * Will set text color of a TextView. + * + * @param viewId The view id. + * @param textColor The text color (not a resource id). + * @return The BaseViewHolder for chaining. + */ + fun setTextColor(@IdRes viewId: Int, @ColorInt textColor: Int): BindingDialog { + val view = getView(viewId) + view.setTextColor(textColor) + return this + } + + + /** + * Will set the image of an ImageView from a drawable. + * + * @param viewId The view id. + * @param drawable The image drawable. + * @return The BaseViewHolder for chaining. + */ + fun setImageDrawable(@IdRes viewId: Int, drawable: Drawable): BindingDialog { + val view = getView(viewId) + view.setImageDrawable(drawable) + return this + } + + /** + * Add an action to set the image of an image view. Can be called multiple times. + */ + fun setImageBitmap(@IdRes viewId: Int, bitmap: Bitmap): BindingDialog { + val view = getView(viewId) + view.setImageBitmap(bitmap) + return this + } + + /** + * Add an action to set the alpha of a view. Can be called multiple times. + * Alpha between 0-1. + */ + fun setAlpha(@IdRes viewId: Int, value: Float): BindingDialog { + getView(viewId).alpha = value + return this + } + + /** + * Set a view visibility to VISIBLE (true) or GONE (false). + * + * @param viewId The view id. + * @param visible True for VISIBLE, false for GONE. + * @return The BaseViewHolder for chaining. + */ + fun setGone(@IdRes viewId: Int, visible: Boolean): BindingDialog { + val view = getView(viewId) + view.visibility = if (visible) View.VISIBLE else View.GONE + return this + } + + /** + * Set a view visibility to VISIBLE (true) or INVISIBLE (false). + * + * @param viewId The view id. + * @param visible True for VISIBLE, false for INVISIBLE. + * @return The BaseViewHolder for chaining. + */ + fun setVisible(@IdRes viewId: Int, visible: Boolean): BindingDialog { + val view = getView(viewId) + view.visibility = if (visible) View.VISIBLE else View.INVISIBLE + return this + } + +} \ No newline at end of file diff --git a/core/architecture/src/main/res/anim/dialog_alpha_cancel.xml b/core/architecture/src/main/res/anim/dialog_alpha_cancel.xml new file mode 100644 index 0000000..a88b632 --- /dev/null +++ b/core/architecture/src/main/res/anim/dialog_alpha_cancel.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/res/anim/dialog_alpha_show.xml b/core/architecture/src/main/res/anim/dialog_alpha_show.xml new file mode 100644 index 0000000..c72625d --- /dev/null +++ b/core/architecture/src/main/res/anim/dialog_alpha_show.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/res/anim/dialog_translate_cancel.xml b/core/architecture/src/main/res/anim/dialog_translate_cancel.xml new file mode 100644 index 0000000..6db23e7 --- /dev/null +++ b/core/architecture/src/main/res/anim/dialog_translate_cancel.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/res/anim/dialog_translate_show.xml b/core/architecture/src/main/res/anim/dialog_translate_show.xml new file mode 100644 index 0000000..9d2b25b --- /dev/null +++ b/core/architecture/src/main/res/anim/dialog_translate_show.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/res/values/colors.xml b/core/architecture/src/main/res/values/colors.xml index bf23244..73fef5d 100644 --- a/core/architecture/src/main/res/values/colors.xml +++ b/core/architecture/src/main/res/values/colors.xml @@ -46,4 +46,7 @@ #FFE9E9 #FFE1E1 #FCDBDB + + + 00000000 \ No newline at end of file diff --git a/core/architecture/src/main/res/values/ids.xml b/core/architecture/src/main/res/values/ids.xml new file mode 100644 index 0000000..a5fa541 --- /dev/null +++ b/core/architecture/src/main/res/values/ids.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/res/values/styles.xml b/core/architecture/src/main/res/values/styles.xml index 63c208c..6cad3b9 100644 --- a/core/architecture/src/main/res/values/styles.xml +++ b/core/architecture/src/main/res/values/styles.xml @@ -25,4 +25,25 @@ normal ?attr/colorOnSurface + + + + + + + + + \ No newline at end of file