自定義View 水印 前景色 MD

2022-05-08 22:30:10 字數 1883 閱讀 9430

博文位址

我的github

我的部落格

我的郵箱

baiqiantao

baiqiantao

bqt20094

[email protected]

目錄第二種實現方式

可以在 baseactivity 中將水印布局設為根布局

<?xml version="1.0" encoding="utf-8"?>

繪製水印時,可以選擇在ondrawforeground上繪製前景色(蓋在所有view的上面),也可以選擇在ondraw上繪製背景色(會被所有view的背景遮蓋)。

如果需要用到繼承自其他其他layout的水印布局,則只需將繼承的類改為relativelayoutlinearlayout即可,其他什麼都不需要更改。

public class markframelayout extends framelayout 

public markframelayout(@nonnull context context, @nullable attributeset attrs)

}@override

public void ondrawforeground(canvas canvas)

}@override

protected void ondraw(canvas canvas)

}private void initwaterpaint()

private void drawmark(canvas canvas)

public void setshowmark(boolean showmark)

}

參考

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

listlabels = new arraylist<>();

labels.add("使用者名稱:張三");

labels.add("日期:2021-6-14");

labels.add("不可擴散");

watermarkbg bgdrawable=new watermarkbg(this, labels, -10, 10);

framelayout rootview = findviewbyid(r.id.layout);

rootview.setforeground(bgdrawable);

textview bg_tv = findviewbyid(r.id.bg_tv);

bg_tv.setbackgrounddrawable(bgdrawable);

public class watermarkbg extends drawable 

@override

public void draw(@nonnull canvas canvas) }}

canvas.restore();

}@override

public void setalpha(@intrange(from = 0, to = 255) int alpha)

@override

public void setcolorfilter(@nullable colorfilter colorfilter)

@override

public int getopacity()

private static int sp2px(context context, float spvalue)

}

2018-10-13

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...

自定義view 二

自定義view的最重要的乙個部分是自定義它的外觀。根據你的程式的需求,通過ondraw方法實現繪製。在ondraw中,會傳遞給你乙個canvas。canvas封裝了繪製圖形的方法。還需要自定義乙個 paint去定義顏色樣式的填充 簡單來說 canvas定義你在螢幕上畫的圖形,而paint定義顏色,樣...