Commit 86df1873 authored by wanglei's avatar wanglei

...

parent 0ac096b7
...@@ -13,7 +13,6 @@ import com.base.pdfviewerscannerwhite.utils.ActivityLauncher ...@@ -13,7 +13,6 @@ import com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils import com.base.pdfviewerscannerwhite.utils.ActivityManagerUtils
import com.base.pdfviewerscannerwhite.utils.LanguageUtils.changeAppLanguage import com.base.pdfviewerscannerwhite.utils.LanguageUtils.changeAppLanguage
import com.base.pdfviewerscannerwhite.utils.LogEx import com.base.pdfviewerscannerwhite.utils.LogEx
import java.util.Locale
abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() { abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
private val TAG = "BaseActivity" private val TAG = "BaseActivity"
......
package com.base.pdfviewerscannerwhite.ui.guide 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.databinding.ActivityGuideBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.guide.GuideDialog.showGuideDialog
class GuideActivity : BaseActivity<ActivityGuideBinding>() { 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 { override val binding: ActivityGuideBinding by lazy {
ActivityGuideBinding.inflate(layoutInflater) ActivityGuideBinding.inflate(layoutInflater)
} }
override fun initView() { 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 ...@@ -4,11 +4,15 @@ import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.view.Gravity import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.LinearLayout
import com.base.pdfviewerscannerwhite.databinding.DialogGuideBinding import com.base.pdfviewerscannerwhite.databinding.DialogGuideBinding
object GuideDialog { object GuideDialog {
fun Context.showGuideDialog() { fun Context.showGuideDialog(
close: () -> Unit,
view: () -> Unit
) {
val dialog = AlertDialog.Builder(this).create() val dialog = AlertDialog.Builder(this).create()
val binding = DialogGuideBinding.inflate(LayoutInflater.from(this)) val binding = DialogGuideBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root) dialog.setView(binding.root)
...@@ -17,11 +21,21 @@ object GuideDialog { ...@@ -17,11 +21,21 @@ object GuideDialog {
dialog.show() dialog.show()
val params = dialog.window?.attributes val params = dialog.window?.attributes
params?.width = LinearLayout.LayoutParams.MATCH_PARENT
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_345) // params?.width = resources.getDimensionPixelOffset(R.dimen.dp_345)
// params?.height = LinearLayout.LayoutParams.WRAP_CONTENT // params?.height = LinearLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.BOTTOM params?.gravity = Gravity.BOTTOM
dialog.window?.attributes = params dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) 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 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.databinding.FragmentGuidePageBinding
import com.base.pdfviewerscannerwhite.helper.BaseFragment import com.base.pdfviewerscannerwhite.helper.BaseFragment
class GuidePageFragment : BaseFragment<FragmentGuidePageBinding>() { class GuidePageFragment(
val page: Int = 1
) : BaseFragment<FragmentGuidePageBinding>() {
override val binding: FragmentGuidePageBinding by lazy { override val binding: FragmentGuidePageBinding by lazy {
FragmentGuidePageBinding.inflate(layoutInflater) FragmentGuidePageBinding.inflate(layoutInflater)
} }
override fun setView() { 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 package com.base.pdfviewerscannerwhite.ui.permission
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Build import android.os.Build
import android.os.Environment import android.os.Environment
...@@ -14,6 +15,8 @@ import androidx.core.view.updatePadding ...@@ -14,6 +15,8 @@ import androidx.core.view.updatePadding
import com.base.pdfviewerscannerwhite.R import com.base.pdfviewerscannerwhite.R
import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity 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.BarUtils
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
...@@ -52,7 +55,13 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() { ...@@ -52,7 +55,13 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
onBackPressedDispatcher.addCallback { 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 { binding.tvLater.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
...@@ -60,7 +69,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() { ...@@ -60,7 +69,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
binding.tvAllow.setOnClickListener { binding.tvAllow.setOnClickListener {
requestStoragePermission(launcher, jumpAction = { requestStoragePermission(launcher, jumpAction = {
MainScope().launch { MainScope().launch {
if(!delayOpen()){ if (!delayOpen()) {
delayOpen() delayOpen()
} }
} }
...@@ -71,7 +80,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() { ...@@ -71,7 +80,7 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
} }
@RequiresApi(Build.VERSION_CODES.R) @RequiresApi(Build.VERSION_CODES.R)
private suspend fun delayOpen():Boolean{ private suspend fun delayOpen(): Boolean {
delay(600) delay(600)
if (Environment.isExternalStorageManager()) { if (Environment.isExternalStorageManager()) {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
......
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient <gradient
android:centerY="0.1"
android:angle="-90" android:angle="-90"
android:endColor="#00ffffff" android:endColor="#ffffff"
android:startColor="#00B8DE" /> android:startColor="#00B8DE" />
<corners <corners
android:topLeftRadius="20dp" android:topLeftRadius="20dp"
......
...@@ -8,4 +8,10 @@ ...@@ -8,4 +8,10 @@
android:background="@color/white" android:background="@color/white"
tools:context=".ui.guide.GuideActivity"> 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> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -3,15 +3,25 @@ ...@@ -3,15 +3,25 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:background="@color/transparent"> android:background="@color/transparent">
<View <View
android:layout_width="match_parent" 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" android:background="@drawable/bg_00b8de_ffffff"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ImageView
android:id="@+id/iv_close" android:id="@+id/iv_close"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -23,6 +33,7 @@ ...@@ -23,6 +33,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<LinearLayout <LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
...@@ -48,6 +59,7 @@ ...@@ -48,6 +59,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/tvView"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tv1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
...@@ -56,6 +57,7 @@ ...@@ -56,6 +57,7 @@
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tv2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
...@@ -76,6 +78,7 @@ ...@@ -76,6 +78,7 @@
<TextView <TextView
android:id="@+id/tvBtn"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/ad_advertiser" android:id="@+id/ad_body"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
......
...@@ -371,6 +371,9 @@ ...@@ -371,6 +371,9 @@
<string name="hello_blank_fragment">Hello blank fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string>
<string name="easy_and_immersive_to_read">Easy and immersive to read</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="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> </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