Commit 0dd1906a authored by wanglei's avatar wanglei

...启动页

parent 78a05aab
...@@ -38,6 +38,14 @@ object ConstObject { ...@@ -38,6 +38,14 @@ object ConstObject {
field = value field = value
AppPreferences.getInstance().put("ifAgreePrivacy", value, true) AppPreferences.getInstance().put("ifAgreePrivacy", value, true)
} }
var showPermissionPageGuide = false
get() {
return AppPreferences.getInstance().getBoolean("showPermissionPageGuide", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("showPermissionPageGuide", value, true)
}
var haveSaveDemo = false var haveSaveDemo = false
get() { get() {
return AppPreferences.getInstance().getBoolean("haveSaveDemo", field) return AppPreferences.getInstance().getBoolean("haveSaveDemo", field)
......
...@@ -2,6 +2,7 @@ package com.base.pdfoneread.ui.document ...@@ -2,6 +2,7 @@ package com.base.pdfoneread.ui.document
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import android.net.Uri
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -18,9 +19,11 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD ...@@ -18,9 +19,11 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfoneread.databinding.ActivityDocumentBinding import com.base.pdfoneread.databinding.ActivityDocumentBinding
import com.base.pdfoneread.ui.BaseActivity import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.ui.views.DialogCallBack import com.base.pdfoneread.ui.views.DialogCallBack
import com.base.pdfoneread.ui.views.DocumentDialog.showDeleteDialog
import com.base.pdfoneread.ui.views.DocumentDialog.showDocumentHomeMoreDialog import com.base.pdfoneread.ui.views.DocumentDialog.showDocumentHomeMoreDialog
import com.base.pdfoneread.ui.views.PdfDialog.showPdfHomeMoreDialog import com.base.pdfoneread.ui.views.PdfDialog.showPdfHomeMoreDialog
import com.base.pdfoneread.utils.BarUtils import com.base.pdfoneread.utils.BarUtils
import com.base.pdfoneread.utils.IntentShareUtils.shareMutDocuments
import com.base.pdfoneread.utils.LogEx import com.base.pdfoneread.utils.LogEx
import com.base.pdfoneread.utils.PdfBoxUtils.checkPdfEncryption import com.base.pdfoneread.utils.PdfBoxUtils.checkPdfEncryption
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -129,10 +132,10 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack ...@@ -129,10 +132,10 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
changeRvItemSelect(binding.ivAllSelector.isSelected) changeRvItemSelect(binding.ivAllSelector.isSelected)
} }
binding.llDelete.setOnClickListener { binding.llDelete.setOnClickListener {
deleteSelectDocument()
} }
binding.llShare.setOnClickListener { binding.llShare.setOnClickListener {
shareSelectDocument()
} }
binding.flPaixu.setOnClickListener { binding.flPaixu.setOnClickListener {
...@@ -154,6 +157,30 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack ...@@ -154,6 +157,30 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
} }
} }
private fun shareSelectDocument() {
val uris = adapter?.items?.filter { it.isSelect }?.map { it.uri ?: Uri.EMPTY }
uris ?: return
val arrayList = arrayListOf<Uri>()
arrayList.addAll(uris)
shareMutDocuments(type, arrayList)
}
private fun deleteSelectDocument() {
showDeleteDialog {
lifecycleScope.launch(Dispatchers.IO) {
try {
val items = adapter?.items?.filter { it.isSelect }
val unDeleteItems = adapter?.items?.filter { !it.isSelect }
items?.forEach { File(it.path).delete() }
launch(Dispatchers.Main) { adapter?.submitList(unDeleteItems) }
} catch (e: Exception) {
initData()
}
}
}
}
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private fun changeSelectUI(isSelect: Boolean) { private fun changeSelectUI(isSelect: Boolean) {
if (isSelect) { if (isSelect) {
...@@ -207,7 +234,6 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack ...@@ -207,7 +234,6 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
runOnUI(list) runOnUI(list)
} }
private fun initData() = lifecycleScope.launch(Dispatchers.IO) { private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val context = this@DocumentActivity val context = this@DocumentActivity
val list = when (type) { val list = when (type) {
...@@ -235,6 +261,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack ...@@ -235,6 +261,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
} }
//region DialogCallBack //region DialogCallBack
@SuppressLint("NotifyDataSetChanged")
override fun renameDocumentBean(file: File, newName: String) { override fun renameDocumentBean(file: File, newName: String) {
kotlin.runCatching { kotlin.runCatching {
val newFile = File(file.parentFile, newName) val newFile = File(file.parentFile, newName)
...@@ -258,6 +285,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack ...@@ -258,6 +285,7 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
} }
} }
@SuppressLint("NotifyDataSetChanged")
override fun changePdfLock(item: DocumentBean) { override fun changePdfLock(item: DocumentBean) {
val pdf = adapter?.items?.find { it.path == item.path } val pdf = adapter?.items?.find { it.path == item.path }
pdf?.state = checkPdfEncryption(item.path) pdf?.state = checkPdfEncryption(item.path)
......
...@@ -3,6 +3,7 @@ package com.base.pdfoneread.ui.main ...@@ -3,6 +3,7 @@ package com.base.pdfoneread.ui.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
...@@ -10,6 +11,7 @@ import androidx.lifecycle.lifecycleScope ...@@ -10,6 +11,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.base.pdfoneread.R import com.base.pdfoneread.R
import com.base.pdfoneread.bean.ConstObject.showPermissionPageGuide
import com.base.pdfoneread.databinding.ActivityMainBinding import com.base.pdfoneread.databinding.ActivityMainBinding
import com.base.pdfoneread.ui.BaseActivity import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.bean.HomeUIBean.Companion.UI_TYPE_GRID import com.base.pdfoneread.bean.HomeUIBean.Companion.UI_TYPE_GRID
...@@ -31,6 +33,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -31,6 +33,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
} }
var homeUiType = UI_TYPE_GRID var homeUiType = UI_TYPE_GRID
var navWhere: String = NAV_HOME
private lateinit var navController: NavController private lateinit var navController: NavController
...@@ -46,9 +49,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -46,9 +49,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeHomeRvIcon() changeHomeRvIcon()
if (!checkStorePermission()) { if (!checkStorePermission() && showPermissionPageGuide) {
showStoragePermission(launcher) {} showStoragePermission(launcher) {}
} }
} }
override fun onResume() { override fun onResume() {
...@@ -63,8 +67,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -63,8 +67,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.llHome.setOnClickListener { binding.llHome.setOnClickListener {
changeHomeUI() changeHomeUI()
} }
binding.llHome.callOnClick()
binding.llRecent.setOnClickListener { binding.llRecent.setOnClickListener {
changeRecentUI() changeRecentUI()
} }
...@@ -86,6 +88,25 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -86,6 +88,25 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.flSearch.setOnClickListener { binding.flSearch.setOnClickListener {
startActivity(Intent(this, SearchActivity::class.java)) startActivity(Intent(this, SearchActivity::class.java))
} }
handleNav()
intent.extras?.clear()
}
private fun handleNav() {
navWhere = intent.extras?.getString("navWhere") ?: NAV_HOME
when (navWhere) {
NAV_HOME -> changeHomeUI()
NAV_RECENT -> changeRecentUI()
NAV_SETTING -> changeSettingUI()
NAV_PERMISSION -> {
if (checkStorePermission()) {
changeHomeUI()
} else {
changePermissionUI()
}
}
}
} }
private fun changeHomeRvIcon() { private fun changeHomeRvIcon() {
...@@ -154,4 +175,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -154,4 +175,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
} }
private fun changePermissionUI() {
binding.flRvMode.visibility = View.INVISIBLE
binding.flSearch.visibility = View.INVISIBLE
binding.ivHome.isSelected = true
binding.tvHome.isSelected = true
val appName = resources.getString(R.string.app_name)
binding.tvTittle.text = colorSpanner(appName, Color.parseColor("#FD1010"), 0, 3)
if (getNavCurrentFragment() !is PermissionFragment) {
navController.popBackStack()
navController.navigate(R.id.permissionFragment)
showPermissionPageGuide = true
}
}
companion object {
const val NAV_HOME = "nav_home"
const val NAV_RECENT = "nav_recent"
const val NAV_SETTING = "nav_setting"
const val NAV_PERMISSION = "nav_permission"
}
} }
\ No newline at end of file
package com.base.pdfoneread.ui.main
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.base.pdfoneread.databinding.FragmentPermissionBinding
import com.base.pdfoneread.utils.PermissionUtils.requestStoragePermission
import com.base.pdfoneread.utils.SafUtils.jumpOpenDocumentThenPersistable
import com.base.pdfoneread.utils.ToastUtils.toast
class PermissionFragment : Fragment() {
private lateinit var binding: FragmentPermissionBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentPermissionBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.tvSet.setOnClickListener {
val activity = requireActivity() as MainActivity?
activity ?: return@setOnClickListener
requireContext().requestStoragePermission(activity.launcher) {}
}
binding.tvFileGo.setOnClickListener {
val activity = requireActivity() as MainActivity?
activity ?: return@setOnClickListener
requireContext().jumpOpenDocumentThenPersistable(activity.launcher) { uri ->
requireContext().toast("uri=$uri")
}
}
}
companion object {
}
}
\ No newline at end of file
...@@ -18,6 +18,7 @@ import com.base.pdfoneread.helper.UmpUtils.umpCalled ...@@ -18,6 +18,7 @@ import com.base.pdfoneread.helper.UmpUtils.umpCalled
import com.base.pdfoneread.helper.UmpUtils.umpCanAd import com.base.pdfoneread.helper.UmpUtils.umpCanAd
import com.base.pdfoneread.ui.BaseActivity import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.ui.main.MainActivity import com.base.pdfoneread.ui.main.MainActivity
import com.base.pdfoneread.ui.main.MainActivity.Companion.NAV_PERMISSION
import com.base.pdfoneread.utils.BarUtils import com.base.pdfoneread.utils.BarUtils
import com.base.pdfoneread.utils.LogEx import com.base.pdfoneread.utils.LogEx
import com.base.pdfoneread.utils.SpannableUtils import com.base.pdfoneread.utils.SpannableUtils
...@@ -126,7 +127,9 @@ class MyStartActivity : BaseActivity<ActivityMyStartBinding>() { ...@@ -126,7 +127,9 @@ class MyStartActivity : BaseActivity<ActivityMyStartBinding>() {
private fun firstStartJump() { private fun firstStartJump() {
isFirstStart = false isFirstStart = false
startActivity(Intent(this, MainActivity::class.java)) startActivity(Intent(this, MainActivity::class.java).apply {
putExtra("navWhere", NAV_PERMISSION)
})
} }
override fun onPause() { override fun onPause() {
......
...@@ -10,6 +10,7 @@ import kotlinx.coroutines.Job ...@@ -10,6 +10,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import com.base.pdfoneread.utils.LogEx import com.base.pdfoneread.utils.LogEx
import kotlinx.coroutines.Dispatchers
class SplashViewModel : ViewModel() { class SplashViewModel : ViewModel() {
...@@ -25,12 +26,12 @@ class SplashViewModel : ViewModel() { ...@@ -25,12 +26,12 @@ class SplashViewModel : ViewModel() {
if (ConstObject.ifAgreePrivacy && startJumpJob) { if (ConstObject.ifAgreePrivacy && startJumpJob) {
if (jumpJob == null) { if (jumpJob == null) {
val startTime = System.currentTimeMillis() val startTime = System.currentTimeMillis()
jumpJob = viewModelScope.launch { jumpJob = viewModelScope.launch(Dispatchers.IO) {
LogEx.logDebug(TAG, "open_ad_loading=$loadingTime") LogEx.logDebug(TAG, "open_ad_loading=$loadingTime")
delay(loadingTime * 1000L) delay(loadingTime * 1000L)
val endTime = System.currentTimeMillis() val endTime = System.currentTimeMillis()
LogEx.logDebug(TAG, "超时跳转 time=${endTime - startTime}") LogEx.logDebug(TAG, "超时跳转 time=${endTime - startTime}")
splashActivity.jumpNext() launch(Dispatchers.Main) { splashActivity.jumpNext() }
} }
} }
} }
......
package com.base.pdfoneread.ui.views package com.base.pdfoneread.ui.views
import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import com.base.pdfoneread.R import com.base.pdfoneread.R
import com.base.pdfoneread.databinding.DialogDocumentDetailBinding
import com.base.pdfoneread.databinding.DialogDocumentRenameBinding import com.base.pdfoneread.databinding.DialogDocumentRenameBinding
import com.base.pdfoneread.ui.views.DocumentDialog.showDocumentDetail
import com.base.pdfoneread.utils.KotlinExt.toFormatTime2 import com.base.pdfoneread.utils.KotlinExt.toFormatTime2
import com.base.pdfoneread.utils.ToastUtils.toast import com.base.pdfoneread.utils.ToastUtils.toast
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
...@@ -22,20 +26,18 @@ object NameDialog { ...@@ -22,20 +26,18 @@ object NameDialog {
okAction: ((newName: String) -> Unit)? = null, okAction: ((newName: String) -> Unit)? = null,
dismissAction: (() -> Unit)? = null dismissAction: (() -> Unit)? = null
) { ) {
val dialog = BottomSheetDialog(this, R.style.BottomSheetDialog) val dialog = AlertDialog.Builder(this).create()
val binding = DialogDocumentRenameBinding.inflate(LayoutInflater.from(this)) val binding = DialogDocumentRenameBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(true)
val window = dialog.window
window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
dialog.show() dialog.show()
val parentView = binding.root.parent as View val params = dialog.window?.attributes
val behavior = BottomSheetBehavior.from(parentView) params?.gravity = Gravity.CENTER
//展开 params?.width = resources.getDimensionPixelSize(R.dimen.dp_345)
behavior.state = BottomSheetBehavior.STATE_EXPANDED dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
binding.edit.addTextChangedListener { binding.edit.addTextChangedListener {
binding.tvOk.isEnabled = !it.isNullOrEmpty() binding.tvOk.isEnabled = !it.isNullOrEmpty()
......
package com.base.pdfoneread.utils
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.provider.DocumentsContract
object SafUtils {
fun Context.persistableUri(treeUri: Uri) {
contentResolver.takePersistableUriPermission(
treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
}
fun Context.jumpOpenDocumentThenPersistable(
launcher: ActivityLauncher,
callBack: (uri: Uri?) -> Unit
) {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
val downloadsUri = Uri.parse("content://com.android.providers.downloads.documents/tree/downloads")
// 可以设置一个初始URI,当文件选择器加载时会显示这个URI指向的文件夹
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, downloadsUri)
}
launcher.launch(intent) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val treeUri = result.data?.data
treeUri?.let { persistableUri(it) }
callBack.invoke(treeUri)
}
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF5910" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF5910" />
<corners android:radius="2.5dp" />
</shape>
\ No newline at end of file
...@@ -43,13 +43,26 @@ ...@@ -43,13 +43,26 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:text="@string/your_full_document_reader"
android:textColor="#8E95A0" android:textColor="#8E95A0"
android:textSize="15sp" android:textSize="15sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_app_name" app:layout_constraintTop_toBottomOf="@id/tv_app_name" />
android:text="Your full document reader" />
<com.base.pdfoneread.ui.views.XmlLottieAnimationView
android:id="@+id/lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/splash_loading" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -2,15 +2,16 @@ ...@@ -2,15 +2,16 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="360dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_f3f3f3_tlr25" android:background="@drawable/bg_ffffff_tlr15"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:id="@+id/fl" android:id="@+id/fl"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="65dp" android:layout_height="wrap_content"
android:layout_marginTop="40dp"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<TextView <TextView
...@@ -35,22 +36,37 @@ ...@@ -35,22 +36,37 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl"> app:layout_constraintTop_toBottomOf="@id/fl">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="32dp">
<EditText <EditText
android:id="@+id/edit" android:id="@+id/edit"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="55dp" android:layout_height="55dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="32dp"
android:background="@drawable/bg_stoke_bababa_10" android:background="@drawable/bg_stoke_bababa_10"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingHorizontal="20dp" android:paddingStart="20dp"
android:paddingEnd="40dp"
android:singleLine="true" android:singleLine="true"
android:text="DEMO.pdf" android:text="DEMO.pdf"
android:textColor="#333333" android:textColor="#333333"
android:textSize="18sp" android:textSize="18sp"
tools:ignore="Autofill,HardcodedText,LabelFor,TextFields" /> tools:ignore="Autofill,HardcodedText,LabelFor,TextFields" />
<ImageView
android:id="@+id/iv_x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
tools:ignore="ContentDescription" />
</FrameLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
android:orientation="vertical"
tools:context=".ui.main.PermissionFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="120dp"
android:src="@mipmap/no_empty"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:text="No permissions"
android:textColor="#010101"
android:textSize="20sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="2dp"
android:text="@string/authorization_required_to_read_all_files"
android:textColor="#9E9FA2"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_set"
android:layout_width="160dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="80dp"
android:layout_marginBottom="50dp"
android:background="@drawable/bg_ff5910_15"
android:gravity="center"
android:text="@string/go_to_set"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#F3F4F6">
<ImageView
android:id="@+id/iv_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:src="@mipmap/icon_file"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:text="@string/you_can_open_files_through_nfile_manager"
android:textColor="@color/black"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@id/iv_file"
app:layout_constraintEnd_toStartOf="@id/tv_file_go"
app:layout_constraintStart_toEndOf="@id/iv_file"
app:layout_constraintTop_toTopOf="@id/iv_file" />
<TextView
android:id="@+id/tv_file_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/bg_ff5910_2_5"
android:gravity="center"
android:paddingHorizontal="24dp"
android:paddingVertical="8dp"
android:text="@string/go"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/iv_file"
app:layout_constraintEnd_toStartOf="@id/fl_close"
app:layout_constraintTop_toTopOf="@id/iv_file" />
<FrameLayout
android:id="@+id/fl_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_no" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
...@@ -20,4 +20,9 @@ ...@@ -20,4 +20,9 @@
android:name="com.base.pdfoneread.ui.main.SettingFragment" android:name="com.base.pdfoneread.ui.main.SettingFragment"
android:label="fragment_setting" android:label="fragment_setting"
tools:layout="@layout/fragment_setting" /> tools:layout="@layout/fragment_setting" />
<fragment
android:id="@+id/permissionFragment"
android:name="com.base.pdfoneread.ui.main.PermissionFragment"
android:label="fragment_permission"
tools:layout="@layout/fragment_permission" />
</navigation> </navigation>
\ No newline at end of file
This diff is collapsed.
...@@ -62,5 +62,10 @@ ...@@ -62,5 +62,10 @@
<string name="password_error">Password Error</string> <string name="password_error">Password Error</string>
<string name="confirm">Confirm</string> <string name="confirm">Confirm</string>
<string name="merge">Merge</string> <string name="merge">Merge</string>
<string name="authorization_required_to_read_all_files">Authorization required to read all files.</string>
<string name="go_to_set">Go to set</string>
<string name="go">Go</string>
<string name="you_can_open_files_through_nfile_manager">You can open files through\n\"File Manager\".</string>
<string name="your_full_document_reader">Your full document reader</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