parent
2a67c08670
commit
67501170cc
@ -0,0 +1,26 @@ |
|||||||
|
package io.legado.app.ui.association |
||||||
|
|
||||||
|
import android.os.Bundle |
||||||
|
import io.legado.app.base.BaseActivity |
||||||
|
import io.legado.app.databinding.ActivityTranslucenceBinding |
||||||
|
import io.legado.app.utils.showDialogFragment |
||||||
|
import io.legado.app.utils.viewbindingdelegate.viewBinding |
||||||
|
|
||||||
|
/** |
||||||
|
* 验证码 |
||||||
|
*/ |
||||||
|
class VerificationCodeActivity : |
||||||
|
BaseActivity<ActivityTranslucenceBinding>() { |
||||||
|
|
||||||
|
override val binding by viewBinding(ActivityTranslucenceBinding::inflate) |
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) { |
||||||
|
intent.getStringExtra("imageUrl")?.let { |
||||||
|
val sourceOrigin = intent.getStringExtra("sourceOrigin") |
||||||
|
showDialogFragment( |
||||||
|
VerificationCodeDialog(it, sourceOrigin) |
||||||
|
) |
||||||
|
} ?: finish() |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
package io.legado.app.ui.association |
||||||
|
|
||||||
|
import android.os.Bundle |
||||||
|
import android.view.View |
||||||
|
import android.view.ViewGroup |
||||||
|
import android.net.Uri |
||||||
|
import com.bumptech.glide.request.RequestOptions |
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.base.BaseDialogFragment |
||||||
|
import io.legado.app.databinding.DialogVerificationCodeViewBinding |
||||||
|
import io.legado.app.help.CacheManager |
||||||
|
import io.legado.app.help.glide.ImageLoader |
||||||
|
import io.legado.app.help.glide.OkHttpModelLoader |
||||||
|
import io.legado.app.lib.theme.primaryColor |
||||||
|
import io.legado.app.ui.widget.dialog.PhotoDialog |
||||||
|
import io.legado.app.utils.setLayout |
||||||
|
import io.legado.app.utils.showDialogFragment |
||||||
|
import io.legado.app.utils.viewbindingdelegate.viewBinding |
||||||
|
|
||||||
|
//图片验证码输入对话框 |
||||||
|
class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification_code_view) { |
||||||
|
|
||||||
|
constructor(imageUrl: String, sourceOrigin: String? = null) : this() { |
||||||
|
arguments = Bundle().apply { |
||||||
|
putString("sourceOrigin", sourceOrigin) |
||||||
|
putString("imageUrl", imageUrl) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
val binding by viewBinding(DialogVerificationCodeViewBinding::bind) |
||||||
|
|
||||||
|
override fun onStart() { |
||||||
|
super.onStart() |
||||||
|
setLayout(1f, ViewGroup.LayoutParams.WRAP_CONTENT) |
||||||
|
} |
||||||
|
|
||||||
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { |
||||||
|
binding.run { |
||||||
|
toolBar.setBackgroundColor(primaryColor) |
||||||
|
val sourceOrigin = arguments?.getString("sourceOrigin") |
||||||
|
val key = "${sourceOrigin ?: ""}_verificationCode" |
||||||
|
arguments?.getString("imageUrl")?.let { imageUrl -> |
||||||
|
ImageLoader.load(requireContext(), imageUrl).apply { |
||||||
|
sourceOrigin?.let { |
||||||
|
apply( |
||||||
|
RequestOptions().set( |
||||||
|
OkHttpModelLoader.sourceOriginOption, |
||||||
|
it |
||||||
|
) |
||||||
|
) |
||||||
|
} |
||||||
|
}.error(R.drawable.image_loading_error) |
||||||
|
.into(ivImage) |
||||||
|
ivImage.setOnClickListener { |
||||||
|
showDialogFragment(PhotoDialog(imageUrl, sourceOrigin)) |
||||||
|
} |
||||||
|
ivImage.setOnLongClickListener { |
||||||
|
showDialogFragment(PhotoDialog(imageUrl, sourceOrigin)) |
||||||
|
true |
||||||
|
} |
||||||
|
} |
||||||
|
tvOk.setOnClickListener { |
||||||
|
val verificationCode = binding.verificationCode.text.toString() |
||||||
|
verificationCode?.let { |
||||||
|
CacheManager.put(key, it) |
||||||
|
dismiss() |
||||||
|
} |
||||||
|
} |
||||||
|
tvCancel.setOnClickListener { |
||||||
|
dismiss() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun onDestroy() { |
||||||
|
val sourceOrigin = arguments?.getString("sourceOrigin") |
||||||
|
val key = "${sourceOrigin ?: ""}_verificationCode" |
||||||
|
CacheManager.get(key) ?: CacheManager.put(key, "") |
||||||
|
super.onDestroy() |
||||||
|
activity?.finish() |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="vertical"> |
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar |
||||||
|
android:id="@+id/tool_bar" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:theme="?attr/actionBarStyle" |
||||||
|
app:title="@string/input_verification_code" |
||||||
|
app:popupTheme="@style/AppTheme.PopupOverlay" |
||||||
|
app:titleTextAppearance="@style/ToolbarTitle" /> |
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView |
||||||
|
android:id="@+id/iv_image" |
||||||
|
android:scaleType="fitXY" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="50dp" |
||||||
|
android:paddingLeft="12dp" |
||||||
|
android:paddingRight="12dp" |
||||||
|
android:paddingTop="3dp" |
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless" |
||||||
|
tools:ignore="UnusedAttribute" /> |
||||||
|
|
||||||
|
<io.legado.app.ui.widget.text.TextInputLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:paddingLeft="12dp" |
||||||
|
android:paddingRight="12dp" |
||||||
|
android:paddingTop="3dp"> |
||||||
|
|
||||||
|
<io.legado.app.lib.theme.view.ThemeEditText |
||||||
|
android:id="@+id/verification_code" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:hint="@string/verification_code" |
||||||
|
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> |
||||||
|
|
||||||
|
</io.legado.app.ui.widget.text.TextInputLayout> |
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.flexbox.FlexboxLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:paddingLeft="12dp" |
||||||
|
android:paddingRight="12dp" |
||||||
|
app:justifyContent="flex_end"> |
||||||
|
|
||||||
|
<io.legado.app.ui.widget.text.AccentTextView |
||||||
|
android:id="@+id/tv_cancel" |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:padding="12dp" |
||||||
|
android:text="@string/cancel" |
||||||
|
tools:ignore="RtlHardcoded" /> |
||||||
|
|
||||||
|
<io.legado.app.ui.widget.text.AccentTextView |
||||||
|
android:id="@+id/tv_ok" |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:padding="12dp" |
||||||
|
android:text="@string/ok" |
||||||
|
tools:ignore="RtlHardcoded" /> |
||||||
|
|
||||||
|
</com.google.android.flexbox.FlexboxLayout> |
||||||
|
</LinearLayout> |
Loading…
Reference in new issue