diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_txt.xml b/app/src/main/res/layout/activity_preview_txt.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_txt.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_txt.xml b/app/src/main/res/layout/activity_preview_txt.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_txt.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_base_title.xml b/app/src/main/res/layout/include_base_title.xml index 52adab4..69e8608 100644 --- a/app/src/main/res/layout/include_base_title.xml +++ b/app/src/main/res/layout/include_base_title.xml @@ -13,11 +13,14 @@ @@ -29,5 +32,5 @@ android:layout_alignParentEnd="true" android:paddingHorizontal="@dimen/dp_10" android:src="@drawable/ic_read_notice" - android:visibility="gone" /> + android:visibility="invisible" /> \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_txt.xml b/app/src/main/res/layout/activity_preview_txt.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_txt.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_base_title.xml b/app/src/main/res/layout/include_base_title.xml index 52adab4..69e8608 100644 --- a/app/src/main/res/layout/include_base_title.xml +++ b/app/src/main/res/layout/include_base_title.xml @@ -13,11 +13,14 @@ @@ -29,5 +32,5 @@ android:layout_alignParentEnd="true" android:paddingHorizontal="@dimen/dp_10" android:src="@drawable/ic_read_notice" - android:visibility="gone" /> + android:visibility="invisible" /> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index cfeab85..50d2ad3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -59,4 +59,14 @@ @dimen/sp_16 bold + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_txt.xml b/app/src/main/res/layout/activity_preview_txt.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_txt.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_base_title.xml b/app/src/main/res/layout/include_base_title.xml index 52adab4..69e8608 100644 --- a/app/src/main/res/layout/include_base_title.xml +++ b/app/src/main/res/layout/include_base_title.xml @@ -13,11 +13,14 @@ @@ -29,5 +32,5 @@ android:layout_alignParentEnd="true" android:paddingHorizontal="@dimen/dp_10" android:src="@drawable/ic_read_notice" - android:visibility="gone" /> + android:visibility="invisible" /> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index cfeab85..50d2ad3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -59,4 +59,14 @@ @dimen/sp_16 bold + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index ea13bd5..f380174 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -13,4 +13,8 @@ ?attr/colorPrimaryVariant + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index dc4e770..0026a0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,4 +105,6 @@ implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //PDF预览 + implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 93ed780..3892b5a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,21 @@ - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt index 907912b..56f1e53 100644 --- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt +++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt @@ -117,6 +117,17 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +//拼接附件地址 +fun String.combineFilePath(): String { + if (this.isEmpty()) return this + val defaultValue = SaveKeyValues.getValue( + LocaleConstant.FILE_SERVER_CONFIG, LocaleConstant.File_SERVER_URL + ) as String + //http://111.198.10.15:21408/test/未命名1_加水印_1672035640383.pdf + //http://111.198.10.15:21408/test/123_1672034882373.txt + return "$defaultValue/test/${this.replace("\\", "/")}" +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt index 6ddc53e..c7a99a0 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/LocaleConstant.kt @@ -41,6 +41,8 @@ * */ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:21609" + const val FILE_SERVER_CONFIG = "fileServerConfig" + const val File_SERVER_URL = "http://111.198.10.15:21408" const val ACCOUNT = "account" const val PASSWORD = "password" } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt index 94067d3..7ad1253 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/NoticeDetailActivity.kt @@ -10,7 +10,9 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_notice_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -47,7 +49,9 @@ if (dataRow.minioFileName.isNullOrBlank()) { minioFileView.text = "暂无附件" } else { - minioFileView.text = dataRow.minioFileName + val minioFileName = dataRow.minioFileName + + minioFileView.text = minioFileName val textPaint = minioFileView.paint textPaint.flags = Paint.UNDERLINE_TEXT_FLAG textPaint.isAntiAlias = true @@ -55,6 +59,20 @@ minioFileView.setOnClickListener { //查看附件 + when { + minioFileName.endsWith("pdf") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("doc") -> { + navigatePageTo(minioFileName) + } + minioFileName.endsWith("txt") -> { + navigatePageTo(minioFileName) + } + else -> { + "文件类型未知,无法打开附件".show(this) + } + } } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt new file mode 100644 index 0000000..e233ddc --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewDocumentActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewDocumentActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_doc + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt new file mode 100644 index 0000000..027f411 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewPdfActivity.kt @@ -0,0 +1,56 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.combineFilePath +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_preview_pdf.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File +import java.io.FileInputStream + + +class PreviewPdfActivity : KotlinBaseActivity() { + + override fun initData() { + val minioFileName = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = minioFileName + + val url = minioFileName.combineFilePath() + url.downloadFile(createDownloadFileDir().toString(), + object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + + } + + override fun onProgressChanged(currentBytes: Long) { + + } + + override fun onDownloadEnd(file: File?) { + val inputStream = FileInputStream(file) + pdfView.fromStream(inputStream).load() + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_preview_pdf + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt new file mode 100644 index 0000000..423db1b --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/PreviewTextActivity.kt @@ -0,0 +1,24 @@ +package com.casic.xz.meterage.view + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseActivity + +class PreviewTextActivity : KotlinBaseActivity() { + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.activity_preview_txt + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_doc.xml b/app/src/main/res/layout/activity_preview_doc.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_doc.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_pdf.xml b/app/src/main/res/layout/activity_preview_pdf.xml new file mode 100644 index 0000000..f7fad36 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_pdf.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_txt.xml b/app/src/main/res/layout/activity_preview_txt.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_txt.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_base_title.xml b/app/src/main/res/layout/include_base_title.xml index 52adab4..69e8608 100644 --- a/app/src/main/res/layout/include_base_title.xml +++ b/app/src/main/res/layout/include_base_title.xml @@ -13,11 +13,14 @@ @@ -29,5 +32,5 @@ android:layout_alignParentEnd="true" android:paddingHorizontal="@dimen/dp_10" android:src="@drawable/ic_read_notice" - android:visibility="gone" /> + android:visibility="invisible" /> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index cfeab85..50d2ad3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -59,4 +59,14 @@ @dimen/sp_16 bold + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index ea13bd5..f380174 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -13,4 +13,8 @@ ?attr/colorPrimaryVariant + + \ No newline at end of file diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..68f0fce --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,7 @@ + + + + +