Android自定義View實(shí)現(xiàn)簡(jiǎn)單文字描邊功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)簡(jiǎn)單文字描邊功能的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
實(shí)現(xiàn)代碼:
package com.example.zhangyu.myview.widget; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.RectF; import android.os.Build; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.view.View; import com.example.zhangyu.myview.R; public class TouchPullView extends View { //圓的半徑 private float mCircleRadius; private Paint paint; private Rect rect=new Rect(); private int count; public TouchPullView(Context context) { super(context); init(); } public TouchPullView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } /** * 初始化 */ private void init() { paint = new Paint(Paint.ANTI_ALIAS_FLAG); //設(shè)置抗鋸齒 paint.setAntiAlias(true); //設(shè)置防抖動(dòng) paint.setDither(true); //設(shè)置填充方式 paint.setStyle(Paint.Style.FILL_AND_STROKE); //View的點(diǎn)擊事件 setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { count++; invalidate();//重新繪制 } }); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //設(shè)置方形畫(huà)筆,背景。 paint.setColor(Color.YELLOW); //先繪制底板 canvas.drawRect(0, 0, getWidth(), getHeight(), paint); float x = getWidth() / 2; float y = getHeight() / 2; float offset = getWidth()/6; //繪制圓形 paint.setColor(Color.GRAY); mCircleRadius = offset*1.41f; canvas.drawCircle(x, y, mCircleRadius, paint); //繪制圖片 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.pic1); if (bitmap != null) { canvas.drawBitmap(bitmap,null,new RectF(x-offset,y-offset,x+offset,y+offset),paint); } //繪制文字外層的文字,邊框 String s = String.valueOf(count); paint.setStrokeWidth(10); paint.setColor(Color.RED); paint.setTextSize(100); paint.getTextBounds(s,0,s.length(),rect); float textWidth = rect.width(); float textHeight = rect.height(); x = getWidth()/2-textWidth/2; y = getHeight() / 2+textHeight/2; canvas.drawText(s, x, y, paint); //繪制文字 paint.setColor(Color.BLUE); paint.setStrokeWidth(0); canvas.drawText(s, x, y, paint); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中實(shí)現(xiàn)為T(mén)extView添加多個(gè)可點(diǎn)擊的文本
這篇文章主要介紹了Android中實(shí)現(xiàn)為T(mén)extView添加多個(gè)可點(diǎn)擊的文本,可實(shí)現(xiàn)類(lèi)似Android社交軟件顯示點(diǎn)贊用戶(hù)并通過(guò)用戶(hù)名稱(chēng)進(jìn)入該用戶(hù)主頁(yè)的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09Android控件之AnalogClock與DigitalClock用法實(shí)例分析
這篇文章主要介紹了Android控件之AnalogClock與DigitalClock用法,以實(shí)例形式分析了Android時(shí)鐘控件AnalogClock和DigitalClock用于顯示時(shí)間的具體使用技巧,需要的朋友可以參考下2015-09-09Android中使用CircleImageView和Cardview制作圓形頭像的方法
這篇文章主要介紹了Android中使用CircleImageView和Cardview制作圓形頭像的方法,簡(jiǎn)單介紹了CircleImageView和Cardview的使用,需要的朋友可以參考下2016-09-09Android布局中g(shù)ravity與layout_gravity屬性說(shuō)明
這篇文章主要介紹了Android布局中g(shù)ravity與layout_gravity屬性說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Android自定義左右或上下滑動(dòng)翻頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義左右或上下滑動(dòng)翻頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Android自定義布局實(shí)現(xiàn)仿qq側(cè)滑部分代碼
這篇文章主要為大家詳細(xì)介紹了自定義布局實(shí)現(xiàn)仿qq側(cè)滑Android部分代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android仿餓了么加入購(gòu)物車(chē)旋轉(zhuǎn)控件自帶閃轉(zhuǎn)騰挪動(dòng)畫(huà)的按鈕效果(實(shí)例詳解)
這篇文章主要介紹了Android仿餓了么加入購(gòu)物車(chē)旋轉(zhuǎn)控件自帶閃轉(zhuǎn)騰挪動(dòng)畫(huà)的按鈕效果(實(shí)例詳解)的相關(guān)資料,需要的朋友可以參考下2017-01-01Android Studio中CodeStyle模板的配置方式
這篇文章主要介紹了Android Studio中CodeStyle模板的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android中一個(gè)應(yīng)用實(shí)現(xiàn)多個(gè)圖標(biāo)的幾種方式
這篇文章主要給大家介紹了在Android中一個(gè)應(yīng)用如何實(shí)現(xiàn)多個(gè)圖標(biāo)的幾種方式,其中包括了多Activity + intent-filter方式、activity-alias方式以及網(wǎng)頁(yè)標(biāo)簽-添加快捷方式,分別給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒。2017-05-05