Commit 5be40c4b authored by wanglei's avatar wanglei

...提交部分功能...

parent 4ad226de
...@@ -39,37 +39,41 @@ android { ...@@ -39,37 +39,41 @@ android {
dependencies { dependencies {
implementation libs.androidx.core.ktx implementation(libs.androidx.core.ktx)
implementation libs.androidx.appcompat implementation(libs.androidx.appcompat)
implementation libs.material implementation(libs.material)
implementation libs.androidx.activity implementation(libs.androidx.activity)
implementation libs.androidx.constraintlayout implementation(libs.androidx.constraintlayout)
testImplementation libs.junit testImplementation(libs.junit)
androidTestImplementation libs.androidx.junit androidTestImplementation(libs.androidx.junit)
androidTestImplementation libs.androidx.espresso.core androidTestImplementation(libs.androidx.espresso.core)
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation 'com.google.android.material:material:1.4.0' implementation("com.google.android.material:material:1.4.0")
//网络
implementation("com.google.code.gson:gson:2.10.1")
//ui第三方 //ui第三方
implementation("com.github.JavaNoober.BackgroundLibrary:libraryx:1.7.6") implementation("com.github.JavaNoober.BackgroundLibrary:libraryx:1.7.6")
implementation 'com.github.bumptech.glide:glide:4.16.0' implementation("com.github.bumptech.glide:glide:4.16.0")
// implementation 'com.airbnb.android:lottie:6.4.0' implementation("com.airbnb.android:lottie:6.4.0")
implementation 'com.airbnb.android:lottie:6.4.0'
//XLS表格 //XLS表格
implementation 'com.github.huangyanbin:SmartTable:2.2.0' implementation("com.github.huangyanbin:SmartTable:2.2.0")
//pdf浏览 //pdf浏览
//https://github.com/DImuthuUpe/AndroidPdfViewer //https://github.com/DImuthuUpe/AndroidPdfViewer
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' implementation("com.github.barteksc:android-pdf-viewer:2.8.2")
//pdf文件操作 //pdf文件操作
implementation 'com.github.barteksc:pdfium-android:1.7.1' implementation("com.github.barteksc:pdfium-android:1.7.1")
//apache / poi 内容提取 //apache / poi 内容提取
//有个问题是gradle版本需要升级到8.4 //有个问题是gradle版本需要升级到8.4
//https://github.com/apache/poi //https://github.com/apache/poi
implementation 'org.apache.poi:poi-ooxml:5.2.5' implementation("org.apache.poi:poi-ooxml:5.2.5")
implementation 'org.apache.poi:poi-scratchpad:5.2.5' implementation("org.apache.poi:poi-scratchpad:5.2.5")
implementation 'com.fasterxml:aalto-xml:1.3.0'//XML格式数据的解析和生成,通过Jackson XML模块。 implementation("com.fasterxml:aalto-xml:1.3.0")//XML格式数据的解析和生成,通过Jackson XML模块。
implementation 'stax:stax-api:1.0.1'//处理XML文档的Java API implementation("stax:stax-api:1.0.1")//处理XML文档的Java API
} }
\ No newline at end of file
...@@ -20,4 +20,12 @@ ...@@ -20,4 +20,12 @@
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
-keep class com.shockwave.** -keep class com.shockwave.**
\ No newline at end of file
-dontoptimize
-keepattributes Signature
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.** { *; }
-keep class com.alibaba.idst.** { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keepattributes AnnotationDefault, RuntimeVisibleAnnotations
\ No newline at end of file
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.SuperPDFReader" android:theme="@style/Theme.SuperPDFReader"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activity.PdfConvertedActivity"
android:exported="false" />
<activity <activity
android:name=".activity.ImageToPdfActivity" android:name=".activity.ImageToPdfActivity"
android:exported="false" /> android:exported="false" />
......
...@@ -3,6 +3,7 @@ package com.base.superpdfreader ...@@ -3,6 +3,7 @@ package com.base.superpdfreader
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.view.View
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
...@@ -36,15 +37,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -36,15 +37,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private val pdfFragment by lazy { private val pdfFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_PDF } DocumentListFragment().apply { UI_MODE = MODE_PDF }
} }
private val wordFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_WORD } // private val wordFragment by lazy {
} // DocumentListFragment().apply { UI_MODE = MODE_WORD }
private val pptFragment by lazy { // }
DocumentListFragment().apply { UI_MODE = MODE_PPT } // private val pptFragment by lazy {
} // DocumentListFragment().apply { UI_MODE = MODE_PPT }
private val excelFragment by lazy { // }
DocumentListFragment().apply { UI_MODE = MODE_EXCEL } // private val excelFragment by lazy {
} // DocumentListFragment().apply { UI_MODE = MODE_EXCEL }
// }
private lateinit var pagerAdapter: DocumentPagerAdapter private lateinit var pagerAdapter: DocumentPagerAdapter
override fun initView() { override fun initView() {
...@@ -55,16 +57,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -55,16 +57,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
intTab() intTab()
if (checkStorePermission()) { if (checkStorePermission()) {
updateMediaStore()
} else { showFloatAction()
dialog = showGerPermission(null, deny = {}, allow = {
requestStorePermission(launcher = launcher, result = { flag ->
if (flag) {
}
})
})
} }
updateMediaStore() }
fun showFloatAction() {
binding.fab.visibility = View.VISIBLE
} }
override fun initListener() { override fun initListener() {
...@@ -75,9 +74,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -75,9 +74,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private fun initPage() { private fun initPage() {
pages.add(pdfFragment) pages.add(pdfFragment)
pages.add(wordFragment) // pages.add(wordFragment)
pages.add(pptFragment) // pages.add(pptFragment)
pages.add(excelFragment) // pages.add(excelFragment)
pagerAdapter = DocumentPagerAdapter(this) pagerAdapter = DocumentPagerAdapter(this)
binding.viewpager2.adapter = pagerAdapter binding.viewpager2.adapter = pagerAdapter
binding.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() { binding.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
...@@ -88,22 +87,22 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -88,22 +87,22 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_pdf)) binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_pdf))
} }
1 -> { // 1 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_word)) // binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_word))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_word)) // binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_word))
//
} // }
//
2 -> { // 2 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_ppt)) // binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_ppt)) // binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
//
} // }
//
3 -> { // 3 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_excel)) // binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_excel))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_excel)) // binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_excel))
} // }
} }
} }
}) })
...@@ -122,17 +121,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -122,17 +121,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
tabBinding.tvTab.text = "PDF" tabBinding.tvTab.text = "PDF"
} }
1 -> { // 1 -> {
tabBinding.tvTab.text = "Word" // tabBinding.tvTab.text = "Word"
} // }
//
2 -> { // 2 -> {
tabBinding.tvTab.text = "PPT" // tabBinding.tvTab.text = "PPT"
} // }
//
3 -> { // 3 -> {
tabBinding.tvTab.text = "Excel" // tabBinding.tvTab.text = "Excel"
} // }
} }
tab.customView = tabBinding.root tab.customView = tabBinding.root
}.attach() }.attach()
......
package com.base.superpdfreader.activity package com.base.superpdfreader.activity
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
...@@ -52,6 +53,7 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() { ...@@ -52,6 +53,7 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
binding.tvImport.isEnabled = imageSelectionAdapter.getSelectBeanSize() > 0 binding.tvImport.isEnabled = imageSelectionAdapter.getSelectBeanSize() > 0
} }
@SuppressLint("SetTextI18n")
private fun imageSelectAction(imageBean: ImageBean) { private fun imageSelectAction(imageBean: ImageBean) {
if (imageBean.isSelect) { if (imageBean.isSelect) {
selectedAdapter.addBean(imageBean) selectedAdapter.addBean(imageBean)
...@@ -77,7 +79,12 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() { ...@@ -77,7 +79,12 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
finishToMain() finishToMain()
} }
binding.tvImport.setOnClickListener { binding.tvImport.setOnClickListener {
startActivity(Intent(this@ImageSelectionActivity, ImageToPdfActivity::class.java)) startActivity(Intent(this@ImageSelectionActivity, ImageToPdfActivity::class.java)
.apply {
val pathList = selectedAdapter.getSelectBean().map { it.path }
putExtra("PathList", pathList.toTypedArray())
}
)
} }
} }
......
package com.base.superpdfreader.activity package com.base.superpdfreader.activity
import android.graphics.Color
import androidx.activity.addCallback
import com.base.superpdfreader.adapter.ImageDragAdapter
import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ActivityImageDragBinding import com.base.superpdfreader.databinding.ActivityImageDragBinding
import com.base.superpdfreader.helps.BaseActivity import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.utils.BarUtils
import com.base.superpdfreader.view.PDFSaveDialog.showPDFSaveDialog
import com.google.gson.Gson
class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() { class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
override val binding: ActivityImageDragBinding by lazy { override val binding: ActivityImageDragBinding by lazy {
ActivityImageDragBinding.inflate(layoutInflater) ActivityImageDragBinding.inflate(layoutInflater)
} }
private lateinit var imageDragAdapter: ImageDragAdapter
private val pathList by lazy {
val beans = intent.getStringArrayExtra("PathList") ?: arrayOf()
arrayListOf<ImageBean>().apply {
addAll(beans.map { ImageBean(it) })
}
}
override fun initView() { override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
imageDragAdapter = ImageDragAdapter()
binding.rv.adapter = imageDragAdapter
imageDragAdapter.setData(pathList)
}
override fun initListener() {
super.initListener()
binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
finish()
}
binding.ivAdd.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.tvConvert.setOnClickListener {
showPDFSaveDialog {
}
}
} }
} }
\ No newline at end of file
package com.base.superpdfreader.activity
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.base.superpdfreader.R
import com.base.superpdfreader.databinding.ActivityPdfConvertedBinding
import com.base.superpdfreader.helps.BaseActivity
class PdfConvertedActivity : BaseActivity<ActivityPdfConvertedBinding>() {
override val binding: ActivityPdfConvertedBinding by lazy {
ActivityPdfConvertedBinding.inflate(layoutInflater)
}
override fun initView() {
}
}
\ No newline at end of file
...@@ -8,6 +8,7 @@ import com.base.superpdfreader.R ...@@ -8,6 +8,7 @@ import com.base.superpdfreader.R
import com.base.superpdfreader.bean.ImageBean import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ItemImageDragBinding import com.base.superpdfreader.databinding.ItemImageDragBinding
import com.base.superpdfreader.view.XmlEx.inflate import com.base.superpdfreader.view.XmlEx.inflate
import com.bumptech.glide.Glide
class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() { class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
...@@ -28,5 +29,12 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() { ...@@ -28,5 +29,12 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
val context = holder.itemView.context val context = holder.itemView.context
val bean = beanList[position] val bean = beanList[position]
Glide.with(context).load(bean.path).centerCrop().into(binding.iv)
}
fun setData(data: List<ImageBean>) {
beanList.clear()
beanList.addAll(data)
notifyDataSetChanged()
} }
} }
\ No newline at end of file
package com.base.superpdfreader.bean
data class PdfParameterBean(
var orientation: Int = 0,
var pageSize: Int = 1,
var margin: Int = 0,
var compression: Int = 0,
var password: String? = null
) {
companion object {
val arrayOrientation = arrayOf("Portrait", "Landscape")
val arrayPageSize = arrayOf("Fit(Sample page size as image)", "A4 (297x210 mm)", "Use Letter(215x279.4 mm)")
val arrayMargin = arrayOf("No margin", "Small", "Big")
val arrayCompression = arrayOf("Low", "Medium", "High")
}
}
package com.base.superpdfreader.fragment package com.base.superpdfreader.fragment
import android.app.Dialog
import android.net.Uri import android.net.Uri
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -12,6 +13,7 @@ import com.base.superpdfreader.helps.BaseFragment ...@@ -12,6 +13,7 @@ import com.base.superpdfreader.helps.BaseFragment
import com.base.superpdfreader.helps.MediaStoreHelp.geFileMedia import com.base.superpdfreader.helps.MediaStoreHelp.geFileMedia
import com.base.superpdfreader.helps.PermissionHelp.checkStorePermission import com.base.superpdfreader.helps.PermissionHelp.checkStorePermission
import com.base.superpdfreader.helps.PermissionHelp.requestStorePermission import com.base.superpdfreader.helps.PermissionHelp.requestStorePermission
import com.base.superpdfreader.view.DialogViews.showGerPermission
import com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog import com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -23,6 +25,7 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() { ...@@ -23,6 +25,7 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
var UI_MODE: String = MODE_PDF var UI_MODE: String = MODE_PDF
private lateinit var adapter: DocumentAdapter private lateinit var adapter: DocumentAdapter
private lateinit var dialog: Dialog
public override val binding: FragmentDocumentListBinding by lazy { public override val binding: FragmentDocumentListBinding by lazy {
FragmentDocumentListBinding.inflate(layoutInflater) FragmentDocumentListBinding.inflate(layoutInflater)
...@@ -52,7 +55,8 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() { ...@@ -52,7 +55,8 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
} }
} }
adapter = DocumentAdapter { bean -> adapter = DocumentAdapter { bean ->
requireContext().showDocumentDetailDialog(UI_MODE, bean) val launcher = (requireActivity() as MainActivity).launcher
requireContext().showDocumentDetailDialog(UI_MODE, bean, launcher)
} }
binding.rv.adapter = adapter binding.rv.adapter = adapter
...@@ -64,13 +68,18 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() { ...@@ -64,13 +68,18 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
override fun setListener() { override fun setListener() {
binding.tvAllow.setOnClickListener { binding.tvAllow.setOnClickListener {
val launcher = (requireActivity() as MainActivity).launcher val launcher = (requireActivity() as MainActivity).launcher
requireContext().requestStorePermission(launcher,
jumpAction = {}, dialog = requireContext().showGerPermission(null, deny = {}, allow = {
result = { flag -> requireContext().requestStorePermission(launcher,
binding.llPermission.isVisible = !flag jumpAction = {},
initData() result = { flag ->
} binding.llPermission.isVisible = !flag
) initData()
}
)
})
} }
binding.swipeRefresh.setOnRefreshListener { binding.swipeRefresh.setOnRefreshListener {
binding.swipeRefresh.isRefreshing = false binding.swipeRefresh.isRefreshing = false
......
...@@ -121,10 +121,11 @@ object MediaStoreHelp { ...@@ -121,10 +121,11 @@ object MediaStoreHelp {
val commonMediaDir = arrayOf( val commonMediaDir = arrayOf(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).absolutePath, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath, // Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).absolutePath, // Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath, // Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).absolutePath,
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath,
) )
fun Context.updateMediaStore( fun Context.updateMediaStore(
......
...@@ -38,8 +38,6 @@ object DialogViews { ...@@ -38,8 +38,6 @@ object DialogViews {
// .setFontSize(13, true) // .setFontSize(13, true)
// .setForegroundColor(0xFF999999.toInt()) // .setForegroundColor(0xFF999999.toInt())
// .create() // .create()
binding.idTvTt.text =
"Our application needs to access your files to implement junk scanning, image compression, duplicate photos, and large file cleanup. Before you authorize, we need to confirm with you:"
tittle?.let { binding.idTvTt.text = it } tittle?.let { binding.idTvTt.text = it }
binding.idFullLottie.imageAssetsFolder = "easy_permission_finger/images/" binding.idFullLottie.imageAssetsFolder = "easy_permission_finger/images/"
......
package com.base.superpdfreader.view
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.view.LayoutInflater
import android.widget.TextView
import androidx.core.view.isVisible
import com.base.superpdfreader.R
import com.base.superpdfreader.bean.PdfParameterBean
import com.base.superpdfreader.bean.PdfParameterBean.Companion.arrayCompression
import com.base.superpdfreader.bean.PdfParameterBean.Companion.arrayMargin
import com.base.superpdfreader.bean.PdfParameterBean.Companion.arrayOrientation
import com.base.superpdfreader.bean.PdfParameterBean.Companion.arrayPageSize
import com.base.superpdfreader.databinding.DialogPdfParametersBinding
import com.base.superpdfreader.databinding.DialogPdfSaveBinding
import com.base.superpdfreader.view.XmlEx.inflate
import com.google.android.material.bottomsheet.BottomSheetDialog
import java.text.SimpleDateFormat
object PDFSaveDialog {
@SuppressLint("SimpleDateFormat", "SetTextI18n")
fun Context.showPDFSaveDialog(saveAction: (pdfParameterBean: PdfParameterBean) -> Unit) {
val dialog = BottomSheetDialog(this)
val binding = DialogPdfSaveBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
val appName = resources.getString(R.string.app_name)
val pdfName = appName + " " + SimpleDateFormat("yyyyMMdd HH.mm.ss").format(System.currentTimeMillis())
binding.editName.setText(pdfName)
val pdfParameterBean = PdfParameterBean()
binding.tvOrientation.text = arrayOrientation[0]
binding.tvPageSize.text = arrayPageSize[1]
binding.tvMargin.text = arrayMargin[0]
binding.tvCompression.text = arrayCompression[0]
binding.flOrientation.setOnClickListener {
showPDFSaveParametersDialog(arrayOrientation) { index, text ->
pdfParameterBean.orientation = index
binding.tvOrientation.text = text
}
}
binding.flPageSize.setOnClickListener {
showPDFSaveParametersDialog(arrayPageSize) { index, text ->
pdfParameterBean.pageSize = index
binding.tvPageSize.text = text
}
}
binding.flMargin.setOnClickListener {
showPDFSaveParametersDialog(arrayMargin) { index, text ->
pdfParameterBean.margin = index
binding.tvMargin.text = text
}
}
binding.flCompression.setOnClickListener {
showPDFSaveParametersDialog(arrayCompression) { index, text ->
pdfParameterBean.compression = index
binding.tvCompression.text = text
}
}
binding.flSelector.setOnClickListener {
binding.ivSelector.isSelected = !binding.ivSelector.isSelected
binding.flPassword.isVisible = binding.ivSelector.isSelected
}
binding.tvSave.setOnClickListener {
if (binding.flPassword.isVisible) {
pdfParameterBean.password = binding.editPassword.text.toString()
}
saveAction.invoke(pdfParameterBean)
dialog.dismiss()
}
}
fun Context.showPDFSaveParametersDialog(array: Array<String>, click: (index: Int, s: String) -> Unit) {
val dialog = Dialog(this)
val binding = DialogPdfParametersBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
array.forEachIndexed { index, text ->
val view = R.layout.item_paf_parameters.inflate(binding.ll)
(view as TextView).text = text
view.setOnClickListener {
click.invoke(index, text)
dialog.dismiss()
}
binding.ll.addView(view)
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/weixuan_fang" android:state_selected="false" />
<item android:drawable="@mipmap/xuanzhong_fang" android:state_selected="true" />
</selector>
\ No newline at end of file
...@@ -5,17 +5,20 @@ ...@@ -5,17 +5,20 @@
android:id="@+id/main" android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical" android:orientation="vertical"
tools:context=".activity.ImageToPdfActivity"> tools:context=".activity.ImageToPdfActivity">
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="40dp"
android:background="@color/white" /> android:background="@color/white" />
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/white"
android:paddingVertical="10dp"
tools:ignore="UselessParent"> tools:ignore="UselessParent">
<FrameLayout <FrameLayout
...@@ -46,4 +49,61 @@ ...@@ -46,4 +49,61 @@
</FrameLayout> </FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_margin="8dp"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3"
tools:listitem="@layout/item_image_drag" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp">
<ImageView
android:id="@+id/iv_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/paipanicon"
android:visibility="gone"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:src="@mipmap/tianjia"
tools:ignore="ContentDescription" />
</LinearLayout>
<com.noober.background.view.BLTextView
android:id="@+id/tv_convert"
android:layout_width="196dp"
android:layout_height="45dp"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="15dp"
android:gravity="center"
android:text="CONVERT TO PDF"
android:textColor="@color/white"
android:textSize="17sp"
android:textStyle="bold"
app:bl_corners_radius="22dp"
app:bl_solid_color="#FD3835"
tools:ignore="HardcodedText" />
</FrameLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="18dp" android:layout_marginStart="18dp"
android:layout_marginTop="56dp" android:layout_marginTop="56dp"
android:text="All Document" android:text="PDF"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="19sp" android:textSize="19sp"
android:textStyle="bold" android:textStyle="bold"
...@@ -58,7 +58,6 @@ ...@@ -58,7 +58,6 @@
android:id="@+id/fab" android:id="@+id/fab"
android:layout_width="76dp" android:layout_width="76dp"
android:layout_height="76dp" android:layout_height="76dp"
app:pressedTranslationZ="0dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="99dp" android:layout_marginBottom="99dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
...@@ -69,6 +68,7 @@ ...@@ -69,6 +68,7 @@
app:layout_constraintBottom_toBottomOf="@id/viewpager2" app:layout_constraintBottom_toBottomOf="@id/viewpager2"
app:layout_constraintEnd_toEndOf="@id/viewpager2" app:layout_constraintEnd_toEndOf="@id/viewpager2"
app:maxImageSize="76dp" app:maxImageSize="76dp"
app:pressedTranslationZ="0dp"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:tint="@color/color_pdf" /> tools:tint="@color/color_pdf" />
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.PdfConvertedActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -62,6 +62,7 @@ ...@@ -62,6 +62,7 @@
<com.noober.background.view.BLLinearLayout <com.noober.background.view.BLLinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:visibility="invisible"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="16dp"
android:layout_weight="1" android:layout_weight="1"
...@@ -89,6 +90,7 @@ ...@@ -89,6 +90,7 @@
</LinearLayout> </LinearLayout>
<TextView <TextView
android:visibility="gone"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
...@@ -100,6 +102,7 @@ ...@@ -100,6 +102,7 @@
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<LinearLayout <LinearLayout
android:visibility="gone"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
......
<?xml version="1.0" encoding="utf-8"?>
<com.noober.background.view.BLLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
app:bl_corners_radius="5dp" />
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.noober.background.view.BLFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView 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="wrap_content" android:layout_width="110dp"
android:layout_height="wrap_content" android:layout_height="140dp"
android:layout_margin="5dp" android:layout_margin="8dp"
app:bl_corners_radius="9dp" app:cardCornerRadius="9dp"
app:bl_solid_color="#F5F5F5"> app:cardElevation="0dp">
<ImageView <ImageView
android:id="@+id/iv" android:id="@+id/iv"
android:layout_width="110dp" android:layout_width="match_parent"
android:layout_height="140dp" android:layout_height="match_parent"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:minWidth="26dp" android:minWidth="26dp"
android:minHeight="26dp" android:minHeight="26dp"
android:src="@mipmap/clip" android:src="@mipmap/yidong"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</com.noober.background.view.BLFrameLayout> </androidx.cardview.widget.CardView>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="350dp"
android:layout_height="70dp"
android:layout_marginHorizontal="15dp"
android:gravity="center_vertical"
android:textColor="@color/black"
android:textSize="17sp"
tools:text="Portrait" />
<resources> <resources>
<string name="app_name">Super PDF Reader</string> <string name="app_name">Super PDF Reader</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string>
</resources> </resources>
\ No newline at end of file
[versions] [versions]
agp = "8.3.1" agp = "8.3.1"
kotlin = "1.9.0" kotlin = "1.8.0"
coreKtx = "1.10.1" coreKtx = "1.8.1"
junit = "4.13.2" junit = "4.13.2"
junitVersion = "1.1.5" junitVersion = "1.1.5"
espressoCore = "3.5.1" espressoCore = "3.5.1"
......
...@@ -9,19 +9,38 @@ pluginManagement { ...@@ -9,19 +9,38 @@ pluginManagement {
} }
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url 'https://jitpack.io' }
maven { url "https://android-sdk.is.com" }
// maven { url "https://maven.google.com" }
//广告仓库
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
//国内阿里云仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories { repositories {
mavenCentral() mavenCentral()
google() google()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
maven { url "https://android-sdk.is.com" } maven { url "https://android-sdk.is.com" }
maven { url "https://maven.google.com" } // maven { url "https://maven.google.com" }
//广告仓库
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" } maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
maven { url "https://artifact.bytedance.com/repository/pangle" } maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url "https://s01.oss.sonatype.org/content/groups/public" }
//国内阿里云仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/central' }
......
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