国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android實現文字水印效果 支持多行水印

2019-10-21 21:36:32
字體:
來源:轉載
供稿:網友

特點

支持多行水印,支持自定義角度,支持自定義文字大小。

原理:

使用一個TextView 占據整個頁面。在TextView基礎上面打水印。

用法:

具體的view在

package cn.fulushan.watermark.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.ColorFilter;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.drawable.Drawable;import android.support.annotation.IntRange;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import java.util.List;/** * Created by fulushan on 18/4/5. */public class WaterMarkBg extends Drawable {  private Paint paint = new Paint();  private List<String> labels;  private Context context;  private int degress;//角度  private int fontSize;//字體大小 單位sp  /**   * 初始化構造   * @param context 上下文   * @param labels 水印文字列表 多行顯示支持   * @param degress 水印角度   * @param fontSize 水印文字大小   */  public WaterMarkBg(Context context,List<String> labels, int degress,int fontSize) {    this.labels = labels;    this.context = context;    this.degress = degress;    this.fontSize = fontSize;  }  @Override  public void draw(@NonNull Canvas canvas) {    int width = getBounds().right;    int height = getBounds().bottom;    canvas.drawColor(Color.parseColor("#40F3F5F9"));    paint.setColor(Color.parseColor("#50AEAEAE"));    paint.setAntiAlias(true);    paint.setTextSize(sp2px(context,fontSize));    canvas.save();    canvas.rotate(degress);    float textWidth = paint.measureText(labels.get(0));    int index = 0;    for (int positionY = height / 10; positionY <= height; positionY += height / 10+80) {      float fromX = -width + (index++ % 2) * textWidth;      for (float positionX = fromX; positionX < width; positionX += textWidth * 2) {        int spacing = 0;//間距        for(String label:labels){          canvas.drawText(label, positionX, positionY+spacing, paint);          spacing = spacing+50;        }      }    }    canvas.restore();  }  @Override  public void setAlpha(@IntRange(from = 0, to = 255) int alpha) {  }  @Override  public void setColorFilter(@Nullable ColorFilter colorFilter) {  }  @Override  public int getOpacity() {    return PixelFormat.UNKNOWN;  }  public static int sp2px(Context context, float spValue) {    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;    return (int) (spValue * fontScale + 0.5f);  }}

具體的用法

public class MainActivity extends AppCompatActivity {  private TextView bg_tv;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    bg_tv = findViewById(R.id.bg_tv);    SimpleDateFormat createTimeSdf1 = new SimpleDateFormat("yyyy-MM-dd");    List<String> labels = new ArrayList<>();    labels.add("用戶名:張三");    labels.add("日期:"+ createTimeSdf1.format(new Date()));    labels.add("不可擴散");    bg_tv.setBackgroundDrawable(new WaterMarkBg(MainActivity.this,labels,-30,13));  }}

效果圖

android,文字水印

github源碼地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大悟县| 抚顺市| 万盛区| 资兴市| 五原县| 遵义市| 新建县| 林西县| 田林县| 杂多县| 兴化市| 枣阳市| 达州市| 隆德县| 斗六市| 靖边县| 同德县| 安康市| 灵璧县| 稷山县| 志丹县| 盐津县| 康保县| 得荣县| 通河县| 讷河市| 寻乌县| 玛沁县| 富蕴县| 宝山区| 舞阳县| 绵阳市| 合江县| 肥东县| 娄底市| 万年县| 娱乐| 遂昌县| 桂东县| 昭通市| 贵定县|