当前位置: 首页 > wzjs >正文

html商城网站模板下载怎样做企业推广

html商城网站模板下载,怎样做企业推广,学前端的十大忠告,没网站怎么做京东联盟这一节主要了解一下Compose中的加水印,在开发中,有时候我们需要对应用界面做水印效果,水印是指覆盖在应用界面上的半透明标识或图案,通常用于版权声明、内容归属标记或安全防护,Compose中水印效果实现方式,…

        这一节主要了解一下Compose中的加水印,在开发中,有时候我们需要对应用界面做水印效果,水印是指覆盖在应用界面上的半透明标识或图案,通常用于版权声明、内容归属标记或安全防护,Compose中水印效果实现方式,简单总结如下:

场景:
1. 版权保护与内容归属
图片编辑类App在未保存作品上添加 “草稿” 水印;
文档阅读类App在页面显示用户账号或机构名称,防止截图外泄。
2. 安全与保密需求
敏感信息追踪:在内部系统添加包含用户ID、时间戳的动态水印,便于追溯泄露源头。
防截屏保护:部分金融类App通过水印提示 “截屏可能泄露信息”,增强安全警示。
3. 品牌与视觉识别
强化品牌认知:在产品演示界面、宣传材料中添加品牌logo水印,提升曝光度。
区分版本属性:免费版App添加 “试用版” 水印,付费版则隐藏,作为功能区分标识。

栗子:

使用LazyGrid

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp@Composable
fun WatermarkLazyGrid(markText: String,textStyle: TextStyle = TextStyle(fontSize = 14.sp,fontWeight = FontWeight.Normal,color = Color(0.5f, 0.5f, 0.5f, 0.3f)),columns: Int = 3,rows: Int = 5,rotation: Float = -25f,content: @Composable BoxScope.() -> Unit,
) {Box(modifier = Modifier.fillMaxSize()) {content()LazyVerticalGrid(columns = GridCells.Fixed(columns),modifier = Modifier.fillMaxSize().pointerInput(Unit) {awaitPointerEventScope {while (true) {awaitPointerEvent()}}}) {items(columns * rows) { index ->Box(modifier = Modifier.fillMaxSize().graphicsLayer {rotationZ = rotation},contentAlignment = Alignment.Center) {Text(text = markText,style = textStyle,modifier = Modifier.padding(16.dp))}}}}
}调用:WatermarkLazyGrid("HelloWorld") {FixedGridExample()}

 使用Canvas

import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.drawscope.rotate
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.drawText
import androidx.compose.ui.text.rememberTextMeasurer
import androidx.compose.ui.unit.sp@Composable
fun WatermarkOverlay(text: String,alpha: Float = 0.1f,textSize: androidx.compose.ui.unit.TextUnit = 18.sp,angle: Float = 30f,content: @Composable BoxScope.() -> Unit,
) {val textMeasurer = rememberTextMeasurer()Canvas(modifier = Modifier.fillMaxSize()) {val canvasWidth = size.widthval canvasHeight = size.heightval textLayoutResult = textMeasurer.measure(text = text,style = TextStyle(fontSize = textSize, color = Color.Black.copy(alpha = alpha)))val textWidth = textLayoutResult.size.width.toFloat()val textHeight = textLayoutResult.size.height.toFloat()val xStep = textWidth * 2val yStep = textHeight * 2for (x in -canvasWidth.toInt()..canvasWidth.toInt() step xStep.toInt()) {for (y in -canvasHeight.toInt()..canvasHeight.toInt() step yStep.toInt()) {rotate(degrees = angle, pivot = Offset(x.toFloat(), y.toFloat())) {drawText(textMeasurer = textMeasurer,text = text,topLeft = Offset(x.toFloat(), y.toFloat()))}}}}
}

用Modifier.graphicsLayer

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.offset
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.sp@Composable
fun WatermarkPlay(markText: String,textStyle: TextStyle = TextStyle(fontSize = 14.sp,fontWeight = FontWeight.Normal,color = Color(0.5f, 0.5f, 0.5f, 0.3f)),columns: Int = 3,rows: Int = 5,rotation: Float = -25f,content: @Composable BoxScope.() -> Unit,
) {Box(modifier = Modifier.fillMaxSize()) {content()BoxWithConstraints(modifier = Modifier.fillMaxSize()) {val boxWidth = constraints.maxWidth.toFloat()val boxHeight = constraints.maxHeight.toFloat()val horizontalSpacing = boxWidth / (columns + 1)val verticalSpacing = boxHeight / (rows + 1)for (row in 0 until rows) {for (col in 0 until columns) {val x = horizontalSpacing * (col + 1)val y = verticalSpacing * (row + 1)Text(text = markText,style = textStyle,modifier = Modifier.offset { IntOffset(x.toInt(), y.toInt()) }.graphicsLayer {rotationZ = rotationalpha = 0.3f // 透明度})}}}}
}使用:
WatermarkPlay("HelloWorld") {FixedGridExample()}
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.wear.compose.material.Card@Composable
fun FixedGridExample() {val items = List(6) { "Item $it" }LazyVerticalGrid(columns = GridCells.Fixed(3), // 固定3列contentPadding = PaddingValues(20.dp),verticalArrangement = Arrangement.spacedBy(4.dp),horizontalArrangement = Arrangement.spacedBy(12.dp)) {items(items) { item ->Card(onClick = {},modifier = Modifier.height(100.dp)) {Box(contentAlignment = Alignment.Center,modifier = Modifier.fillMaxSize()) {Text(item)}}}}
}

总结:
1. Canvas方案:
    适合复杂图案或高性能需求场景
    需要手动处理文本测量和绘制
2. Modifier方案:
    代码最简洁,利用Compose现有API
    适合简单文本水印场景
3. LazyGrid方案:
    布局最灵活,支持滚动和动态内容
    适合需要响应式布局的场景
    比Canvas和Modifier方案略重

注意:
1 透明度与可读性平衡,水印过深会影响主内容,过浅则起不到作用,建议使用alpha=0.1 ~ 0.2的半透明效果.
2 水印若覆盖在可点击元素上,可能拦截触摸事件,使用pointerInput(Unit) {}让水印层忽略触摸事件.    

http://www.dtcms.com/wzjs/196828.html

相关文章:

  • java做电影广告网站苏州网站建设开发公司
  • 互联网品牌推广深圳网站建设推广优化公司
  • 珠海网站建设策划方案bt搜索引擎
  • 织梦网站 数据库常熟seo关键词优化公司
  • 做同步网站百度网址输入
  • 东莞网站建设 乐云seo谷歌首页
  • 桂林市有几个区和县网络优化工资一般多少
  • 响应式网站开发技术银徽seo
  • 海口免费网站建站模板软文有哪些
  • 设计网站与建设seo基础视频教程
  • 前方网络网站建设合同手机网站建设公司
  • 网站优化西安武汉网站推广优化
  • 手机网站建设教程南宁网站建设
  • 在网站上如何做天气预报栏百度大数据查询
  • 一般网站建设费用预算网络营销专业技能
  • 如何做企业网站的更新营销策划培训
  • 企业网站如何做自然搜索苏州关键词优化搜索排名
  • 卖模具做哪个网站好营销型网站的分类不包含
  • wordpress 默认站点今日热搜前十名
  • 怎么把统计代码加到网站万网建站
  • 网站建设前台后台教程综合搜索引擎
  • 南通做百度网站的公司哪家好怎么去推广一个产品
  • 廊坊疫情最新情况搜索引擎优化的重要性
  • 四站合一网站建设推广普通话文字内容
  • 网站开发项目建设经验seo外链怎么发
  • 新昌做网站短视频推广策略
  • python导入wordpress西安seo排名
  • wordpress点击图片放大seo优化方案总结
  • 手机wap网站开发的cms系统宁波seo搜索优化费用
  • 蛋糕店网站模板江苏seo推广