Commit 4ad226de authored by wanglei's avatar wanglei

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

parent 5471aaee
...@@ -53,6 +53,10 @@ dependencies { ...@@ -53,6 +53,10 @@ dependencies {
//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'
//XLS表格
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
//pdf浏览 //pdf浏览
//https://github.com/DImuthuUpe/AndroidPdfViewer //https://github.com/DImuthuUpe/AndroidPdfViewer
......
{"v":"5.5.7","fr":60,"ip":0,"op":60,"w":640,"h":140,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":157,"h":175,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":86,"h":50,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":540,"h":114,"u":"images/","p":"img_2.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"bu.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[518,94.5,0],"to":[5.917,0,0],"ti":[-5.917,0,0]},{"t":30,"s":[553.5,94.5,0]}],"ix":2},"a":{"a":0,"k":[78.5,87.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[0]},{"t":31,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[502.25,57.5,0],"ix":2},"a":{"a":0,"k":[43,25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"qx2.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320,57,0],"ix":2},"a":{"a":0,"k":[270,57,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
...@@ -17,7 +17,10 @@ import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT ...@@ -17,7 +17,10 @@ import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import com.base.superpdfreader.helps.BaseActivity import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.helps.MediaStoreHelp.updateMediaStore import com.base.superpdfreader.helps.MediaStoreHelp.updateMediaStore
import com.base.superpdfreader.helps.PermissionHelp.checkStorePermission
import com.base.superpdfreader.helps.PermissionHelp.requestStorePermission
import com.base.superpdfreader.utils.BarUtils import com.base.superpdfreader.utils.BarUtils
import com.base.superpdfreader.view.DialogViews.showGerPermission
import com.base.superpdfreader.view.PDFOperationDialog.showPDFCreateConverter import com.base.superpdfreader.view.PDFOperationDialog.showPDFCreateConverter
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
...@@ -51,6 +54,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -51,6 +54,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
initPage() initPage()
intTab() intTab()
if (checkStorePermission()) {
} else {
dialog = showGerPermission(null, deny = {}, allow = {
requestStorePermission(launcher = launcher, result = { flag ->
if (flag) {
}
})
})
}
updateMediaStore() updateMediaStore()
} }
......
...@@ -82,7 +82,7 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() { ...@@ -82,7 +82,7 @@ class ImageSelectionActivity : BaseActivity<ActivityImageSelectionBinding>() {
} }
private fun initData() = lifecycleScope.launch(Dispatchers.IO) { private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val files = arrayListOf<Pair<File, Uri>>() val files = arrayListOf<Pair<String, Uri>>()
getMediaImage(files) getMediaImage(files)
LogEx.logDebug(TAG, "files.size=${files.size}") LogEx.logDebug(TAG, "files.size=${files.size}")
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
......
package com.base.superpdfreader.adapter package com.base.superpdfreader.adapter
class ImageDragAdapter { import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.superpdfreader.R
import com.base.superpdfreader.bean.ImageBean
import com.base.superpdfreader.databinding.ItemImageDragBinding
import com.base.superpdfreader.view.XmlEx.inflate
class ImageDragAdapter : RecyclerView.Adapter<ImageDragAdapter.AAA>() {
private val beanList = arrayListOf<ImageBean>()
inner class AAA(view: View) : ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AAA {
return AAA(R.layout.item_image_drag.inflate(parent))
}
override fun getItemCount(): Int {
return beanList.size
}
override fun onBindViewHolder(holder: AAA, position: Int) {
val binding = ItemImageDragBinding.bind(holder.itemView)
val context = holder.itemView.context
val bean = beanList[position]
}
} }
\ No newline at end of file
...@@ -11,9 +11,7 @@ import com.base.superpdfreader.databinding.ItemImageSelectedBinding ...@@ -11,9 +11,7 @@ import com.base.superpdfreader.databinding.ItemImageSelectedBinding
import com.base.superpdfreader.databinding.ItemImageSelectionBinding import com.base.superpdfreader.databinding.ItemImageSelectionBinding
import com.base.superpdfreader.view.XmlEx.inflate import com.base.superpdfreader.view.XmlEx.inflate
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import kotlinx.coroutines.selects.select
import java.io.File import java.io.File
import java.util.ArrayList
class ImageSelectionAdapter( class ImageSelectionAdapter(
val uiMode: Int = UI_IMAGE_GRID, val uiMode: Int = UI_IMAGE_GRID,
...@@ -55,9 +53,7 @@ class ImageSelectionAdapter( ...@@ -55,9 +53,7 @@ class ImageSelectionAdapter(
} else { } else {
binding.flCamera.visibility = View.GONE binding.flCamera.visibility = View.GONE
binding.flContent.visibility = View.VISIBLE binding.flContent.visibility = View.VISIBLE
if (data.file?.exists() == true) { Glide.with(context).load(data.path).centerCrop().into(binding.iv)
Glide.with(context).load(data.file).centerCrop().into(binding.iv)
}
binding.ivSelector.isSelected = data.isSelect binding.ivSelector.isSelected = data.isSelect
arrayOf(binding.root, binding.ivSelector).forEach { arrayOf(binding.root, binding.ivSelector).forEach {
it.setOnClickListener { it.setOnClickListener {
...@@ -76,9 +72,7 @@ class ImageSelectionAdapter( ...@@ -76,9 +72,7 @@ class ImageSelectionAdapter(
UI_IMAGE_LIST -> { UI_IMAGE_LIST -> {
val binding = ItemImageSelectedBinding.bind(holder.itemView) val binding = ItemImageSelectedBinding.bind(holder.itemView)
if (data.file?.exists() == true) { Glide.with(context).load(data.path).centerCrop().into(binding.iv)
Glide.with(context).load(data.file).centerCrop().into(binding.iv)
}
binding.ivDelete.setOnClickListener { binding.ivDelete.setOnClickListener {
remove?.invoke(data) remove?.invoke(data)
} }
...@@ -87,7 +81,7 @@ class ImageSelectionAdapter( ...@@ -87,7 +81,7 @@ class ImageSelectionAdapter(
} }
fun setData(files: List<Pair<File, Uri>>, isClean: Boolean = true) { fun setData(files: List<Pair<String, Uri>>, isClean: Boolean = true) {
if (isClean) { if (isClean) {
imageBeans.clear() imageBeans.clear()
} }
...@@ -118,7 +112,7 @@ class ImageSelectionAdapter( ...@@ -118,7 +112,7 @@ class ImageSelectionAdapter(
fun unSelectBean(imageBean: ImageBean) { fun unSelectBean(imageBean: ImageBean) {
imageBeans.forEach { imageBeans.forEach {
if (it.file == imageBean.file) { if (it.path == imageBean.path) {
it.isSelect = false it.isSelect = false
} }
} }
......
package com.base.superpdfreader.bean package com.base.superpdfreader.bean
import java.io.File data class ImageBean(
val path: String? = null
data class ImageBean(val file: File? = null) { ) {
var isCamera: Boolean = false var isCamera: Boolean = false
var isSelect: Boolean = false var isSelect: Boolean = false
} }
...@@ -73,9 +73,10 @@ object MediaStoreHelp { ...@@ -73,9 +73,10 @@ object MediaStoreHelp {
} }
@SuppressLint("Range")
fun Context.getMediaImage( fun Context.getMediaImage(
list: ArrayList<Pair<File, Uri>>, list: ArrayList<Pair<String, Uri>>,
): ArrayList<Pair<File, Uri>> { ): ArrayList<Pair<String, Uri>> {
val projection = arrayOf( val projection = arrayOf(
MediaStore.Files.FileColumns._ID, MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.DATA,
...@@ -105,7 +106,7 @@ object MediaStoreHelp { ...@@ -105,7 +106,7 @@ object MediaStoreHelp {
) )
// 其他属性... // 其他属性...
list.add( list.add(
Pair(File(path), uri) Pair(path, uri)
) )
} }
} }
......
package com.base.superpdfreader.view
import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import com.base.superpdfreader.R
import com.base.superpdfreader.databinding.DialogPermissonOpenBinding
object DialogViews {
@SuppressLint("SetTextI18n")
fun Context.showGerPermission(
tittle: String? = null,
deny: ((view: Dialog) -> Unit)? = null,
allow: ((view: Dialog) -> Unit)? = null
): Dialog {
val dialog = Dialog(this)
val binding = DialogPermissonOpenBinding.inflate(LayoutInflater.from(this))
dialog.requestWindowFeature(1)
dialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.window!!.setLayout(-1, -1)
dialog.setCanceledOnTouchOutside(false)
dialog.setCancelable(false)
dialog.setContentView(binding.root)
val str = resources.getString(R.string.app_name)
// SpanUtils.with(binding.idTvTt)
// .append("Allow ${str} to access ")
// .setFontSize(13, true)
// .setForegroundColor(0xFF999999.toInt())
// .append("All Files Access ")
// .setBold()
// .setFontSize(13, true)
// .setForegroundColor(0xFF4273FF.toInt())
// .append("permission to manage files of your device?")
// .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/"
binding.idFullLottie.setAnimation("easy_permission_finger/data.json")
binding.idFullLottie.playAnimation()
binding.idDeny.setOnClickListener {
dialog.dismiss()
deny?.invoke(dialog)
}
binding.idTvAllow.setOnClickListener {
dialog.dismiss()
allow?.invoke(dialog)
}
dialog.show()
return dialog
}
}
\ No newline at end of file
package com.base.superpdfreader.view package com.base.superpdfreader.view
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
import com.base.superpdfreader.R import com.base.superpdfreader.R
import com.base.superpdfreader.activity.DocBrowserActivity import com.base.superpdfreader.activity.DocBrowserActivity
...@@ -10,17 +12,19 @@ import com.base.superpdfreader.activity.PdfBrowserActivity ...@@ -10,17 +12,19 @@ import com.base.superpdfreader.activity.PdfBrowserActivity
import com.base.superpdfreader.activity.XlsBrowserActivity import com.base.superpdfreader.activity.XlsBrowserActivity
import com.base.superpdfreader.bean.DocumentBean import com.base.superpdfreader.bean.DocumentBean
import com.base.superpdfreader.databinding.DialogDocumentDetailBinding import com.base.superpdfreader.databinding.DialogDocumentDetailBinding
import com.base.superpdfreader.fragment.DocumentListFragment
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PDF import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PDF
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import com.base.superpdfreader.helps.ActivityLauncher
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import java.io.OutputStream
object DocumentDetailDialog { object DocumentDetailDialog {
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n", "QueryPermissionsNeeded")
fun Context.showDocumentDetailDialog(UI_MODE: String, bean: DocumentBean) { fun Context.showDocumentDetailDialog(UI_MODE: String, bean: DocumentBean, launcher: ActivityLauncher) {
val dialog = BottomSheetDialog(this) val dialog = BottomSheetDialog(this)
val binding = DialogDocumentDetailBinding.inflate(LayoutInflater.from(this)) val binding = DialogDocumentDetailBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
...@@ -96,8 +100,57 @@ object DocumentDetailDialog { ...@@ -96,8 +100,57 @@ object DocumentDetailDialog {
} }
dialog.dismiss() dialog.dismiss()
} }
binding.llEmail.setOnClickListener {
dialog.dismiss()
val emailIntent = Intent(Intent.ACTION_SEND).apply {
// 附加文件
putExtra(Intent.EXTRA_STREAM, bean.uri)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
// 检查是否有可以处理此Intent的应用
if (emailIntent.resolveActivity(packageManager) != null) {
startActivity(emailIntent)
}
}
binding.llCopy.setOnClickListener {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
launcher.launch(intent) { result ->
val srcUri = bean.uri
val treeUri: Uri? = result.data?.data
}
}
binding.llDelete.setOnClickListener { binding.llDelete.setOnClickListener {
} }
} }
@SuppressLint("Recycle")
fun Context.copyFileToUri(targetUri: Uri, sourceUri: Uri) {
contentResolver.openInputStream(sourceUri).use { input ->
val outputStream: OutputStream = contentResolver.openOutputStream(
getOutputUri(targetUri, "your_filename.ext")
) ?: return
input?.let {
val buffer = ByteArray(1024)
var length: Int
while (it.read(buffer).also { length = it } != -1) {
outputStream.write(buffer, 0, length)
}
outputStream.flush()
}
}
}
// 辅助函数,用于在目标Uri下创建文件
private fun getOutputUri(baseUri: Uri, filename: String): Uri {
return Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority("com.android.externalstorage.documents")
.appendPath("tree") // 根据SAF的Uri结构,这可能需要调整
.appendPath(baseUri.lastPathSegment)
.appendPath(filename)
.build()
}
} }
\ No newline at end of file
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".activity.XlsBrowserActivity"> tools:context=".activity.XlsBrowserActivity">
<WebView <com.bin.david.form.core.SmartTable
android:id="@+id/webView" android:id="@+id/smartTable"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
......
...@@ -56,10 +56,10 @@ ...@@ -56,10 +56,10 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_marginTop="30dp"
android:id="@+id/ll_open" android:id="@+id/ll_open"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
...@@ -73,7 +73,8 @@ ...@@ -73,7 +73,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -82,7 +83,8 @@ ...@@ -82,7 +83,8 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Open File" android:text="Open File"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
...@@ -102,7 +104,8 @@ ...@@ -102,7 +104,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -111,7 +114,8 @@ ...@@ -111,7 +114,8 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Email" android:text="Email"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
...@@ -131,7 +135,8 @@ ...@@ -131,7 +135,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -140,7 +145,8 @@ ...@@ -140,7 +145,8 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Share a Copy" android:text="Share a Copy"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
...@@ -160,7 +166,8 @@ ...@@ -160,7 +166,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -169,7 +176,8 @@ ...@@ -169,7 +176,8 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Copy To" android:text="Copy To"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
...@@ -189,7 +197,8 @@ ...@@ -189,7 +197,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -198,14 +207,15 @@ ...@@ -198,14 +207,15 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Rename" android:text="Rename"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_marginBottom="40dp"
android:id="@+id/ll_delete" android:id="@+id/ll_delete"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:background="?android:attr/selectableItemBackground" android:background="?android:attr/selectableItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
...@@ -219,7 +229,8 @@ ...@@ -219,7 +229,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:minWidth="27dp" android:minWidth="27dp"
android:minHeight="27dp" /> android:minHeight="27dp"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -228,7 +239,8 @@ ...@@ -228,7 +239,8 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="Delete" android:text="Delete"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="16sp" /> android:textSize="16sp"
tools:ignore="HardcodedText" />
</LinearLayout> </LinearLayout>
</com.noober.background.view.BLLinearLayout> </com.noober.background.view.BLLinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<com.noober.background.view.BLLinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:orientation="vertical"
app:bl_corners_radius="10dp"
app:bl_solid_color="@color/white">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:text="Permission request"
android:textColor="#000000"
android:textSize="17sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/id_tv_tt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="38dp"
android:textSize="13sp" />
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/id_full_lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="23dp"
android:layout_marginTop="40dp"
android:layout_marginBottom="14dp">
<com.noober.background.view.BLTextView
android:id="@+id/id_deny"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_marginEnd="13dp"
android:layout_weight="1"
android:gravity="center"
android:text="Deny"
android:textColor="#000000"
android:textSize="17sp"
app:bl_corners_radius="18dp"
app:bl_solid_color="#F5F5F5"
tools:ignore="HardcodedText" />
<com.noober.background.view.BLTextView
android:id="@+id/id_tv_allow"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_weight="1"
android:gravity="center"
android:text="Allow"
android:textColor="@color/white"
android:textSize="17sp"
app:bl_corners_radius="18dp"
app:bl_solid_color="#355bea"
tools:ignore="HardcodedText" />
</androidx.appcompat.widget.LinearLayoutCompat>
</com.noober.background.view.BLLinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.noober.background.view.BLFrameLayout 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">
<ImageView
android:id="@+id/iv"
android:layout_width="110dp"
android:layout_height="140dp"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_clip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|bottom"
android:layout_marginStart="16dp"
android:layout_marginBottom="8dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/clip"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/iv_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:minWidth="26dp"
android:minHeight="26dp"
android:src="@mipmap/clip"
tools:ignore="ContentDescription" />
</com.noober.background.view.BLFrameLayout>
\ No newline at end of file
...@@ -16,14 +16,13 @@ dependencyResolutionManagement { ...@@ -16,14 +16,13 @@ dependencyResolutionManagement {
repositories { repositories {
mavenCentral() mavenCentral()
google() google()
jcenter()
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://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://s01.oss.sonatype.org/content/groups/public" }
maven { url "https://maven.google.com" } 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' }
maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/google' }
......
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