This commit is contained in:
ocean 2025-11-07 18:13:18 +08:00
parent d249f4703d
commit 6ab368132a
24 changed files with 1298 additions and 425 deletions

View File

@ -7,6 +7,7 @@
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
@ -112,7 +113,13 @@
android:screenOrientation="portrait" />
<activity
android:name=".ui.act.PdfTextSearchTestActivity"
android:name=".ui.act.FAQActivity"
android:exported="true"
android:label="@string/app_name"
android:screenOrientation="portrait" />
<activity
android:name=".ui.act.PrivacyPolicyActivity"
android:exported="true"
android:label="@string/app_name"
android:screenOrientation="portrait" />

View File

@ -44,6 +44,10 @@ class AppStore(context: Context) {
key = IS_COLOR_INVERSION, defaultValue = false
)
var keepScreenOn: Boolean by store.boolean(
key = KEEP_SCREEN_ON,defaultValue = false
)
companion object {
private const val FILE_NAME = "prp_sp_name"
private const val PERMISSIONS_DIALOG_PROMPT = "permissions_dialog_prompt"
@ -53,5 +57,6 @@ class AppStore(context: Context) {
private const val IS_VERTICAL = "is_vertical"
private const val IS_PAGE_FLING = "is_page_fling"
private const val IS_COLOR_INVERSION = "is_color_inversion"
private const val KEEP_SCREEN_ON = "keep_screen_on"
}
}

View File

@ -0,0 +1,75 @@
package com.all.pdfreader.pro.app.ui.act
import android.os.Bundle
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.core.text.HtmlCompat
import com.all.pdfreader.pro.app.R
import com.all.pdfreader.pro.app.databinding.ActivityFaqBinding
import com.gyf.immersionbar.ImmersionBar
class FAQActivity : BaseActivity() {
override val TAG: String = "FAQActivity"
private lateinit var binding: ActivityFaqBinding
private var faqAboutApp1IsOpen = true
private var faqAboutApp2IsOpen = false
private var faqAboutApp3IsOpen = false
private var faqFileView1IsOpen = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFaqBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this).statusBarView(binding.view).statusBarDarkFont(true)
.navigationBarColor(R.color.white).init()
initView()
}
private fun initView() {
updateViewIsOpen(faqAboutApp1IsOpen, binding.faqAboutApp1DesTv, binding.faqAboutApp1Iv)
binding.backBtn.setOnClickListener {
finish()
}
binding.faqAboutApp1DesTv.text = HtmlCompat.fromHtml(
getString(R.string.faq_about_app1_des), HtmlCompat.FROM_HTML_MODE_LEGACY
)
binding.faqAboutApp2DesTv.text = HtmlCompat.fromHtml(
getString(R.string.faq_about_app2_des), HtmlCompat.FROM_HTML_MODE_LEGACY
)
binding.faqAboutApp3DesTv.text = HtmlCompat.fromHtml(
getString(R.string.faq_about_app3_des), HtmlCompat.FROM_HTML_MODE_LEGACY
)
binding.faqFileViewing1DscTv.text = HtmlCompat.fromHtml(
getString(R.string.faq_file_viewing1_des), HtmlCompat.FROM_HTML_MODE_LEGACY
)
binding.aboutApp1Btn.setOnClickListener {
faqAboutApp1IsOpen = !faqAboutApp1IsOpen
updateViewIsOpen(faqAboutApp1IsOpen, binding.faqAboutApp1DesTv, binding.faqAboutApp1Iv)
}
binding.aboutApp2Btn.setOnClickListener {
faqAboutApp2IsOpen = !faqAboutApp2IsOpen
updateViewIsOpen(faqAboutApp2IsOpen, binding.faqAboutApp2DesTv, binding.faqAboutApp2Iv)
}
binding.aboutApp3Btn.setOnClickListener {
faqAboutApp3IsOpen = !faqAboutApp3IsOpen
updateViewIsOpen(faqAboutApp3IsOpen, binding.faqAboutApp3DesTv, binding.faqAboutApp3Iv)
}
binding.fileViewing1Btn.setOnClickListener {
faqFileView1IsOpen = !faqFileView1IsOpen
updateViewIsOpen(faqFileView1IsOpen,binding.faqFileViewing1DscTv,binding.faqFileViewing1Iv)
}
}
private fun updateViewIsOpen(b: Boolean, textView: TextView, imageView: ImageView) {
if (b) {
textView.visibility = View.VISIBLE
imageView.setImageResource(R.drawable.icon_arrow_up_gray)
} else {
textView.visibility = View.GONE
imageView.setImageResource(R.drawable.icon_arrow_down_gray)
}
}
}

