puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.xw.yunwei
 
import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.os.Bundle
import android.view.View
import android.widget.FrameLayout
import androidx.databinding.ViewDataBinding
import com.xw.common.SecureScreenShot
import com.xw.common.base.BaseActivity
import com.xw.common.base.BaseViewModel
import com.xw.common.utils.BindUtils
import com.xw.yunwei.extension.dpToPx
import com.xw.yunwei.extension.spToPx
import com.xw.yunwei.ui.widget.WatermarkView
 
//基础业务activity,增加水印和防截屏
abstract class BaseBusinessActivity<V : ViewDataBinding, VM : BaseViewModel>() :
    BaseActivity<V, VM>() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        SecureScreenShot.apply(window)
    }
 
    override fun setContentView(view: View?) {
        val wrapWatermark = wrapWatermark(view)
        super.setContentView(wrapWatermark)
    }
 
    private fun wrapWatermark(view: View?): FrameLayout {
        val layout = FrameLayout(this)
        layout.addView(view)
        val watermarkView = WatermarkView(this)
        watermarkView.layoutParams = FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT
        ).also {
            it.topMargin = 88.dpToPx(this)
            it.bottomMargin = 66.dpToPx(this)
        }
        watermarkView.watermarkText = getWatermarkText()
        watermarkView.textColor = BindUtils.getResColor(R.color.color_0f31456a)
        watermarkView.isStaggered = false
        watermarkView.watermarkTextRotation = -15f
        watermarkView.spacingX = (375f / 2f).dpToPx(this)
        watermarkView.spacingY = 200f.dpToPx(this)
        watermarkView.textSize = 14f.spToPx(this)
        layout.addView(watermarkView)
        return layout
    }
 
    //获取水印文案
    protected fun getWatermarkText() = Constants.user?.let {
        "${it.nickName}-${it.phoneNumber}"
    } ?: ""
 
    //判断是否有无网络
    @SuppressLint("Deprecation")
    fun isNetworkAvailableLegacy(): Boolean {
        val connectivityManager =
            getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val network = connectivityManager.activeNetwork
            val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
            return networkCapabilities != null && (
                    networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
                            networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                    )
        } else {
            val networkInfo = connectivityManager.activeNetworkInfo
            return networkInfo != null && networkInfo.isConnected
        }
    }
}