Commit f378f536 authored by wanglei's avatar wanglei

初始化

parent 0615497c
......@@ -18,13 +18,13 @@
android:value="document_ui" />
<application
android:logo="@mipmap/logo"
android:name=".helper.MyApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:logo="@mipmap/logo"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.PdfReaderAllPdfReader"
......@@ -81,6 +81,11 @@
android:exported="false"
android:launchMode="singleTop"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.feedback.FeedbackActivity"
android:exported="false"
android:launchMode="singleTop"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider
android:name="androidx.core.content.FileProvider"
......
......@@ -19,6 +19,8 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfreaderallpdfreader.bean.MediaBean
import com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset
import com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import com.base.pdfreaderallpdfreader.utils.SpStringUtils
import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import com.base.pdfreaderallpdfreader.utils.getMediaFile
import java.io.File
import java.io.FileOutputStream
......@@ -260,4 +262,12 @@ fun getDocumentType(mediaBean: MediaBean): String {
} else {
TYPE_PPT
}
}
fun saveBookmarkChange(addRemove: Boolean, path: String) {
if (addRemove) {
SpStringUtils.addSpString(BOOKMARK_KEY, path)
} else {
SpStringUtils.deleteSpString(BOOKMARK_KEY, path)
}
}
\ No newline at end of file
......@@ -30,4 +30,5 @@ class BookmarkViewModel : ViewModel() {
}
return all.filter { it.isBookmarked }
}
}
\ No newline at end of file
......@@ -2,18 +2,13 @@ package com.base.pdfreaderallpdfreader.ui.main.home
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.databinding.FragmentHomeBinding
import com.base.pdfreaderallpdfreader.ui.document.DocumentActivity
import com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize
......@@ -47,6 +42,7 @@ class HomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.clPdfReader.setOnClickListener {
startActivity(Intent(requireContext(), DocumentActivity::class.java))
}
......@@ -57,6 +53,8 @@ class HomeFragment : Fragment() {
binding.tvFileNumber.text = "$size Files"
}
}
} else {
binding.ivArrow.visibility = View.INVISIBLE
}
}
......
......@@ -28,6 +28,9 @@ import com.artifex.mupdfdemo.MuPDFView
import com.artifex.mupdfdemo.SearchTask
import com.artifex.mupdfdemo.SearchTaskResult
import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.ads.AdmobHelper
import com.base.pdfreaderallpdfreader.ads.AdmobHelper.isShowCloseDocument
import com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils
import com.base.pdfreaderallpdfreader.ads.admob.AdmobNativeUtils
import com.base.pdfreaderallpdfreader.base.BaseActivity
import com.base.pdfreaderallpdfreader.bean.ConstObject
......@@ -204,16 +207,16 @@ class PdfActivity : BaseActivity<ActivityPdfBinding>() {
return@addCallback
}
// if (com.base.pdfreaderallpdfreader.ads.AdmobHelper.isShowCloseDocumentInter() && isShowCloseDocument()) {
// com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils.showInterstitialAd(this@PdfActivity) {
// if (it) {
// com.base.pdfreaderallpdfreader.ads.AdmobHelper.lastCloseDocumentShowAd = System.currentTimeMillis()
// }
// binding.root.postDelayed({ finishToMain() }, 500)
// }
// } else {
// binding.root.postDelayed({ finishToMain() }, 500)
// }
if (AdmobHelper.isShowCloseDocumentInter() && isShowCloseDocument()) {
AdmobInterstitialUtils.showInterstitialAd(this@PdfActivity) {
if (it) {
AdmobHelper.lastCloseDocumentShowAd = System.currentTimeMillis()
}
binding.root.postDelayed({ finishToMain() }, 500)
}
} else {
binding.root.postDelayed({ finishToMain() }, 500)
}
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
......
......@@ -5,6 +5,9 @@ import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider
......@@ -60,6 +63,14 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
NotificationHoverUtils.stopNotificationHandler()
}
initWeatherUI()
val text = "All PDF Reader"
val spannableString = SpannableString(text)
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#E20001")),
4, text.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
binding.tvSpanner.text = spannableString
val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false
ifAgreePrivacy = true
......@@ -95,6 +106,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
}
}
@SuppressLint("SetTextI18n")
private fun initWeatherUI() {
// 获取当前日期
val calendar: Calendar = Calendar.getInstance()
......@@ -114,7 +126,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
Calendar.SATURDAY -> R.string.saturday
else -> 0
}
// binding.tvXingqi.text = resources.getString(dayOfWeekName)
binding.tvWeek.text = resources.getString(dayOfWeekName)
val monthName = when (month) {
0 -> "January"
......@@ -131,8 +143,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
11 -> "December"
else -> "Unknown"
}
// binding.tvMonthDay.text = "$monthName $dayOfMonth"
binding.tvMonthDay.text = "$monthName $dayOfMonth"
}
private fun showAd() {
......@@ -169,12 +180,12 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
private var jump: AtomicBoolean = AtomicBoolean(false)
fun jumpNext() {
if (jump.get()) {
return
}
jump.set(true)
binding.root.postDelayed({
if (isFirstStart) {
......
package com.base.pdfreaderallpdfreader.ui.view
import android.content.Context
import android.graphics.Color
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater
import android.view.View
import com.base.pdfreaderallpdfreader.R
......@@ -39,6 +43,20 @@ object MainDialog {
dialog.setOnDismissListener {
dismissAction?.invoke()
}
val text = "To read and edit documents on your device, please allow PDF Reader to access all your files"
val redText = "PDF Reader"
val spannableString = SpannableString(text)
val startIndex = text.indexOf(redText)
val endIndex = startIndex + redText.length
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#6DA9FD")),
startIndex,
endIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
binding.tvTip.text = spannableString
return dialog
}
......
......@@ -15,6 +15,7 @@ import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.bean.ConstObject
import com.base.pdfreaderallpdfreader.databinding.DialogPageNumberBinding
import com.base.pdfreaderallpdfreader.databinding.DialogPdfMoreBinding
import com.base.pdfreaderallpdfreader.ui.main.saveBookmarkChange
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpMerge
import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity.Companion.jumpSplit
......@@ -22,6 +23,8 @@ import com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentDetail
import com.base.pdfreaderallpdfreader.utils.IntentShareUtils
import com.base.pdfreaderallpdfreader.utils.LogEx
import com.base.pdfreaderallpdfreader.utils.NumberRangeFilter
import com.base.pdfreaderallpdfreader.utils.SpStringUtils
import com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import com.base.pdfreaderallpdfreader.utils.ToastUtils.toast
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
......@@ -134,7 +137,7 @@ object PdfDialog {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog)
val binding = DialogPdfMoreBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(false)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
......@@ -161,6 +164,22 @@ object PdfDialog {
binding.llDetail.setOnClickListener {
showDocumentDetail(pafPath)
}
val bookmarkList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
var isBookmarked = bookmarkList.contains(pafPath)
if (isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_s)
} else {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_n)
}
binding.ivBookmark.setOnClickListener {
isBookmarked = !isBookmarked
if (isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_s)
} else {
binding.ivBookmark.setImageResource(R.mipmap.pdf_bookmark_n)
}
saveBookmarkChange(isBookmarked, pafPath)
}
binding.llShare.setOnClickListener {
dialog.dismiss()
runCatching {
......
......@@ -12,44 +12,67 @@
android:id="@+id/iv_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="220dp"
android:src="@mipmap/logox"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="36dp"
android:layout_marginTop="24dp"
android:src="@mipmap/logo_corners"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_spanner"
android:id="@+id/tv_month_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginTop="26dp"
android:textColor="#343434"
android:textSize="28sp"
app:layout_constraintStart_toStartOf="@id/iv_logo"
app:layout_constraintTop_toBottomOf="@id/iv_logo"
tools:text="October 09" />
<TextView
android:id="@+id/tv_week"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="27dp"
android:textColor="#A4ABC1"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/iv_logo"
app:layout_constraintTop_toBottomOf="@id/tv_month_day"
tools:text="Wednesday" />
<ImageView
android:id="@+id/iv_weather"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="180dp"
android:layout_marginEnd="40dp"
android:alpha="0"
android:src="@mipmap/duoyun"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_logo"
tools:ignore="HardcodedText"
tools:text="AII PDF Reader" />
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_wendu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="@string/one_application_for_all_documents"
android:textColor="#8A8A8A"
android:textSize="12sp"
android:textStyle="bold"
android:layout_marginTop="40dp"
android:layout_marginEnd="40dp"
android:layout_marginBottom="35dp"
android:alpha="0"
android:textColor="#16151A"
android:textSize="45sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_spanner" />
app:layout_constraintTop_toBottomOf="@id/iv_weather"
tools:text="13℃/20℃" />
<com.base.pdfreaderallpdfreader.widget.XmlLottieAnimationView
android:id="@+id/lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="150dp"
android:layout_marginBottom="260dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
......@@ -57,5 +80,29 @@
app:lottie_loop="true"
app:lottie_rawRes="@raw/lottie_animation_splash" />
<TextView
android:id="@+id/tv_spanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lottie"
tools:ignore="HardcodedText"
tools:text="AII PDF Reader" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="@string/one_application_for_all_documents"
android:textColor="#8A8A8A"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_spanner" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -11,7 +11,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:src="@mipmap/pdf_permissions"
android:src="@mipmap/permissions_tu"
tools:ignore="ContentDescription" />
<TextView
......@@ -26,6 +26,7 @@
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
......
......@@ -380,5 +380,4 @@
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -12,7 +12,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="148dp"
android:src="@mipmap/pdf_permissions"
android:src="@mipmap/permissions_tu"
tools:ignore="ContentDescription" />
<TextView
......
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