View File

@ -1,8 +1,10 @@
package com.all.pdfreader.pro.app.ui.act
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
@ -21,6 +23,9 @@ import com.all.pdfreader.pro.app.ui.fragment.FavoriteFrag
import com.all.pdfreader.pro.app.ui.fragment.HomeFrag
import com.all.pdfreader.pro.app.ui.fragment.RecentlyFrag
import com.all.pdfreader.pro.app.ui.fragment.ToolsFrag
import com.all.pdfreader.pro.app.ui.view.CustomSwitchButton
import com.all.pdfreader.pro.app.ui.view.CustomSwitchButton.OnCheckedChangeListener
import com.all.pdfreader.pro.app.util.AppUtils
import com.all.pdfreader.pro.app.util.AppUtils.setClickWithAnimation
import com.all.pdfreader.pro.app.util.AppUtils.setOnSingleClickListener
import com.all.pdfreader.pro.app.util.PdfScanner
@ -171,6 +176,8 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback
//按钮点击事件
private fun setupNavigation() {
binding.switchScreenOn.setChecked(appStore.keepScreenOn)
binding.homeLlBtn.setOnSingleClickListener { switchFragment(homeFragment) }
binding.recentlyLlBtn.setOnSingleClickListener { switchFragment(recentlyFragment) }
binding.favoriteLlBtn.setOnSingleClickListener { switchFragment(favoriteFragment) }
@ -182,8 +189,10 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback
}
binding.sidebarBtn.setClickWithAnimation {
binding.drawerLayout.openDrawer(binding.drawerView)
}
//防止事件穿透
binding.drawerView.setOnClickListener { }
binding.searchBtn.setClickWithAnimation {
startActivity(SearchActivity.createIntent(this, PdfPickerSource.NONE))
@ -278,6 +287,35 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback
exitAllMultiSelect()
}
}
binding.faqBtn.setOnClickListener {
val intent = Intent(this, FAQActivity::class.java)
startActivity(intent)
binding.drawerLayout.closeDrawer(binding.drawerView)
}
binding.switchScreenOn.setOnCheckedChangeListener(object : OnCheckedChangeListener {
override fun onCheckedChanged(view: CustomSwitchButton?, isChecked: Boolean) {
view?.setChecked(isChecked)
appStore.keepScreenOn = isChecked
setKeepScreenOn(isChecked)
}
})
binding.shareAppBtn.setOnClickListener {
AppUtils.shareAppInfo(this)
binding.drawerLayout.closeDrawer(binding.drawerView)
}
binding.privacyPolicyBtn.setOnClickListener {
val intent = Intent(this,PrivacyPolicyActivity::class.java)
startActivity(intent)
binding.drawerLayout.closeDrawer(binding.drawerView)
}
}
private fun setKeepScreenOn(b: Boolean){
if (b) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
} else {
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
private fun switchFragment(target: Fragment) {
@ -288,9 +326,11 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback
}
private fun updateSelectedNav(fragment: Fragment) {
if (fragment is ToolsFrag) {//工具界面不展示权限
if (fragment is ToolsFrag) {//工具界面不展示权限与搜索和多选
binding.pnLayout.visibility = View.GONE
binding.topButtonLayout.visibility = View.GONE
} else {
binding.topButtonLayout.visibility = View.VISIBLE
if (!StoragePermissionHelper.hasBasicStoragePermission(this)) {
binding.pnLayout.visibility = View.VISIBLE
}
@ -349,6 +389,7 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback
binding.toolsTv.setTextColor(getColor(R.color.icon_on))
}
}
}

View File

@ -0,0 +1,129 @@
package com.all.pdfreader.pro.app.ui.act
import android.os.Bundle
import android.webkit.WebChromeClient
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import com.all.pdfreader.pro.app.R
import com.all.pdfreader.pro.app.databinding.ActPrivacyPolicyBinding
import com.gyf.immersionbar.ImmersionBar
class PrivacyPolicyActivity : BaseActivity() {
private lateinit var binding: ActPrivacyPolicyBinding
override val TAG = "PrivacyPolicyActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActPrivacyPolicyBinding.inflate(layoutInflater)
setContentView(binding.root)
ImmersionBar.with(this).statusBarView(binding.view).statusBarDarkFont(true)
.navigationBarColor(R.color.bg_color).init()
binding.backBtn.setOnClickListener {
finish()
}
setupWebView()
loadPrivacyPolicy()
}
private fun setupWebView() {
binding.webView.apply {
webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) {
super.onPageStarted(view, url, favicon)
// 页面开始加载,显示进度条
binding.progressBar.visibility = android.widget.ProgressBar.VISIBLE
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
// 页面加载完成,隐藏进度条
binding.progressBar.visibility = android.widget.ProgressBar.GONE
}
override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
// 显示错误页面或提示,隐藏进度条
binding.progressBar.visibility = android.widget.ProgressBar.GONE
loadErrorPage()
}
}
webChromeClient = WebChromeClient()
settings.javaScriptEnabled = false
settings.builtInZoomControls = true
settings.displayZoomControls = false
settings.loadWithOverviewMode = true
settings.useWideViewPort = true
}
}
private fun loadPrivacyPolicy() {
val privacyPolicyUrl = "https://www.explore-sun.com/privacy-policy/pdf-reader-pro.html"
binding.webView.loadUrl(privacyPolicyUrl)
}
private fun loadErrorPage() {
val errorHtml = """
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
font-family: Arial, sans-serif;
padding: 40px 20px;
line-height: 1.6;
color: #666;
text-align: center;
background-color: #f8f9fa;
}
.error-container {
max-width: 400px;
margin: 0 auto;
padding: 40px;
background-color: white;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
h1 { color: #e74c3c; margin-bottom: 16px; font-size: 24px; }
p { margin-bottom: 20px; }
.retry-btn {
background-color: #3498db;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
text-decoration: none;
display: inline-block;
}
</style>
</head>
<body>
<div class="error-container">
<h1>Network connection failed</h1>
<p>Unable to load privacy policy content. Please check your network connection.</p>
<a href="javascript:window.location.reload()" class="retry-btn">Reload</a>
</div>
</body>
</html>
""".trimIndent()
binding.webView.loadDataWithBaseURL(null, errorHtml, "text/html", "utf-8", null)
}
@Deprecated("Deprecated in Java")
override fun onBackPressed() {
if (binding.webView.canGoBack()) {
binding.webView.goBack()
} else {
super.onBackPressed()
}
}
}

