Commit 5be40c4b authored by wanglei's avatar wanglei

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

parent 4ad226de
......@@ -39,37 +39,41 @@ android {
dependencies {
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.activity
implementation libs.androidx.constraintlayout
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'com.google.android.material:material:1.4.0'
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation("com.google.android.material:material:1.4.0")
//网络
implementation("com.google.code.gson:gson:2.10.1")
//ui第三方
implementation("com.github.JavaNoober.BackgroundLibrary:libraryx:1.7.6")
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.github.bumptech.glide:glide:4.16.0")
implementation("com.airbnb.android:lottie:6.4.0")
//XLS表格
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
implementation("com.github.huangyanbin:SmartTable:2.2.0")
//pdf浏览
//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文件操作
implementation 'com.github.barteksc:pdfium-android:1.7.1'
implementation("com.github.barteksc:pdfium-android:1.7.1")
//apache / poi 内容提取
//有个问题是gradle版本需要升级到8.4
//https://github.com/apache/poi
implementation 'org.apache.poi:poi-ooxml:5.2.5'
implementation 'org.apache.poi:poi-scratchpad:5.2.5'
implementation 'com.fasterxml:aalto-xml:1.3.0'//XML格式数据的解析和生成,通过Jackson XML模块。
implementation 'stax:stax-api:1.0.1'//处理XML文档的Java API
implementation("org.apache.poi:poi-ooxml:5.2.5")
implementation("org.apache.poi:poi-scratchpad:5.2.5")
implementation("com.fasterxml:aalto-xml:1.3.0")//XML格式数据的解析和生成,通过Jackson XML模块。
implementation("stax:stax-api:1.0.1")//处理XML文档的Java API
}
\ No newline at end of file
......@@ -21,3 +21,11 @@
#-renamesourcefileattribute SourceFile
-keep class com.shockwave.**
-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 @@
android:supportsRtl="true"
android:theme="@style/Theme.SuperPDFReader"
tools:targetApi="31">
<activity
android:name=".activity.PdfConvertedActivity"
android:exported="false" />
<activity
android:name=".activity.ImageToPdfActivity"
android:exported="false" />
......
......@@ -3,6 +3,7 @@ package com.base.superpdfreader
import android.annotation.SuppressLint
import android.content.res.ColorStateList
import android.graphics.Color
import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
......@@ -36,15 +37,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private val pdfFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_PDF }
}
private val wordFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_WORD }
}
private val pptFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_PPT }
}
private val excelFragment by lazy {
DocumentListFragment().apply { UI_MODE = MODE_EXCEL }
}
// private val wordFragment by lazy {
// DocumentListFragment().apply { UI_MODE = MODE_WORD }
// }
// private val pptFragment by lazy {
// DocumentListFragment().apply { UI_MODE = MODE_PPT }
// }
// private val excelFragment by lazy {
// DocumentListFragment().apply { UI_MODE = MODE_EXCEL }
// }
private lateinit var pagerAdapter: DocumentPagerAdapter
override fun initView() {
......@@ -55,16 +57,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
intTab()
if (checkStorePermission()) {
} else {
dialog = showGerPermission(null, deny = {}, allow = {
requestStorePermission(launcher = launcher, result = { flag ->
if (flag) {
updateMediaStore()
showFloatAction()
}
})
})
}
updateMediaStore()
fun showFloatAction() {
binding.fab.visibility = View.VISIBLE
}
override fun initListener() {
......@@ -75,9 +74,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private fun initPage() {
pages.add(pdfFragment)
pages.add(wordFragment)
pages.add(pptFragment)
pages.add(excelFragment)
// pages.add(wordFragment)
// pages.add(pptFragment)
// pages.add(excelFragment)
pagerAdapter = DocumentPagerAdapter(this)
binding.viewpager2.adapter = pagerAdapter
binding.viewpager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
......@@ -88,22 +87,22 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_pdf))
}
1 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_word))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_word))
}
2 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
}
3 -> {
binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_excel))
binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_excel))
}
// 1 -> {
// binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_word))
// binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_word))
//
// }
//
// 2 -> {
// binding.llTop.setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
// binding.fab.setColorFilter(ContextCompat.getColor(this@MainActivity, R.color.color_ppt))
//
// }
//
// 3 -> {
// binding.llTop.setBackgroundColor(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>() {
tabBinding.tvTab.text = "PDF"
}
1 -> {
tabBinding.tvTab.text = "Word"
}
2 -> {
tabBinding.tvTab.text = "PPT"
}
3 -> {
tabBinding.tvTab.text = "Excel"
}
// 1 -> {
// tabBinding.tvTab.text = "Word"
// }
//
// 2 -> {
// tabBinding.tvTab.text = "PPT"
// }
//
// 3 -> {
// tabBinding.tvTab.text = "Excel"
// }
}
tab.customView = tabBinding.root
}.attach()
......
package com.base.superpdfreader.activity
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.net.Uri
......@@ -52,6 +53,7 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
binding.tvImport.isEnabled = imageSelectionAdapter.getSelectBeanSize() > 0
}
@SuppressLint("SetTextI18n")
private fun imageSelectAction(imageBean: ImageBean) {
if (imageBean.isSelect) {
selectedAdapter.addBean(imageBean)
......@@ -77,7 +79,12 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
finishToMain()
}
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
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.helps.BaseActivity
import com.base.superpdfreader.utils.BarUtils
import com.base.superpdfreader.view.PDFSaveDialog.showPDFSaveDialog
import com.google.gson.Gson
class ImageToPdfActivity : BaseActivity<ActivityImageDragBinding>() {
override val binding: ActivityImageDragBinding by lazy {
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() {
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
import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ItemImageDragBinding
import com.base.superpdfreader.view.XmlEx.inflate
import com.bumptech.glide.Glide
class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
......@@ -28,5 +29,12 @@ class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
val context = holder.itemView.context
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
import android.app.Dialog
import android.net.Uri
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
......@@ -12,6 +13,7 @@ import com.base.superpdfreader.helps.BaseFragment
import com.base.superpdfreader.helps.MediaStoreHelp.geFileMedia
import com.base.superpdfreader.helps.PermissionHelp.checkStorePermission
import com.base.superpdfreader.helps.PermissionHelp.requestStorePermission
import com.base.superpdfreader.view.DialogViews.showGerPermission
import com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
......@@ -23,6 +25,7 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
var UI_MODE: String = MODE_PDF
private lateinit var adapter: DocumentAdapter
private lateinit var dialog: Dialog
public override val binding: FragmentDocumentListBinding by lazy {
FragmentDocumentListBinding.inflate(layoutInflater)
......@@ -52,7 +55,8 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
}
}
adapter = DocumentAdapter { bean ->
requireContext().showDocumentDetailDialog(UI_MODE, bean)
val launcher = (requireActivity() as MainActivity).launcher
requireContext().showDocumentDetailDialog(UI_MODE, bean, launcher)
}
binding.rv.adapter = adapter
......@@ -64,6 +68,8 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
override fun setListener() {
binding.tvAllow.setOnClickListener {
val launcher = (requireActivity() as MainActivity).launcher
dialog = requireContext().showGerPermission(null, deny = {}, allow = {
requireContext().requestStorePermission(launcher,
jumpAction = {},
result = { flag ->
......@@ -71,6 +77,9 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
initData()
}
)
})
}
binding.swipeRefresh.setOnRefreshListener {
binding.swipeRefresh.isRefreshing = false
......
......@@ -121,10 +121,11 @@ object MediaStoreHelp {
val commonMediaDir = arrayOf(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath,
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).absolutePath,
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).absolutePath,
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath,
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).absolutePath,
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath,
)
fun Context.updateMediaStore(
......
......@@ -38,8 +38,6 @@ object DialogViews {
// .setFontSize(13, true)
// .setForegroundColor(0xFF999999.toInt())
// .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 }
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 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical"
tools:context=".activity.ImageToPdfActivity">
<View
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_height="40dp"
android:background="@color/white" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingVertical="10dp"
tools:ignore="UselessParent">
<FrameLayout
......@@ -46,4 +49,61 @@
</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>
\ No newline at end of file
......@@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:layout_marginTop="56dp"
android:text="All Document"
android:text="PDF"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold"
......@@ -58,7 +58,6 @@
android:id="@+id/fab"
android:layout_width="76dp"
android:layout_height="76dp"
app:pressedTranslationZ="0dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="99dp"
android:scaleType="centerCrop"
......@@ -69,6 +68,7 @@
app:layout_constraintBottom_toBottomOf="@id/viewpager2"
app:layout_constraintEnd_toEndOf="@id/viewpager2"
app:maxImageSize="76dp"
app:pressedTranslationZ="0dp"
tools:ignore="ContentDescription"
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 @@
<com.noober.background.view.BLLinearLayout
android:layout_width="0dp"
android:visibility="invisible"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:layout_weight="1"
......@@ -89,6 +90,7 @@
</LinearLayout>
<TextView
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
......@@ -100,6 +102,7 @@
tools:ignore="HardcodedText" />
<LinearLayout
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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"?>
<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:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:bl_corners_radius="9dp"
app:bl_solid_color="#F5F5F5">
android:layout_width="110dp"
android:layout_height="140dp"
android:layout_margin="8dp"
app:cardCornerRadius="9dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/iv"
android:layout_width="110dp"
android:layout_height="140dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" />
<ImageView
......@@ -35,7 +35,7 @@
android:layout_marginBottom="8dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/clip"
android:src="@mipmap/yidong"
tools:ignore="ContentDescription" />
</com.noober.background.view.BLFrameLayout>
\ No newline at end of file
</androidx.cardview.widget.CardView>
\ 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>
<string name="app_name">Super PDF Reader</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
\ No newline at end of file
[versions]
agp = "8.3.1"
kotlin = "1.9.0"
coreKtx = "1.10.1"
kotlin = "1.8.0"
coreKtx = "1.8.1"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"
......
......@@ -9,19 +9,38 @@ pluginManagement {
}
mavenCentral()
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 {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
google()
maven { url 'https://jitpack.io' }
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://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/repository/public' }
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