日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android自定义View Paint

發布時間:2024/9/30 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android自定义View Paint 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/123524086
本文出自【趙彥軍的博客】

文章目錄

  • 畫筆模式
  • 畫線條
  • 畫圓
  • 畫矩形
  • 畫弧形
  • 其他
  • 清空畫筆樣式
  • 實戰-繪制圓環
  • 實戰-圓環中繪制文字

本文示例代碼詳見:https://gitee.com/zhaoyanjun/text-draw

畫筆模式

mPaint.setStyle(Paint.Style.FILL); //設置畫筆模式為填充
  • STROKE //描邊
  • FILL //填充
  • FILL_AND_STROKE //描邊加填充

實驗代碼

Paint paint = new Paint(); paint.setColor(Color.BLUE); paint.setStrokeWidth(40); //為了實驗效果明顯,特地設置描邊寬度非常大// 描邊 paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(200,200,100,paint);// 填充 paint.setStyle(Paint.Style.FILL); canvas.drawCircle(200,500,100,paint);// 描邊加填充 paint.setStyle(Paint.Style.FILL_AND_STROKE); canvas.drawCircle(200, 800, 100, paint);

畫線條

class MyView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {private val paint = Paint()init {paint.color = resources.getColor(R.color.black, null) //畫筆顏色paint.isAntiAlias = true //抗鋸齒paint.strokeWidth = 30f //畫筆寬度}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)val startX = width / 2fval startY = height / 2f//畫線條canvas.drawLine(startX, startY, startX + 200, startY + 200, paint)} }

效果圖

setStrokeCap(Paint.Cap cap)

設置線冒樣式,取值有

  • Cap.ROUND(圓形線冒)
  • Cap.SQUARE(方形線冒)
  • Paint.Cap.BUTT(無線冒)

注意:冒多出來的那塊區域就是線帽!就相當于給原來的直線加上一個帽子一樣,所以叫線帽

setStrokeJoin(Paint.Join join)

設置線段連接處樣式,取值有:

  • Join.MITER(結合處為銳角)、
  • Join.Round(結合處為圓弧)、
  • Join.BEVEL(結合處為直線)

畫圓

canvas.drawCircle(startX, startY, 100f, paint)

畫矩形

canvas.drawRect(startX, startY, startX + 100, startY + 100, paint)

畫弧形

canvas.drawArc(rectF, 30f, 180f, true, paint)

其他

setStrokeWidth(float width) 設置畫筆寬度 setAntiAlias(boolean aa) //抗鋸齒

清空畫筆樣式

//清空畫筆復位 reset()

源碼如此:

實戰-繪制圓環

效果圖

class MyView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {private val paint = Paint()private val radius = 300finit {paint.color = resources.getColor(R.color.black, null) //畫筆顏色paint.isAntiAlias = true //抗鋸齒}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)val startX = width / 2fval startY = height / 2f//繪制圓環paint.color = Color.parseColor("#dddddd")paint.strokeWidth = 30fpaint.style = Paint.Style.STROKEcanvas.drawCircle(startX, startY, radius, paint)//繪制弧形paint.color = Color.REDpaint.strokeCap = Paint.Cap.ROUNDval rectF = RectF(startX - radius, startY - radius, startX + radius, startY + radius)canvas.drawArc(rectF, -90f, 225f, false, paint)} }

實戰-圓環中繪制文字


重要的是文字居中顯示。

計算文字在圓環中的居中文字,有兩種方式:

