Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Super PDF Reader
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
Super PDF Reader
Commits
5fc1cae3
Commit
5fc1cae3
authored
Jun 28, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...需同步到功能...
parent
7fe5f3f1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
571 additions
and
8 deletions
+571
-8
SplashActivity.kt
...n/java/com/base/superpdfreader/activity/SplashActivity.kt
+65
-3
ConstObject.kt
...src/main/java/com/base/superpdfreader/bean/ConstObject.kt
+6
-0
SPUtils.java
app/src/main/java/com/base/superpdfreader/utils/SPUtils.java
+439
-0
activity_splash.xml
app/src/main/res/layout/activity_splash.xml
+61
-5
No files found.
app/src/main/java/com/base/superpdfreader/activity/SplashActivity.kt
View file @
5fc1cae3
...
...
@@ -3,11 +3,18 @@ package com.base.superpdfreader.activity
import
android.annotation.SuppressLint
import
android.content.Intent
import
android.graphics.Color
import
android.net.Uri
import
android.text.SpannableString
import
android.text.Spanned
import
android.text.style.UnderlineSpan
import
android.view.View
import
androidx.lifecycle.lifecycleScope
import
com.base.superpdfreader.MainActivity
import
com.base.superpdfreader.bean.ConstObject.PrivacyPolicy
import
com.base.superpdfreader.databinding.ActivitySplashBinding
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.utils.BarUtils
import
com.base.superpdfreader.utils.SPUtils
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.channels.BufferOverflow
import
kotlinx.coroutines.delay
...
...
@@ -21,9 +28,18 @@ import kotlin.random.Random
@SuppressLint
(
"CustomSplashScreen"
)
class
SplashActivity
:
BaseActivity
<
ActivitySplashBinding
>()
{
private
lateinit
var
job
:
Job
private
var
job
:
Job
?
=
null
private
val
progress
=
MutableSharedFlow
<
Int
>()
private
val
progressFlow
:
SharedFlow
<
Int
>
=
progress
private
var
oneClickStart
:
Boolean
=
false
var
ifAgreePrivacy
=
false
get
()
{
return
SPUtils
.
getInstance
().
getBoolean
(
"ifAgreePrivacy"
,
field
)
}
set
(
value
)
{
field
=
value
SPUtils
.
getInstance
().
put
(
"ifAgreePrivacy"
,
value
,
true
)
}
override
val
binding
:
ActivitySplashBinding
by
lazy
{
ActivitySplashBinding
.
inflate
(
layoutInflater
)
...
...
@@ -33,6 +49,36 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
jumpNext
()
if
(
ifAgreePrivacy
)
{
startProgress
()
binding
.
llStart
.
visibility
=
View
.
GONE
binding
.
llProgress
.
visibility
=
View
.
VISIBLE
}
else
{
binding
.
llStart
.
visibility
=
View
.
VISIBLE
binding
.
llProgress
.
visibility
=
View
.
GONE
}
val
spannableString
=
SpannableString
(
"Privacy Policy"
)
spannableString
.
setSpan
(
UnderlineSpan
(),
0
,
spannableString
.
length
,
Spanned
.
SPAN_EXCLUSIVE_EXCLUSIVE
)
binding
.
idTvPrivacyPolicy
.
text
=
spannableString
binding
.
idTvPrivacyPolicy
.
setOnClickListener
{
val
intent
=
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
PrivacyPolicy
)
)
startActivity
(
intent
)
}
}
private
fun
jumpNext
()
{
lifecycleScope
.
launch
{
progressFlow
.
collectLatest
{
if
(
it
>=
100
)
{
...
...
@@ -43,6 +89,20 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
}
}
override
fun
initListener
()
{
binding
.
idTvStart
.
setOnClickListener
{
if
(
oneClickStart
)
{
return
@setOnClickListener
}
oneClickStart
=
true
ifAgreePrivacy
=
true
binding
.
llStart
.
visibility
=
View
.
GONE
binding
.
llProgress
.
visibility
=
View
.
VISIBLE
startProgress
()
}
}
fun
startProgress
()
=
lifecycleScope
.
launch
{
while
(
isActive
)
{
delay
(
Random
.
nextLong
(
50
,
150
))
...
...
@@ -54,12 +114,14 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
override
fun
onResume
()
{
super
.
onResume
()
job
=
startProgress
()
if
(
ifAgreePrivacy
)
{
job
=
startProgress
()
}
}
override
fun
onPause
()
{
super
.
onPause
()
job
.
cancel
()
job
?
.
cancel
()
}
}
\ No newline at end of file
app/src/main/java/com/base/superpdfreader/bean/ConstObject.kt
0 → 100644
View file @
5fc1cae3
package
com.base.superpdfreader.bean
object
ConstObject
{
const
val
PrivacyPolicy
=
"https://sites.google.com/view/pdfreaderimagetopdf/pdf-reader-image-to-pdf"
}
\ No newline at end of file
app/src/main/java/com/base/superpdfreader/utils/SPUtils.java
0 → 100644
View file @
5fc1cae3
package
com
.
base
.
superpdfreader
.
utils
;
import
android.annotation.SuppressLint
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
androidx.annotation.NonNull
;
import
com.base.superpdfreader.helps.BaseApplication
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
@SuppressLint
(
"ApplySharedPref"
)
public
final
class
SPUtils
{
private
static
final
Map
<
String
,
SPUtils
>
SP_UTILS_MAP
=
new
HashMap
<>();
private
SharedPreferences
sp
;
/**
* Return the single {@link SPUtils} instance
*
* @return the single {@link SPUtils} instance
*/
public
static
SPUtils
getInstance
()
{
return
getInstance
(
""
,
Context
.
MODE_PRIVATE
);
}
/**
* Return the single {@link SPUtils} instance
*
* @param mode Operating mode.
* @return the single {@link SPUtils} instance
*/
public
static
SPUtils
getInstance
(
final
int
mode
)
{
return
getInstance
(
""
,
mode
);
}
/**
* Return the single {@link SPUtils} instance
*
* @param spName The name of sp.
* @return the single {@link SPUtils} instance
*/
public
static
SPUtils
getInstance
(
String
spName
)
{
return
getInstance
(
spName
,
Context
.
MODE_PRIVATE
);
}
/**
* Return the single {@link SPUtils} instance
*
* @param spName The name of sp.
* @param mode Operating mode.
* @return the single {@link SPUtils} instance
*/
public
static
SPUtils
getInstance
(
String
spName
,
final
int
mode
)
{
if
(
isSpace
(
spName
))
spName
=
"spUtils"
;
SPUtils
spUtils
=
SP_UTILS_MAP
.
get
(
spName
);
if
(
spUtils
==
null
)
{
synchronized
(
SPUtils
.
class
)
{
spUtils
=
SP_UTILS_MAP
.
get
(
spName
);
if
(
spUtils
==
null
)
{
spUtils
=
new
SPUtils
(
spName
,
mode
);
SP_UTILS_MAP
.
put
(
spName
,
spUtils
);
}
}
}
return
spUtils
;
}
private
SPUtils
(
final
String
spName
)
{
sp
=
BaseApplication
.
context
.
getSharedPreferences
(
spName
,
Context
.
MODE_PRIVATE
);
}
private
SPUtils
(
final
String
spName
,
final
int
mode
)
{
sp
=
BaseApplication
.
context
.
getSharedPreferences
(
spName
,
mode
);
}
/**
* Put the string value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
String
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the string value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
String
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putString
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putString
(
key
,
value
).
apply
();
}
}
/**
* Return the string value in sp.
*
* @param key The key of sp.
* @return the string value if sp exists or {@code ""} otherwise
*/
public
String
getString
(
@NonNull
final
String
key
)
{
return
getString
(
key
,
""
);
}
/**
* Return the string value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the string value if sp exists or {@code defaultValue} otherwise
*/
public
String
getString
(
@NonNull
final
String
key
,
final
String
defaultValue
)
{
return
sp
.
getString
(
key
,
defaultValue
);
}
/**
* Put the int value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
int
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the int value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
int
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putInt
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putInt
(
key
,
value
).
apply
();
}
}
/**
* Return the int value in sp.
*
* @param key The key of sp.
* @return the int value if sp exists or {@code -1} otherwise
*/
public
int
getInt
(
@NonNull
final
String
key
)
{
return
getInt
(
key
,
-
1
);
}
/**
* Return the int value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the int value if sp exists or {@code defaultValue} otherwise
*/
public
int
getInt
(
@NonNull
final
String
key
,
final
int
defaultValue
)
{
return
sp
.
getInt
(
key
,
defaultValue
);
}
/**
* Put the long value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
long
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the long value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
long
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putLong
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putLong
(
key
,
value
).
apply
();
}
}
/**
* Return the long value in sp.
*
* @param key The key of sp.
* @return the long value if sp exists or {@code -1} otherwise
*/
public
long
getLong
(
@NonNull
final
String
key
)
{
return
getLong
(
key
,
-
1L
);
}
/**
* Return the long value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the long value if sp exists or {@code defaultValue} otherwise
*/
public
long
getLong
(
@NonNull
final
String
key
,
final
long
defaultValue
)
{
return
sp
.
getLong
(
key
,
defaultValue
);
}
/**
* Put the float value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
float
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the float value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
float
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putFloat
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putFloat
(
key
,
value
).
apply
();
}
}
/**
* Return the float value in sp.
*
* @param key The key of sp.
* @return the float value if sp exists or {@code -1f} otherwise
*/
public
float
getFloat
(
@NonNull
final
String
key
)
{
return
getFloat
(
key
,
-
1
f
);
}
/**
* Return the float value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the float value if sp exists or {@code defaultValue} otherwise
*/
public
float
getFloat
(
@NonNull
final
String
key
,
final
float
defaultValue
)
{
return
sp
.
getFloat
(
key
,
defaultValue
);
}
/**
* Put the boolean value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
boolean
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the boolean value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
boolean
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putBoolean
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putBoolean
(
key
,
value
).
apply
();
}
}
/**
* Return the boolean value in sp.
*
* @param key The key of sp.
* @return the boolean value if sp exists or {@code false} otherwise
*/
public
boolean
getBoolean
(
@NonNull
final
String
key
)
{
return
getBoolean
(
key
,
false
);
}
/**
* Return the boolean value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the boolean value if sp exists or {@code defaultValue} otherwise
*/
public
boolean
getBoolean
(
@NonNull
final
String
key
,
final
boolean
defaultValue
)
{
return
sp
.
getBoolean
(
key
,
defaultValue
);
}
/**
* Put the set of string value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
*/
public
void
put
(
@NonNull
final
String
key
,
final
Set
<
String
>
value
)
{
put
(
key
,
value
,
false
);
}
/**
* Put the set of string value in sp.
*
* @param key The key of sp.
* @param value The value of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
put
(
@NonNull
final
String
key
,
final
Set
<
String
>
value
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
putStringSet
(
key
,
value
).
commit
();
}
else
{
sp
.
edit
().
putStringSet
(
key
,
value
).
apply
();
}
}
/**
* Return the set of string value in sp.
*
* @param key The key of sp.
* @return the set of string value if sp exists
* or {@code Collections.<String>emptySet()} otherwise
*/
public
Set
<
String
>
getStringSet
(
@NonNull
final
String
key
)
{
return
getStringSet
(
key
,
Collections
.<
String
>
emptySet
());
}
/**
* Return the set of string value in sp.
*
* @param key The key of sp.
* @param defaultValue The default value if the sp doesn't exist.
* @return the set of string value if sp exists or {@code defaultValue} otherwise
*/
public
Set
<
String
>
getStringSet
(
@NonNull
final
String
key
,
final
Set
<
String
>
defaultValue
)
{
return
sp
.
getStringSet
(
key
,
defaultValue
);
}
/**
* Return all values in sp.
*
* @return all values in sp
*/
public
Map
<
String
,
?>
getAll
()
{
return
sp
.
getAll
();
}
/**
* Return whether the sp contains the preference.
*
* @param key The key of sp.
* @return {@code true}: yes<br>{@code false}: no
*/
public
boolean
contains
(
@NonNull
final
String
key
)
{
return
sp
.
contains
(
key
);
}
/**
* Remove the preference in sp.
*
* @param key The key of sp.
*/
public
void
remove
(
@NonNull
final
String
key
)
{
remove
(
key
,
false
);
}
/**
* Remove the preference in sp.
*
* @param key The key of sp.
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
remove
(
@NonNull
final
String
key
,
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
remove
(
key
).
commit
();
}
else
{
sp
.
edit
().
remove
(
key
).
apply
();
}
}
/**
* Remove all preferences in sp.
*/
public
void
clear
()
{
clear
(
false
);
}
/**
* Remove all preferences in sp.
*
* @param isCommit True to use {@link SharedPreferences.Editor#commit()},
* false to use {@link SharedPreferences.Editor#apply()}
*/
public
void
clear
(
final
boolean
isCommit
)
{
if
(
isCommit
)
{
sp
.
edit
().
clear
().
commit
();
}
else
{
sp
.
edit
().
clear
().
apply
();
}
}
private
static
boolean
isSpace
(
final
String
s
)
{
if
(
s
==
null
)
return
true
;
for
(
int
i
=
0
,
len
=
s
.
length
();
i
<
len
;
++
i
)
{
if
(!
Character
.
isWhitespace
(
s
.
charAt
(
i
)))
{
return
false
;
}
}
return
true
;
}
}
app/src/main/res/layout/activity_splash.xml
View file @
5fc1cae3
...
...
@@ -17,21 +17,22 @@
android:layout_height=
"0dp"
android:layout_weight=
"2"
/>
<
androidx.appcompat.widget.LinearLayoutCompa
t
android:id=
"@+id/
id_ll_jindu
"
<
LinearLayou
t
android:id=
"@+id/
ll_progress
"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"49dp"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
android:visibility=
"gone"
>
<ProgressBar
android:layout_marginTop=
"5dp"
android:id=
"@+id/pb"
style=
"@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width=
"match_parent"
android:layout_height=
"15dp"
android:layout_marginHorizontal=
"32dp"
android:layout_marginTop=
"5dp"
android:max=
"100"
android:progressDrawable=
"@drawable/shape_splash_s"
tools:progress=
"50"
/>
...
...
@@ -56,7 +57,62 @@
android:textSize=
"15sp"
tools:ignore=
"HardcodedText"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_start"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"20dp"
android:gravity=
"center"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"4dp"
android:text=
"By continuing you are agreeing to the"
android:textColor=
"#676767"
android:textSize=
"14sp"
tools:ignore=
"HardcodedText"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
" & "
android:visibility=
"gone"
tools:ignore=
"HardcodedText"
/>
<TextView
android:id=
"@+id/id_tv_privacy_policy"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"Privacy Policy"
android:textColor=
"#676767"
android:textSize=
"14sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
<TextView
android:id=
"@+id/id_tv_start"
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
android:layout_marginHorizontal=
"40dp"
android:layout_marginBottom=
"49dp"
android:background=
"@color/color_pdf"
android:gravity=
"center"
android:text=
"START TO USE"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
android:visibility=
"visible"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
\ 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