View File

@ -314,5 +314,45 @@ object AppUtils {
}
}
fun shareAppInfo(context: Context) {
try {
val appPackageName = context.packageName
val packageManager = context.packageManager
val appInfo = packageManager.getApplicationInfo(appPackageName, 0)
// 获取应用名称,兼容 labelRes 为空的情况
val appName = if (appInfo.labelRes != 0) {
context.getString(appInfo.labelRes)
} else {
packageManager.getApplicationLabel(appInfo).toString()
}
// 应用链接(可自定义成其他市场链接)
val appPlayStoreLink = "https://play.google.com/store/apps/details?id=$appPackageName"
// 分享内容
val shareMessage = "Check out $appName on Google Play:\n$appPlayStoreLink"
// 构建 Intent
val shareIntent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_SUBJECT, appName)
putExtra(Intent.EXTRA_TEXT, shareMessage)
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
// 弹出系统分享面板
val chooser = Intent.createChooser(shareIntent, "Share $appName")
if (shareIntent.resolveActivity(packageManager) != null) {
context.startActivity(chooser)
} else {
Toast.makeText(context, "No app available to share.", Toast.LENGTH_SHORT).show()
}
} catch (e: Exception) {
e.printStackTrace()
Toast.makeText(context, "Unable to share app info.", Toast.LENGTH_SHORT).show()
}
}
}

View File

@ -1,13 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="8dp"
android:height="14dp"
android:viewportWidth="8"
android:viewportHeight="14">
android:width="256dp"
android:height="256dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M7,1L1,7L7,13"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
android:pathData="M927.9,478.1 L168.9,478.1l308.7,-308.9c11.7,-11.7 11.4,-30.9 -0.6,-42.9 -12,-12 -31.2,-12.2 -42.9,-0.5L75.2,484.9c-2,1.7 -3.8,3.6 -5.3,5.7 -4,5.4 -6,11.8 -5.9,18.3 -0.1,7.8 2.7,15.6 8.6,21.4l361.6,361.7c11.7,11.7 30.9,11.4 42.9,-0.5 12,-12 12.2,-31.2 0.6,-42.9L168.4,539.5l759.4,0c16.5,0 29.9,-13.7 29.9,-30.7S944.4,478.1 927.9,478.1z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_color"/>
<corners android:radius="8dp"/>
</shape>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M5.307,8.251C5.237,8.181 5.154,8.124 5.063,8.085C4.971,8.046 4.872,8.025 4.773,8.024C4.673,8.022 4.574,8.04 4.481,8.076C4.388,8.112 4.303,8.166 4.231,8.235C4.16,8.303 4.102,8.385 4.063,8.475C4.023,8.565 4.002,8.662 4,8.76C3.999,8.858 4.017,8.956 4.053,9.047C4.09,9.139 4.145,9.222 4.214,9.292L11.592,16.773C11.664,16.846 11.75,16.903 11.845,16.942C11.941,16.981 12.043,17.001 12.146,17C12.249,16.999 12.351,16.977 12.445,16.936C12.54,16.895 12.625,16.836 12.695,16.761L19.773,9.281C19.883,9.174 19.958,9.037 19.987,8.887C20.015,8.737 19.997,8.583 19.934,8.443C19.882,8.328 19.8,8.227 19.697,8.151C19.595,8.075 19.474,8.025 19.346,8.007C19.219,7.99 19.089,8.004 18.969,8.049C18.848,8.094 18.742,8.168 18.658,8.265L12.127,15.169L5.307,8.251V8.251Z"
android:fillColor="#A9A4A4"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M18.693,15.749C18.763,15.819 18.846,15.876 18.937,15.915C19.029,15.954 19.128,15.975 19.227,15.976C19.327,15.978 19.427,15.96 19.519,15.924C19.612,15.887 19.697,15.834 19.769,15.765C19.84,15.697 19.898,15.615 19.938,15.525C19.977,15.435 19.998,15.338 20,15.24C20.001,15.142 19.983,15.044 19.947,14.953C19.91,14.861 19.855,14.778 19.785,14.708L12.408,7.227C12.336,7.154 12.25,7.097 12.155,7.058C12.059,7.019 11.957,6.999 11.854,7C11.751,7.001 11.649,7.023 11.555,7.064C11.46,7.105 11.375,7.164 11.305,7.239L4.227,14.719C4.117,14.826 4.042,14.963 4.013,15.113C3.984,15.263 4.003,15.417 4.066,15.557C4.118,15.672 4.2,15.773 4.303,15.849C4.405,15.925 4.526,15.975 4.654,15.993C4.781,16.01 4.911,15.996 5.031,15.951C5.152,15.906 5.258,15.832 5.342,15.735L11.873,8.831L18.693,15.749L18.693,15.749Z"
android:fillColor="#A9A4A4"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,2C6.478,2 2,6.478 2,12C2,17.522 6.478,22 12,22C17.522,22 22,17.522 22,12C22,6.478 17.522,2 12,2ZM12,20.304C7.415,20.304 3.696,16.585 3.696,12C3.696,7.415 7.415,3.696 12,3.696C16.585,3.696 20.304,7.415 20.304,12C20.304,16.585 16.585,20.304 12,20.304ZM14.491,7.641C13.821,7.054 12.938,6.732 12,6.732C11.063,6.732 10.179,7.056 9.509,7.641C8.813,8.25 8.429,9.069 8.429,9.946V10.116C8.429,10.214 8.509,10.295 8.607,10.295H9.679C9.777,10.295 9.857,10.214 9.857,10.116V9.946C9.857,8.962 10.819,8.161 12,8.161C13.181,8.161 14.143,8.962 14.143,9.946C14.143,10.641 13.652,11.277 12.891,11.569C12.417,11.75 12.016,12.067 11.728,12.482C11.435,12.906 11.283,13.415 11.283,13.931V14.411C11.283,14.509 11.364,14.589 11.462,14.589H12.533C12.632,14.589 12.712,14.509 12.712,14.411V13.904C12.712,13.464 12.989,13.063 13.402,12.904C14.719,12.397 15.569,11.237 15.569,9.946C15.571,9.069 15.188,8.25 14.491,7.641ZM11.107,16.911C11.107,17.147 11.201,17.375 11.369,17.542C11.536,17.709 11.763,17.804 12,17.804C12.237,17.804 12.464,17.709 12.631,17.542C12.799,17.375 12.893,17.147 12.893,16.911C12.893,16.674 12.799,16.447 12.631,16.279C12.464,16.112 12.237,16.018 12,16.018C11.763,16.018 11.536,16.112 11.369,16.279C11.201,16.447 11.107,16.674 11.107,16.911Z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,7.133C11.427,7.135 10.872,7.326 10.428,7.674C9.984,8.022 9.678,8.506 9.561,9.045C9.444,9.583 9.523,10.144 9.784,10.634C10.046,11.124 10.475,11.512 10.999,11.735V14.821C10.999,14.947 11.025,15.072 11.075,15.189C11.125,15.306 11.199,15.412 11.292,15.501C11.385,15.59 11.495,15.661 11.617,15.71C11.738,15.758 11.868,15.783 12,15.783C12.132,15.783 12.262,15.758 12.383,15.71C12.505,15.661 12.615,15.59 12.708,15.501C12.801,15.412 12.875,15.306 12.925,15.189C12.975,15.072 13.001,14.947 13.001,14.821V11.735C13.527,11.514 13.957,11.125 14.22,10.635C14.483,10.145 14.563,9.583 14.445,9.043C14.328,8.504 14.021,8.019 13.575,7.671C13.13,7.324 12.574,7.134 12,7.133ZM19.779,4.465L12.98,1.219C12.676,1.075 12.341,1 12.002,1C11.662,1 11.328,1.075 11.023,1.219L4.221,4.465C3.854,4.639 3.545,4.909 3.329,5.243C3.113,5.578 2.999,5.964 3,6.357V12.291C3,15.02 4.382,17.612 6.795,19.396C8.538,20.684 11.491,21.875 11.616,21.927C11.862,22.024 12.138,22.024 12.384,21.927C12.509,21.876 15.462,20.686 17.205,19.396C19.618,17.614 21,15.023 21,12.291V6.359C21,5.55 20.531,4.824 19.779,4.465ZM19.001,12.291C19.001,14.42 17.901,16.455 15.987,17.874C14.794,18.757 12.827,19.64 11.998,19.992C11.174,19.639 9.211,18.759 8.016,17.874C6.101,16.455 5.001,14.42 5.001,12.291V6.359C5.001,6.286 5.045,6.218 5.111,6.187L11.911,2.945C11.939,2.931 11.969,2.924 12,2.924C12.031,2.924 12.061,2.931 12.089,2.945L18.888,6.188C18.921,6.204 18.949,6.229 18.968,6.259C18.988,6.29 18.998,6.325 18.997,6.36V12.293H19.001V12.291Z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M6,2H18C19.519,2 20.75,3.231 20.75,4.75V19.25C20.75,20.769 19.519,22 18,22H6C4.481,22 3.25,20.769 3.25,19.25V4.75C3.25,3.231 4.481,2 6,2ZM6,3.5C5.836,3.5 5.673,3.532 5.522,3.595C5.37,3.658 5.232,3.75 5.116,3.866C5,3.982 4.908,4.12 4.845,4.272C4.782,4.423 4.75,4.586 4.75,4.75V19.25C4.75,19.414 4.782,19.577 4.845,19.728C4.908,19.88 5,20.018 5.116,20.134C5.232,20.25 5.37,20.342 5.522,20.405C5.673,20.468 5.836,20.5 6,20.5H18C18.164,20.5 18.327,20.468 18.478,20.405C18.63,20.342 18.768,20.25 18.884,20.134C19,20.018 19.092,19.88 19.155,19.728C19.218,19.577 19.25,19.414 19.25,19.25V4.75C19.25,4.586 19.218,4.423 19.155,4.272C19.092,4.12 19,3.982 18.884,3.866C18.768,3.75 18.63,3.658 18.478,3.595C18.327,3.532 18.164,3.5 18,3.5H6ZM10,18C9.801,18 9.61,17.921 9.47,17.78C9.329,17.64 9.25,17.449 9.25,17.25C9.25,17.051 9.329,16.86 9.47,16.72C9.61,16.579 9.801,16.5 10,16.5H14C14.199,16.5 14.39,16.579 14.53,16.72C14.671,16.86 14.75,17.051 14.75,17.25C14.75,17.449 14.671,17.64 14.53,17.78C14.39,17.921 14.199,18 14,18H10Z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="0dp" />
<LinearLayout
android:id="@+id/statusLayout"
android:layout_width="match_parent"
android:layout_height="44dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/privacy_policy"
android:textColor="@color/black"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_color"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:visibility="visible" />
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="0dp" />
<LinearLayout
android:id="@+id/statusLayout"
android:layout_width="match_parent"
android:layout_height="44dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/faq"
android:textColor="@color/black"
android:textSize="18sp" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="@string/about_app"
android:textColor="@color/icon_on"
android:textSize="20sp" />
<LinearLayout
android:id="@+id/aboutApp1Btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/drw_faq_item_bg"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/faq_about_app1"
android:textColor="@color/text_color_lv1"
android:textSize="16sp" />
<ImageView
android:id="@+id/faq_about_app1_iv"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:src="@drawable/icon_arrow_down_gray" />
</LinearLayout>
<TextView
android:id="@+id/faq_about_app1_des_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/faq_about_app1_des"
android:textColor="@color/icon_off"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:id="@+id/aboutApp2Btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/drw_faq_item_bg"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/faq_about_app2"
android:textColor="@color/text_color_lv1"
android:textSize="16sp" />
<ImageView
android:id="@+id/faq_about_app2_iv"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:src="@drawable/icon_arrow_down_gray" />
</LinearLayout>
<TextView
android:id="@+id/faq_about_app2_des_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/faq_about_app2_des"
android:textColor="@color/icon_off"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:id="@+id/aboutApp3Btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/drw_faq_item_bg"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/faq_about_app3"
android:textColor="@color/text_color_lv1"
android:textSize="16sp" />
<ImageView
android:id="@+id/faq_about_app3_iv"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:src="@drawable/icon_arrow_down_gray" />
</LinearLayout>
<TextView
android:id="@+id/faq_about_app3_des_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/faq_about_app3_des"
android:textColor="@color/icon_off"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="24dp"
android:text="@string/file_viewing"
android:textColor="@color/icon_on"
android:textSize="20sp" />
<LinearLayout
android:id="@+id/fileViewing1Btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/drw_faq_item_bg"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/faq_about_app3"
android:textColor="@color/text_color_lv1"
android:textSize="16sp" />
<ImageView
android:id="@+id/faqFileViewing1Iv"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:src="@drawable/icon_arrow_down_gray" />
</LinearLayout>
<TextView
android:id="@+id/faqFileViewing1DscTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/faq_about_app3_des"
android:textColor="@color/icon_off"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,5 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E43521"
@ -444,11 +451,176 @@
android:textColor="@color/icon_sel_off_color"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<!-- android:layout_gravity="start" -->
<LinearLayout
android:id="@+id/drawerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#E43521"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:layout_marginBottom="16dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_marginStart="16dp"
android:src="@mipmap/app_logo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
style="@style/TextViewFont_PopSemiBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
style="@style/TextViewFont_PopMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/side_layout_app_des"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/dr_rc_top_20_bg_white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/faqBtn"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/dr_rounded_corner_12_bg_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/icon_faq" />
<TextView
style="@style/TextViewFont_PopMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/faq"
android:textColor="@color/text_color_lv1"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/screenOnBtn"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/dr_rounded_corner_12_bg_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/icon_screen_on" />
<TextView
style="@style/TextViewFont_PopMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:text="@string/keep_screen_on"
android:textColor="@color/text_color_lv1"
android:textSize="14sp" />
<com.all.pdfreader.pro.app.ui.view.CustomSwitchButton
android:id="@+id/switchScreenOn"
android:layout_width="wrap_content"
android:layout_height="32dp"
app:sb_background="@color/line_color"
app:sb_checked_color="@color/icon_on"
app:sb_show_indicator="false" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareAppBtn"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/dr_rounded_corner_12_bg_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/share" />
<TextView
style="@style/TextViewFont_PopMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/share_app"
android:textColor="@color/text_color_lv1"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/privacyPolicyBtn"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/dr_rounded_corner_12_bg_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/icon_privacy_policy" />
<TextView
style="@style/TextViewFont_PopMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="@string/privacy_policy"
android:textColor="@color/text_color_lv1"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>

View File

@ -20,18 +20,21 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"

View File

@ -20,18 +20,21 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"

View File

@ -21,18 +21,21 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"

View File

@ -21,18 +21,21 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<TextView
android:id="@+id/title"
style="@style/TextViewFont_PopMedium"

View File

@ -25,14 +25,16 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>

View File

@ -20,18 +20,21 @@
<LinearLayout
android:id="@+id/backBtn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/dr_click_effect_oval_transparent"
android:gravity="center">
<ImageView
android:layout_width="8dp"
android:layout_height="14dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/back_black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="32dp"
@ -59,8 +62,8 @@
<ImageView
android:id="@+id/searchIv"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerInParent="true"
android:src="@drawable/icon_search_black" />

View File

@ -139,7 +139,7 @@
<com.all.pdfreader.pro.app.ui.view.CustomSwitchButton
android:id="@+id/switchPageByPage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="32dp"
app:sb_background="@color/line_color"
app:sb_checked_color="@color/icon_on"
app:sb_show_indicator="false" />
@ -171,7 +171,7 @@
<com.all.pdfreader.pro.app.ui.view.CustomSwitchButton
android:id="@+id/switchColorInversion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="32dp"
app:sb_background="@color/line_color"
app:sb_checked_color="@color/icon_on"
app:sb_show_indicator="false" />

