Commit 9ba560cb authored by wanglei's avatar wanglei

...

parent ae838a24
...@@ -25,6 +25,7 @@ class FunctionUIBean( ...@@ -25,6 +25,7 @@ class FunctionUIBean(
const val KEY_FOOD = "key_food" const val KEY_FOOD = "key_food"
const val KEY_WHATSAPP = "key_whatsapp" const val KEY_WHATSAPP = "key_whatsapp"
const val KEY_YOUTUBE = "key_youtube"
const val KEY_FACEBOOK = "key_facebook" const val KEY_FACEBOOK = "key_facebook"
const val KEY_INSTAGRAM = "key_instagram" const val KEY_INSTAGRAM = "key_instagram"
const val KEY_X = "key_x" const val KEY_X = "key_x"
......
package com.base.scanqrclear.bean
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_YOUTUBE
data class YoutubeUIBean(
val v: String? = null,//URL/VIDEO ID
val channel: String? = null
) : ScanBean(KEY_YOUTUBE) {
companion object {
fun isYoutubeUIBeanQR(qrCodeValue: String): Boolean {
return qrCodeValue.startsWith("https://www.youtube.com")
}
fun createYoutubeUIBean(qrCodeValue: String): YoutubeUIBean {
var v: String? = null
var channel: String? = null
if (qrCodeValue.contains("watch")) {
v = qrCodeValue.substring("https://www.youtube.com/watch?v=".length, qrCodeValue.length)
}
if (qrCodeValue.contains("channel")) {
channel = qrCodeValue.substring("https://www.youtube.com/channel/".length, qrCodeValue.length)
}
return YoutubeUIBean(v, channel)
}
// https://www.youtube.com/watch?v=www.yokutube.koko
// https://www.youtube.com/channel/56789
fun YoutubeUIBean.createYoutubeQrString(): String {
if (v != null) {
return "https://www.youtube.com/watch?v=$v"
}
if (channel != null) {
return "https://www.youtube.com/channel/$channel"
}
return ""
}
}
}
\ No newline at end of file
...@@ -26,6 +26,7 @@ import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WEBSITE ...@@ -26,6 +26,7 @@ import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WEBSITE
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WIFI import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WIFI
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_YOUTUBE
import com.base.scanqrclear.bean.config.AdConfigBean.Companion.adsConfigBean import com.base.scanqrclear.bean.config.AdConfigBean.Companion.adsConfigBean
import com.base.scanqrclear.databinding.FragmentCreateBinding import com.base.scanqrclear.databinding.FragmentCreateBinding
import com.base.scanqrclear.luma.WeatherInterface import com.base.scanqrclear.luma.WeatherInterface
...@@ -49,6 +50,7 @@ import com.base.scanqrclear.ui.widget.guideview.GuideBuilder ...@@ -49,6 +50,7 @@ import com.base.scanqrclear.ui.widget.guideview.GuideBuilder
import com.base.scanqrclear.ui.widget.guideview.LottieComponent import com.base.scanqrclear.ui.widget.guideview.LottieComponent
import com.base.scanqrclear.ui.wifi.WifiActivity import com.base.scanqrclear.ui.wifi.WifiActivity
import com.base.scanqrclear.ui.xqr.XDialog.showXDialog import com.base.scanqrclear.ui.xqr.XDialog.showXDialog
import com.base.scanqrclear.ui.youtubeqr.YoutubeDialog.showYoutubeDialog
import com.base.scanqrclear.utils.AppPreferences import com.base.scanqrclear.utils.AppPreferences
import com.base.scanqrclear.utils.BarUtils import com.base.scanqrclear.utils.BarUtils
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
...@@ -84,6 +86,7 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding ...@@ -84,6 +86,7 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
private val functions2 by lazy(LazyThreadSafetyMode.NONE) { private val functions2 by lazy(LazyThreadSafetyMode.NONE) {
listOf( listOf(
FunctionUIBean(KEY_YOUTUBE, R.mipmap.h_youtube, "Youtube"),
FunctionUIBean(KEY_WHATSAPP, R.mipmap.h_whatsapp, "Whatsapp"), FunctionUIBean(KEY_WHATSAPP, R.mipmap.h_whatsapp, "Whatsapp"),
FunctionUIBean(KEY_FACEBOOK, R.mipmap.h_facebook, "Facebook"), FunctionUIBean(KEY_FACEBOOK, R.mipmap.h_facebook, "Facebook"),
FunctionUIBean(KEY_INSTAGRAM, R.mipmap.h_instagram, "Instagram"), FunctionUIBean(KEY_INSTAGRAM, R.mipmap.h_instagram, "Instagram"),
...@@ -262,6 +265,11 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding ...@@ -262,6 +265,11 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
val activity = requireActivity() as MainActivity? val activity = requireActivity() as MainActivity?
activity?.showSpotifyDialog() activity?.showSpotifyDialog()
} }
KEY_YOUTUBE -> {
val activity = requireActivity() as MainActivity?
activity?.showYoutubeDialog()
}
} }
} }
......
package com.base.scanqrclear.ui.youtubeqr
import android.app.Activity
import android.app.AlertDialog
import android.content.Intent
import android.text.Editable
import android.view.Gravity
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.widget.addTextChangedListener
import com.base.scanqrclear.R
import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.YoutubeUIBean
import com.base.scanqrclear.bean.YoutubeUIBean.Companion.createYoutubeQrString
import com.base.scanqrclear.databinding.DialogYoutubeBinding
import com.base.scanqrclear.qr.QrStyleActivity
object YoutubeDialog {
fun Activity.showYoutubeDialog() {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogYoutubeBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(false)
dialog.show()
val params = dialog.window?.attributes
params?.width = ConstraintLayout.LayoutParams.MATCH_PARENT
// params?.height = resources.getDimensionPixelOffset(R.dimen.dp_400)
params?.gravity = Gravity.BOTTOM
// params?.y = 50
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
var isVOrChannel = true
binding.dslTabLayout.configTabLayoutConfig {
onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser ->
val selectIndex = selectIndexList[0]
if (selectIndex == 0) {
isVOrChannel = true
binding.editContent.hint = getString(R.string.please_enter_the_url)
}
if (selectIndex == 1) {
isVOrChannel = true
binding.editContent.hint = getString(R.string.please_enter_the_video_id)
}
if (selectIndex == 2) {
isVOrChannel = false
binding.editContent.hint = getString(R.string.please_enter_the_channel_id)
}
}
}
binding.flClose.setOnClickListener {
dialog.dismiss()
}
binding.editContent.addTextChangedListener { s: Editable? ->
binding.tvBtn.isEnabled = !s.isNullOrEmpty()
}
val jump = {
dialog.dismiss()
val content = binding.editContent.text.toString()
val bean = if (isVOrChannel) YoutubeUIBean(v = content) else YoutubeUIBean(channel = content)
startActivity(Intent(this, QrStyleActivity::class.java).apply {
putExtra("qrString", bean.createYoutubeQrString())
})
}
binding.tvBtn.setOnClickListener {
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
}
override fun failed(where: Int) {
jump.invoke()
}
override fun googleFailed(where: Int) {
jump.invoke()
}
})
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="@drawable/bg_f0f1f5_20">
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:src="@mipmap/h_youtube"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription,ImageContrastCheck" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Youtube"
android:textColor="@color/black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="@id/iv"
app:layout_constraintStart_toEndOf="@id/iv"
app:layout_constraintTop_toTopOf="@id/iv"
tools:ignore="HardcodedText" />
<FrameLayout
android:id="@+id/flClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="@id/iv"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/guanbi"
tools:ignore="ContentDescription,ImageContrastCheck" />
</FrameLayout>
<com.angcyo.tablayout.DslTabLayout
android:id="@+id/dslTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginTop="18dp"
android:layout_marginRight="10dp"
android:minHeight="50dp"
app:layout_constraintTop_toBottomOf="@id/iv"
app:tab_border_radius_size="90dp"
app:tab_border_solid_color="#E3E6FF"
app:tab_deselect_color="@color/black"
app:tab_draw_border="true"
app:tab_indicator_drawable="@drawable/bg_6473f8_90"
app:tab_indicator_enable_flow="false"
app:tab_indicator_style="STYLE_CENTER"
app:tab_item_is_equ_width="true"
tools:tab_default_index="0">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="URI"
android:textSize="18sp"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Video ID"
android:textSize="18sp"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Channel ID"
android:textSize="18sp"
tools:ignore="HardcodedText" />
</com.angcyo.tablayout.DslTabLayout>
<LinearLayout
android:id="@+id/llContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="12dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_ffffff_5"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/dslTabLayout">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp"
android:text="@string/content"
android:textColor="@color/black"
android:textSize="19sp" />
<EditText
android:id="@+id/editContent"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:background="@drawable/bg_stroke_eae9ef_5"
android:gravity="center_vertical"
android:hint="@string/please_enter_the_url"
android:importantForAutofill="no"
android:paddingHorizontal="16dp"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="#999999"
android:textSize="16sp"
tools:ignore="TextFields,TextContrastCheck,VisualLintTextFieldSize" />
</LinearLayout>
<TextView
android:id="@+id/tvBtn"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="22dp"
android:background="@drawable/bg_btn_enable"
android:enabled="false"
android:gravity="center"
android:text="@string/create"
android:textColor="@color/color_bdc1c9_ffffff"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintTop_toBottomOf="@id/llContent" />
<com.base.scanqrclear.ads.NativeParentView
android:id="@+id/flAd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:background="@drawable/bg_ecf6ff_20"
android:minHeight="120dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBtn">
<io.supercharge.shimmerlayout.ShimmerLayout
android:id="@+id/shimmerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="16dp"
app:shimmer_angle="25"
app:shimmer_animation_duration="2000"
app:shimmer_auto_start="true"
app:shimmer_color="#33ffffff"
app:shimmer_mask_width="0.2">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/czhanweitu"
tools:ignore="ContentDescription,ImageContrastCheck" />
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqrclear.ads.NativeParentView>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -278,5 +278,7 @@ ...@@ -278,5 +278,7 @@
<string name="save_as_image">Save as Image</string> <string name="save_as_image">Save as Image</string>
<string name="web_search">Web Search</string> <string name="web_search">Web Search</string>
<string name="see_more">See More</string> <string name="see_more">See More</string>
<string name="please_enter_the_video_id">Please enter the video ID</string>
<string name="please_enter_the_channel_id">Please enter the channel ID</string>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment