Commit 2e4888a5 authored by wanglei's avatar wanglei

...修复常驻起来的时间

parent e55bfa32
......@@ -7,7 +7,7 @@
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" /> <!---->
android:required="false" /> <!-- -->
<!-- 获取wifi列表 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
......@@ -16,7 +16,7 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" /> <!---->
<uses-permission android:name="android.permission.CAMERA" /> <!-- -->
<!-- 前台服务 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
......@@ -35,6 +35,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.ScanQR"
tools:targetApi="31">
<activity
android:name=".ui.message.MessageCodeActivity"
android:exported="false" />
<activity
android:name=".ui.message.MessageActivity"
android:exported="false" />
<activity
android:name=".ui.contact.ContractCodeActivity"
android:exported="false" />
......
......@@ -29,7 +29,6 @@ import com.base.scanqr.ui.start.StartActivity
import com.base.scanqr.utils.ActivityManagerUtils
import com.base.scanqr.utils.AppPreferences
import com.base.scanqr.utils.LogEx
import com.base.scanqr.utils.SolarEngineUtils
import com.base.scanqr.utils.SolarEngineUtils.initSolarEngine
import com.base.scanqr.utils.SolarEngineUtils.solarkey
import com.base.scanqr.utils.WriteLogEx.writeLogFile
......@@ -117,6 +116,12 @@ class MyApplication : Application() {
}
private fun initApp() {
//前台服务
kotlin.runCatching {
startJob()
}
//初始化广告相关业务
AdsMgr.init(appContext)
......@@ -148,10 +153,6 @@ class MyApplication : Application() {
//开启通知队列
MyNotificationManager.startNotificationQueue()
//前台服务
kotlin.runCatching {
startJob()
}
appContext.initSolarEngine(true)
}
......
package com.base.scanqr.bean
//smsto:17780524024:问问嗯嗯嗯
data class MessageUIBean(
var smsto: String = "",
var msg: String = ""
) : ScanBean(FunctionUIBean.KEY_MESSAGE) {
companion object {
fun isMessageQR(qrCodeValue: String): Boolean {
if (qrCodeValue.startsWith("smsto:")) {
return true
}
return false
}
fun createMessageQrString(bean: MessageUIBean): String {
val qrContent = StringBuilder()
qrContent.append("smsto:").append(bean.smsto).append(":").append(bean.msg)
return qrContent.toString()
}
fun createMessageBean(qrCodeValue: String): MessageUIBean {
val messageUIBean = MessageUIBean()
val split = qrCodeValue.split(":")
kotlin.runCatching {
messageUIBean.smsto = split[1]
messageUIBean.msg = split[2]
}
return messageUIBean
}
}
}
......@@ -31,8 +31,6 @@ object EventUtils {
if (!ifAgreePrivacy) {
return
}
LogEx.logDebug(TAG, "key=$key ext=$ext")
Thread {
var paramJson: String? = ""
try {
......@@ -65,7 +63,7 @@ object EventUtils {
} catch (e: JSONException) {
paramJson = ""
}
LogEx.logDebug(TAG, "key=$key url=$url")
// LogEx.logDebug(TAG, "key=$key url=$url")
doPost(
url,
......
......@@ -34,14 +34,16 @@ class StayJobService : JobService() {
val NOTIFICATION_STAY_ID = 286
private var isRunning = false
private const val JOB_INFO_ID: Int = 101
private var startJobTime = 0L
private val minimumLatency = if (BuildConfig.DEBUG) 5000L else 5000L
fun Context.startJob() {
if (isRunning) return
LogEx.logDebug(TAG, "startJob")
startJobTime = System.currentTimeMillis()
val jobScheduler = getSystemService(JOB_SCHEDULER_SERVICE) as JobScheduler
val componentName = ComponentName(this, StayJobService::class.java)
val jobInfo = JobInfo.Builder(JOB_INFO_ID, componentName)
.setMinimumLatency(30000)
.setMinimumLatency(minimumLatency)
.build()
jobScheduler.schedule(jobInfo)
}
......@@ -66,6 +68,8 @@ class StayJobService : JobService() {
startForeground(NOTIFICATION_STAY_ID, notification)
}
isRunning = true
EventUtils.event("startForeground")
LogEx.logDebug(TAG, "startForeground")
} catch (e: Exception) {
EventUtils.event("start_foreground_service_error")
}
......@@ -86,6 +90,9 @@ class StayJobService : JobService() {
override fun onCreate() {
LogEx.logDebug(TAG, "onCreate isRunning=$isRunning")
if (!isRunning) {
val startTime = System.currentTimeMillis() - startJobTime
LogEx.logDebug(TAG, "onCreate startTime=$startTime")
EventUtils.event("StayJobService_onCreate", "startTime=$startTime")
isRunning = true
startForeground()
Timer().start()
......
......@@ -11,6 +11,7 @@ import com.base.scanqr.bean.FunctionUIBean
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EVENT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_MESSAGE
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TELEPHONE
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE
......@@ -19,6 +20,7 @@ import com.base.scanqr.databinding.FragmentCreateBinding
import com.base.scanqr.ui.contact.ContractActivity
import com.base.scanqr.ui.email.EmailActivity
import com.base.scanqr.ui.event.EventActivity
import com.base.scanqr.ui.message.MessageActivity
import com.base.scanqr.ui.telephone.TelephoneActivity
import com.base.scanqr.ui.text.TextActivity
import com.base.scanqr.ui.website.WebsiteActivity
......@@ -47,7 +49,7 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
FunctionUIBean(KEY_CONTACT, R.mipmap.h_contact, resources.getString(R.string.contact)),
// FunctionUIBean(KEY_LOCATION, R.mipmap.h_loction, resources.getString(R.string.location)),
FunctionUIBean(KEY_TELEPHONE, R.mipmap.h_telephone, resources.getString(R.string.telephone)),
// FunctionUIBean(KEY_MESSAGE, R.mipmap.h_message, resources.getString(R.string.message)),
FunctionUIBean(KEY_MESSAGE, R.mipmap.h_message, resources.getString(R.string.message)),
)
)
adapter?.itemClick = { key ->
......@@ -100,6 +102,10 @@ class CreateFragment : BaseFragment<FragmentCreateBinding>(FragmentCreateBinding
KEY_CONTACT -> {
startActivity(Intent(requireContext(), ContractActivity::class.java))
}
KEY_MESSAGE -> {
startActivity(Intent(requireContext(), MessageActivity::class.java))
}
}
}
......
......@@ -2,7 +2,6 @@ package com.base.scanqr.ui.main
import android.content.Intent
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.widget.TextView
import androidx.activity.addCallback
......
package com.base.scanqr.ui.message
import android.content.Intent
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.core.widget.addTextChangedListener
import com.base.scanqr.R
import com.base.scanqr.ads.AdsMgr
import com.base.scanqr.ads.AdsShowCallBack
import com.base.scanqr.base.BaseActivity
import com.base.scanqr.bean.MessageUIBean
import com.base.scanqr.databinding.ActivityMessageBinding
import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.ToastUtils.toast
import com.google.gson.Gson
class MessageActivity : BaseActivity<ActivityMessageBinding>(ActivityMessageBinding::inflate) {
private var messageUIBean = MessageUIBean()
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_app_exit)
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
AdsMgr.showInsert(this@MessageActivity, false, object : AdsShowCallBack() {
override fun close(where: Int) {
finishToMainTop()
}
override fun failed(where: Int) {
finishToMainTop()
}
override fun googleFailed(where: Int) {
finishToMainTop()
}
})
}
binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.editPhone.addTextChangedListener { s ->
messageUIBean.smsto = s.toString()
}
binding.editContent.addTextChangedListener { s ->
messageUIBean.msg = s.toString()
}
binding.flQueren.setOnClickListener {
if (messageUIBean.smsto.isEmpty()) {
toast("Enter phone number", true)
return@setOnClickListener
}
if (messageUIBean.msg.isEmpty()) {
toast("Enter your message here...", true)
return@setOnClickListener
}
startActivity(Intent(this, MessageCodeActivity::class.java).apply {
putExtra("data", Gson().toJson(messageUIBean))
})
finish()
}
}
}
\ No newline at end of file
package com.base.scanqr.ui.message
import android.os.Environment
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import com.base.scanqr.R
import com.base.scanqr.ads.AdsMgr
import com.base.scanqr.ads.AdsShowCallBack
import com.base.scanqr.base.BaseActivity
import com.base.scanqr.bean.FunctionUIBean
import com.base.scanqr.bean.MessageUIBean
import com.base.scanqr.databinding.ActivityMessageCodeBinding
import com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import com.base.scanqr.utils.ClipboardUtils.copyText
import com.base.scanqr.utils.IntentUtils.intentShareImage
import com.base.scanqr.utils.LogEx
import com.base.scanqr.utils.QRCodeUtils.generateQRCode
import com.base.scanqr.utils.SpJsonUtils
import com.base.scanqr.utils.ToastUtils.toast
import com.google.gson.Gson
import java.io.File
class MessageCodeActivity : BaseActivity<ActivityMessageCodeBinding>(ActivityMessageCodeBinding::inflate) {
private var messageUIBean = MessageUIBean()
private var messageQrString = ""
private var tempImage: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
AdsMgr.showBanner(binding.flBanner, false)
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_item)
val data = intent.extras?.getString("data")
data?.let {
messageUIBean = Gson().fromJson(data, MessageUIBean::class.java)
binding.tvTel.text = messageUIBean.smsto
binding.tvMsg.text = messageUIBean.msg
}
Thread {
messageQrString = MessageUIBean.createMessageQrString(messageUIBean)
LogEx.logDebug(TAG, "messageQrString=$messageQrString")
val bitmap = generateQRCode(messageQrString, 735, 735, 5)
runOnUiThread {
binding.ivQr.setImageBitmap(bitmap)
val file = File(cacheDir, System.currentTimeMillis().toString() + ".jpg")
bitmap?.let {
val flag = saveBitmapToFile(it, file.absolutePath)
LogEx.logDebug(TAG, "flag=$flag tempImage=${file.absolutePath}")
if (flag) {
tempImage = file.absolutePath
}
}
if (messageUIBean.needCreate) {
messageUIBean.needCreate = false
SpJsonUtils.addJsonBean<MessageUIBean>(FunctionUIBean.KEY_MESSAGE, messageUIBean)
}
}
}.start()
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
AdsMgr.showInsert(this@MessageCodeActivity, false, object : AdsShowCallBack() {
override fun close(where: Int) {
finishToMainTop()
}
override fun failed(where: Int) {
finishToMainTop()
}
override fun googleFailed(where: Int) {
finishToMainTop()
}
})
}
binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.llShare.setOnClickListener {
val intent = intentShareImage(this, tempImage)
runCatching {
startActivity(intent)
}
}
binding.llPdf.setOnClickListener {
toast("没实现")
}
binding.llDownload.setOnClickListener {
kotlin.runCatching {
val appFile = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
this.resources.getString(R.string.app_name)
)
if (!appFile.exists()) appFile.mkdirs()
var newName = File(tempImage).name
showInputNameDialog(newName) { name ->
if (name.endsWith(".jpg")) {
name.also { newName = it }
} else {
newName = "$name.jpg"
}
val downFile = File(appFile, newName)
downFile.createNewFile()
File(tempImage).copyTo(downFile, true)
toast("Save to:${appFile.absolutePath}", true)
}
}
}
binding.llCopy.setOnClickListener {
copyText(TAG, messageQrString)
toast("Copied to clipboard", true)
}
binding.flSearch.setOnClickListener {
// val intent = intentAddCalendar(eventUIBean)
// try {
// startActivity(intent)
// finish()
// } catch (e: Exception) {
// toast("No application was found to handle the calendar event request", true)
// }
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.website.WebsiteActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@string/message"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/fl_back"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/fl_queren"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/queren"
tools:ignore="ContentDescription" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="18dp"
android:text="@string/phone"
android:textColor="#6473F8"
android:textSize="16sp" />
<EditText
android:id="@+id/editPhone"
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bg_f4f4f4_15"
android:hint="@string/to"
android:inputType="phone"
android:paddingHorizontal="14dp"
android:textColor="@color/black"
android:textColorHint="#999999"
tools:ignore="Autofill" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:text="@string/content"
android:textColor="#6473F8"
android:textSize="16sp"
tools:ignore="TextContrastCheck" />
<TextView
android:id="@+id/tv_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:text="1000"
android:textColor="#999999"
android:textSize="16sp"
tools:ignore="HardcodedText,TextContrastCheck" />
</FrameLayout>
<EditText
android:id="@+id/editContent"
android:layout_width="match_parent"
android:layout_height="124dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:background="@drawable/bg_f4f4f4_15"
android:gravity="start"
android:hint="@string/enter_your_text_here"
android:padding="15dp"
android:textColorHint="#999999"
android:textSize="16sp"
tools:ignore="Autofill,TextFields,TextContrastCheck,VisualLintTextFieldSize" />
<com.base.scanqr.ads.NativeParentView
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/bg_ecf6ff_10"
android:minHeight="258dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent">
<io.supercharge.shimmerlayout.ShimmerLayout
android:id="@+id/shimmerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="16dp"
app:shimmer_angle="25"
app:shimmer_animation_duration="2000"
app:shimmer_auto_start="true"
app:shimmer_color="#33ffffff"
app:shimmer_mask_width="0.2">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/zhanweitu"
tools:ignore="ContentDescription,ImageContrastCheck" />
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqr.ads.NativeParentView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".ui.website.WebsiteCodeActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@string/message"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/fl_back"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/fl_banner"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="195dp"
android:layout_height="195dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
app:cardCornerRadius="20dp"
app:cardElevation="5dp">
<ImageView
android:id="@+id/iv_qr"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:scaleType="fitXY"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
<com.base.scanqr.ads.NativeParentView
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="24dp"
android:background="@drawable/bg_ecf6ff_20"
android:minHeight="133dp">
<io.supercharge.shimmerlayout.ShimmerLayout
android:id="@+id/shimmerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="16dp"
app:shimmer_angle="25"
app:shimmer_animation_duration="2000"
app:shimmer_auto_start="true"
app:shimmer_color="#33ffffff"
app:shimmer_mask_width="0.2">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/czhanweitu"
tools:ignore="ContentDescription,ImageContrastCheck" />
</io.supercharge.shimmerlayout.ShimmerLayout>
</com.base.scanqr.ads.NativeParentView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="15dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginTop="12dp"
android:text="Sms to:"
android:textColor="#666666"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="17dp"
android:src="@mipmap/phoneicon"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvTel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="5dp"
android:textColor="#6473F8"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="17dp"
android:src="@mipmap/xiaoxi"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvMsg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="5dp"
android:textColor="#6473F8"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginHorizontal="14dp"
android:layout_marginTop="8dp"
android:background="#E2E2E2" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="98dp"
android:layout_marginVertical="8dp"
app:layout_constraintBottom_toTopOf="@id/fl_search"
app:layout_constraintTop_toBottomOf="@id/ll_content"
tools:ignore="DisableBaselineAlignment">
<LinearLayout
android:id="@+id/ll_share"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/w_share"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/share"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_pdf"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/w_export"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/export_to_pdf"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_download"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/w_download"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/download"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_copy"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/w_copy"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/copy"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/fl_search"
android:layout_width="171dp"
android:layout_height="30dp"
android:layout_marginBottom="12dp"
android:background="@drawable/bg_stroke_6473f8_90"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:ignore="UseCompoundDrawables,UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/h_lianjie"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="4dp"
android:includeFontPadding="false"
android:text="@string/search_on_the_web"
android:textColor="#6473F8"
android:textSize="11sp" />
</LinearLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<FrameLayout
android:id="@id/fl_banner"
android:layout_width="match_parent"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ 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