Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
scanqrwhite2copy1
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
scanqrwhite2copy1
Commits
9ba560cb
Commit
9ba560cb
authored
Feb 20, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
ae838a24
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
334 additions
and
0 deletions
+334
-0
FunctionUIBean.kt
...src/main/java/com/base/scanqrclear/bean/FunctionUIBean.kt
+1
-0
YoutubeUIBean.kt
app/src/main/java/com/base/scanqrclear/bean/YoutubeUIBean.kt
+42
-0
CreateFragment.kt
.../main/java/com/base/scanqrclear/ui/main/CreateFragment.kt
+8
-0
YoutubeDialog.kt
...n/java/com/base/scanqrclear/ui/youtubeqr/YoutubeDialog.kt
+96
-0
dialog_youtube.xml
app/src/main/res/layout/dialog_youtube.xml
+185
-0
h_address.png
app/src/main/res/mipmap-xxhdpi/h_address.png
+0
-0
h_youtube.png
app/src/main/res/mipmap-xxhdpi/h_youtube.png
+0
-0
strings.xml
app/src/main/res/values/strings.xml
+2
-0
No files found.
app/src/main/java/com/base/scanqrclear/bean/FunctionUIBean.kt
View file @
9ba560cb
...
...
@@ -25,6 +25,7 @@ class FunctionUIBean(
const
val
KEY_FOOD
=
"key_food"
const
val
KEY_WHATSAPP
=
"key_whatsapp"
const
val
KEY_YOUTUBE
=
"key_youtube"
const
val
KEY_FACEBOOK
=
"key_facebook"
const
val
KEY_INSTAGRAM
=
"key_instagram"
const
val
KEY_X
=
"key_x"
...
...
app/src/main/java/com/base/scanqrclear/bean/YoutubeUIBean.kt
0 → 100644
View file @
9ba560cb
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
app/src/main/java/com/base/scanqrclear/ui/main/CreateFragment.kt
View file @
9ba560cb
...
...
@@ -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_WIFI
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.databinding.FragmentCreateBinding
import
com.base.scanqrclear.luma.WeatherInterface
...
...
@@ -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.wifi.WifiActivity
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.BarUtils
import
com.gyf.immersionbar.ktx.immersionBar
...
...
@@ -84,6 +86,7 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
private
val
functions2
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
listOf
(
FunctionUIBean
(
KEY_YOUTUBE
,
R
.
mipmap
.
h_youtube
,
"Youtube"
),
FunctionUIBean
(
KEY_WHATSAPP
,
R
.
mipmap
.
h_whatsapp
,
"Whatsapp"
),
FunctionUIBean
(
KEY_FACEBOOK
,
R
.
mipmap
.
h_facebook
,
"Facebook"
),
FunctionUIBean
(
KEY_INSTAGRAM
,
R
.
mipmap
.
h_instagram
,
"Instagram"
),
...
...
@@ -262,6 +265,11 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
showSpotifyDialog
()
}
KEY_YOUTUBE
->
{
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
showYoutubeDialog
()
}
}
}
...
...
app/src/main/java/com/base/scanqrclear/ui/youtubeqr/YoutubeDialog.kt
0 → 100644
View file @
9ba560cb
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
app/src/main/res/layout/dialog_youtube.xml
0 → 100644
View file @
9ba560cb
<?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
app/src/main/res/mipmap-xxhdpi/h_address.png
0 → 100644
View file @
9ba560cb
11.8 KB
app/src/main/res/mipmap-xxhdpi/h_youtube.png
0 → 100644
View file @
9ba560cb
2.05 KB
app/src/main/res/values/strings.xml
View file @
9ba560cb
...
...
@@ -278,5 +278,7 @@
<string
name=
"save_as_image"
>
Save as Image
</string>
<string
name=
"web_search"
>
Web Search
</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>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment