思路:向四個(gè)方向移動(dòng)一個(gè)像素繪制一個(gè)重疊效果,在繪制正常文本,底部的文本就相當(dāng)于以陰影效果;
創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有十年的成都網(wǎng)站開(kāi)發(fā)建設(shè)經(jīng)驗(yàn),上1000+客戶的共同信賴。提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站開(kāi)發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、自適應(yīng)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
代碼如下:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.TextView; public class ShadowTextView extends TextView{ public ShadowTextView(Context context, AttributeSet attrs) { super(context, attrs); } protected void onDraw(Canvas canvas) { //先繪制一個(gè)邊框在調(diào)用父類的onDraw()方法,繪制正常文本 drawText(canvas); super.onDraw(canvas); } private void drawText(Canvas canvas) { //1.獲取畫(huà)筆對(duì)象,這里如果不用父類自己new的話要注意設(shè)置字體的大小,不然會(huì)使用默認(rèn)大小會(huì),字會(huì)很小 Paint paint = getPaint(); //2.獲取文本 String text = String.valueOf(getText()); //3.定位字體位置 //第一行左邊距 float startX = getLayout().getLineLeft(0); //第一行文字的底部邊距 float startY = getBaseline(); //分別向左,向上,向下,向右一個(gè)像素繪制文本形成重疊效果 paint.setColor(getResources().getColor(R.color.textShadowColor)); canvas.drawText(text, startX + 1, startY, paint); canvas.drawText(text, startX, startY - 1, paint); canvas.drawText(text, startX , startY + 1, paint); canvas.drawText(text, startX - 1, startY, paint); } }