  • 方式一:paint.getTextBounds(content, 0, content.length, bounds)
  • 方式二:val fontMetrics = paint.fontMetrics

具體示例,如下所示:

class MyView(context: Context, attrs: AttributeSet?) : View(context, attrs) {private val paint = Paint()private val radius = 300finit {paint.isAntiAlias = true //抗鋸齒}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)val startX = width / 2fval startY = height / 2f//繪制圓環paint.color = Color.parseColor("#dddddd")paint.strokeWidth = 30fpaint.style = Paint.Style.STROKEcanvas.drawCircle(startX, startY, radius, paint)//繪制弧形paint.color = Color.REDpaint.strokeCap = Paint.Cap.ROUNDval rectF = RectF(startX - radius, startY - radius, startX + radius, startY + radius)canvas.drawArc(rectF, -90f, 225f, false, paint)//繪制文字val content = "ababcfp"paint.textSize = 80fpaint.style = Paint.Style.FILL//居中繪制paint.textAlign = Paint.Align.CENTER//加載字體paint.typeface = ResourcesCompat.getFont(context, R.font.fangzheng)//獲取文字的的邊界,這個邊界基于文字baselineval bounds = Rect()paint.getTextBounds(content, 0, content.length, bounds)//獲取邊界的高度val boundHeight = bounds.bottom - bounds.topcanvas.drawText(content, startX, startY + boundHeight / 2, paint)//方式二val fontMetrics = paint.fontMetricsval boundHeight2 = fontMetrics.descent - fontMetrics.ascentcanvas.drawText(content, startX, startY + boundHeight2 / 2, paint)} }

總結

以上是生活随笔為你收集整理的Android自定义View Paint的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄网站免费在线 | av在线一区二区 | 玖色视频| 国产色视频网站 | 女同视频网站 | 欧美日韩亚洲一区二区三区 | 7mav视频| 国产麻豆乱码精品一区二区三区 | 欧美性猛交xxxx免费看 | 色呦网站 | 欧美日韩一级大片 | 久久免费黄色网址 | 精品一区二区三区在线视频 | 亚洲一区二区综合 | 九九热这里有精品视频 | 特黄一区| 警察高h荡肉呻吟男男 | 特黄三级又爽又粗又大 | 精品亚洲在线 | 天堂精品在线 | 香蕉视频成人在线观看 | 免费在线播放视频 | 久久综合一区二区 | 亚洲精品一区二区三区不卡 | 欧美激情精品久久久久久蜜臀 | 中文字幕在线官网 | 九九超碰 | 久草国产在线观看 | 在线观视频免费观看 | 国产精品扒开腿做爽爽爽a片唱戏 | 狠狠躁夜夜躁人人爽天天高潮 | 色婷婷国产精品综合在线观看 | 欧美黑人多人双交 | 精品久久久久久久久久久久久 | 国产成人主播 | 国产成人+综合亚洲+天堂 | 日本黄色免费视频 | 轮番上阵免费观看在线电影 | 欧美aaaaaaaaaa| 久操视频在线观看 | 日本高清不卡视频 | 精品蜜桃av | 黄色69视频 | 欧美做受高潮中文字幕 | 免费的黄色的视频 | caoporn视频在线 | 精品人妻一区二区三区浪潮在线 | 日本aⅴ片| 蜜乳av一区 | 色婷婷国产精品综合在线观看 | 日韩精品av一区二区三区 | 国产一区二区在线视频观看 | japanese强行粗暴 | 亚洲成人一区二区在线观看 | 国产又黄又粗 | 亚洲天堂手机 | 午夜精品久久久内射近拍高清 | 国产区一区二 | 中文字幕一区二区三区日韩精品 | 黑人日批视频 | 国产成年网站 | 免费黄片毛片 | 一级做a爰片久久毛片潮喷 天天透天天干 | 人妻少妇偷人精品无码 | 九色自拍| 美女一二区 | 国产视频a| 亚洲乱码国产乱码精品天美传媒 | 欧美精品日韩在线 | 日本一区二区高清免费 | 国产精品theporn88 | 深夜视频在线看 | 97操| 91文字幕巨乱亚洲香蕉 | 美日韩在线观看 | 国产在线二区 | 青青自拍视频 | 免费在线观看污网站 | 久久久国产精品免费 | 中文字幕在线观看播放 | 精品在线小视频 | 黄色成人在线网站 | 老头糟蹋新婚少妇系列小说 | 国产精品成人电影在线观看 | 国产夜夜嗨 | 成人高清视频免费观看 | 日本艳妇 | 激情另类小说 | 国产乱子伦精品视频 | 草莓视频在线观看入口w | 日日爱av| 日本不卡久久 | 久久久久www | 本庄优花番号 | 欧美欧美欧美 | 日韩av一级片 | 丝袜 亚洲 另类 欧美 重口 | 精产国产伦理一二三区 | 免播放器av |