View File

@ -51,6 +51,7 @@
<string name="rename_file">Rename</string>
<string name="file_details">Details</string>
<string name="share_file">Share</string>
<string name="share_app">Share App</string>
<string name="print_pdf">Print</string>
<string name="added_to_favorites">Added to Favorite</string>
<string name="add_bookmark">Add Bookmark</string>
@ -170,4 +171,18 @@
<string name="sort_by_last_modified">Sort by Last modified</string>
<string name="sort_by_name">Sort by Name</string>
<string name="sort_by_size">Sort by Size</string>
<string name="side_layout_app_des">Organize all PDF files at one place.</string>
<string name="faq">FAQ</string>
<string name="keep_screen_on">Keep screen on</string>
<string name="privacy_policy">Privacy policy</string>
<string name="about_app">About App</string>
<string name="faq_about_app1">My files open slowly</string>
<string name="faq_about_app1_des"><![CDATA[This may be caused by <font color="#000000">the large file</font> size.To ensure the best reading experience, we need some time to load and parse.<br><br>We appreciate your understanding and will continue to improve.]]></string>
<string name="faq_about_app2">Why do we need permissions?</string>
<string name="faq_about_app2_des"><![CDATA[We require <font color="#000000">&quot;All Files Access&quot;</font> permission to read files on your device, so you can manage, browse them in our app.<br><br>Rest assured,the permission will only be used for file reading and will not be used for any other purposes.]]></string>
<string name="faq_about_app3">How to set PDF Reader as my default file reader?</string>
<string name="faq_about_app3_des"><![CDATA[First, tap any PDF file on your device or in other apps. Then, in the <font color="#000000">&quot;Open with&quot;</font> pop-up, choose our app icon, and tap <font color="#000000">&quot;Always&quot;</font> to set PDF Reader as your default file reader.]]></string>
<string name="file_viewing">File Viewing</string>
<string name="faq_file_viewing1">How to enable "Reflow" mode?</string>
<string name="faq_file_viewing1_des"><![CDATA[Open the file and tap <font color="#000000">&quot;View mode&quot;</font> in the bottom bar. From there, you can toggle <font color="#000000">&quot;Reflow&quot;</font> mode on or off.<br><br>Currently,this feature is only available on Android7 and above device.We will continue to optimize it and support more systems in the future.Please stay tuned.]]></string>
</resources>