Commit 86df1873 authored by wanglei's avatar wanglei

...

parent 0ac096b7
......@@ -13,7 +13,6 @@ import com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.changeAppLanguage
import com.base.pdfviewerscannerwhite.utils.LogEx
import java.util.Locale
abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
private val TAG = "BaseActivity"
......
package com.base.pdfviewerscannerwhite.ui.guide
import androidx.appcompat.app.AppCompatActivity
import android.view.View
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.base.pdfviewerscannerwhite.databinding.ActivityGuideBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.guide.GuideDialog.showGuideDialog
class GuideActivity : BaseActivity<ActivityGuideBinding>() {
private val page1 by lazy {
GuidePageFragment(1)
}
private val page2 by lazy {
GuidePageFragment(2)
}
private val page3 by lazy {
GuidePageFragment(3)
}
private val fragments = arrayOf(page1, page2, page3)
override val binding: ActivityGuideBinding by lazy {
ActivityGuideBinding.inflate(layoutInflater)
}
override fun initView() {
initViewPager2()
showGuideDialog(close = {
finishToMain()
}, view = {
binding.viewPager2.visibility = View.VISIBLE
})
}
private fun initViewPager2() {
val pageAdapter = object : FragmentStateAdapter(this) {
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}
binding.viewPager2.run {
isUserInputEnabled = true
//https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment
adapter = pageAdapter
offscreenPageLimit = 4
}
binding.viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
}
override fun onPageSelected(position: Int) {
}
})
}
fun changePage(index: Int) {
binding.viewPager2.setCurrentItem(index, true)
}
}
\ No newline at end of file
......@@ -4,11 +4,15 @@ import android.app.AlertDialog
import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater
import android.widget.LinearLayout
import com.base.pdfviewerscannerwhite.databinding.DialogGuideBinding
object GuideDialog {
fun Context.showGuideDialog() {
fun Context.showGuideDialog(
close: () -> Unit,
view: () -> Unit
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogGuideBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
......@@ -17,11 +21,21 @@ object GuideDialog {
dialog.show()
val params = dialog.window?.attributes
params?.width = LinearLayout.LayoutParams.MATCH_PARENT
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_345)
// params?.height = LinearLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.BOTTOM
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
binding.ivClose.setOnClickListener {
dialog.dismiss()
close.invoke()
}
binding.tvView.setOnClickListener {
dialog?.dismiss()
view.invoke()
}
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.ui.guide
import android.view.View
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.ads.admob.AdmobNativeUtils
import com.base.pdfviewerscannerwhite.databinding.FragmentGuidePageBinding
import com.base.pdfviewerscannerwhite.helper.BaseFragment
class GuidePageFragment : BaseFragment<FragmentGuidePageBinding>() {
class GuidePageFragment(
val page: Int = 1
) : BaseFragment<FragmentGuidePageBinding>() {
override val binding: FragmentGuidePageBinding by lazy {
FragmentGuidePageBinding.inflate(layoutInflater)
}
override fun setView() {
AdmobNativeUtils.showNativeAd(requireActivity(), binding.flAd, R.layout.layout_admob_document_in)
when (page) {
1 -> {
binding.tvNo.text = "1 / "
binding.tv1.text = requireContext().getString(R.string.discover_the_feature_of_smart_pdf_reader)
binding.tv2.visibility = View.GONE
binding.iv.setImageResource(R.mipmap.ydyetu2)
binding.tvBtn.text = requireContext().getString(R.string.next)
}
2 -> {
binding.tvNo.text = "2 / "
binding.tv1.text = requireContext().getString(R.string.easy_and_immersive_to_read)
binding.tv2.visibility = View.VISIBLE
binding.tv2.text = getString(R.string.supports_pdf_doc_excel_ppt)
binding.iv.setImageResource(R.mipmap.ydyetu3)
binding.tvBtn.text = requireContext().getString(R.string.next)
}
3 -> {
binding.tvNo.text = "3 / "
binding.tv1.text = getString(R.string.pdf_toolkit_solutions)
binding.tv2.visibility = View.VISIBLE
binding.tv2.text = getString(R.string.convert_multiple_file_types)
binding.iv.setImageResource(R.mipmap.ydyetu4)
binding.tvBtn.text = requireContext().getString(R.string.go_to_start)
}
}
binding.tvBtn.setOnClickListener {
val activity = requireActivity() as GuideActivity
when (page) {
1 -> {
activity.changePage(1)
}
2 -> {
activity.changePage(2)
}
3 -> {
activity.finishToMain()
}
}
}
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.ui.permission
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.Environment
......@@ -14,6 +15,8 @@ import androidx.core.view.updatePadding
import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.guide.GuideActivity
import com.base.pdfviewerscannerwhite.utils.AppPreferences
import com.base.pdfviewerscannerwhite.utils.BarUtils
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import kotlinx.coroutines.MainScope
......@@ -52,7 +55,13 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMain()
val isGuide = AppPreferences.getInstance().getBoolean("isGuide", false)
if (!isGuide) {
AppPreferences.getInstance().put("isGuide", true)
startActivity(Intent(this@PermissionActivity, GuideActivity::class.java))
} else {
finishToMain()
}
}
binding.tvLater.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
......@@ -60,7 +69,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
binding.tvAllow.setOnClickListener {
requestStoragePermission(launcher, jumpAction = {
MainScope().launch {
if(!delayOpen()){
if (!delayOpen()) {
delayOpen()
}
}
......@@ -71,7 +80,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
}
@RequiresApi(Build.VERSION_CODES.R)
private suspend fun delayOpen():Boolean{
private suspend fun delayOpen(): Boolean {
delay(600)
if (Environment.isExternalStorageManager()) {
onBackPressedDispatcher.onBackPressed()
......
......@@ -2,8 +2,10 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:centerY="0.1"
android:angle="-90"
android:endColor="#00ffffff"
android:endColor="#ffffff"
android:startColor="#00B8DE" />
<corners
android:topLeftRadius="20dp"
......
......@@ -8,4 +8,10 @@
android:background="@color/white"
tools:context=".ui.guide.GuideActivity">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -3,15 +3,25 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
<View
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_height="0dp"
android:layout_marginTop="20dp"
android:background="@color/white"
app:layout_constraintBottom_toBottomOf="@id/ll"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/v"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/bg_00b8de_ffffff"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
......@@ -23,6 +33,7 @@
tools:ignore="ContentDescription" />
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
......@@ -48,6 +59,7 @@
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvView"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
......
......@@ -47,6 +47,7 @@
android:orientation="vertical">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
......@@ -56,6 +57,7 @@
android:textStyle="bold" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
......@@ -76,6 +78,7 @@
<TextView
android:id="@+id/tvBtn"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
......
......@@ -56,7 +56,7 @@
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/ad_advertiser"
android:id="@+id/ad_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
......
......@@ -371,6 +371,9 @@
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="easy_and_immersive_to_read">Easy and immersive to read</string>
<string name="go_to_start">Go to start !</string>
<string name="supports_pdf_doc_excel_ppt">Supports PDF,DOC,EXCEL,PPT</string>
<string name="pdf_toolkit_solutions">PDF Toolkit Solutions</string>
<string name="convert_multiple_file_types">Convert multiple file types</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment