版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本文實例為家了 android 自定義帶箭頭對話框的具體代碼,供家參考,具體內容如下import android.content.context; import android.content.res.typedarray; import android.graphics.canvas; import android.graphics.paint; import android.graphics.path; import android.support.annotation.nullable; import android.util.attributeset; import android.v
2、iew.gravity; import .sankuai.shangou.stone.util.densityutil; import .sankuai.waimai.store.search.r; /* * created by android studio. user: liangyongyao date: 2021/3/7 des: 帶倒三角的氣泡 */ public class bubblearrowtextview extends android.support.v7.widget.appcompattextview private final static int triangle
3、_direction_top = 1; private final static int triangle_direction_bottom = 2; private final static int triangle_direction_left = 1; private final static int triangle_direction_right = 2; private paint mpaint; private paint mstrokepaint; private int mbgcolor; private int mstrokecolor; private int mstro
4、kewidth; private int mtotalheight; private int mtotalwidth; private int mlabelheight; private int mtriangleheight; private int mtrianglewidth; private int mradius; private int triangledirection; public bubblearrowtextview(context context) this(context, null); public bubblearrowtextview(context conte
5、xt, nullable attributeset attrs) this(context, attrs, 0); public bubblearrowtextview(context context, nullable attributeset attrs, int defstyleattr) super(context, attrs, defstyleattr); init(context, attrs, defstyleattr); public void init(context context, attributeset attrs, int defstyleattr) if (at
6、trs != null) typedarray a = context.obtainstyledattributes(attrs, r.styleable.bubblearrowtextview); mbgcolor = a.getcolor(r.styleable.bubblearrowtextview_bubblecolor, 0); mstrokecolor = a.getcolor(r.styleable.bubblearrowtextview_bubblestrokecolor, 0); mradius = a.getdimensionpixeloffset(r.styleable.
7、bubblearrowtextview_bubbleradius, 0); mstrokewidth = a.getdimensionpixeloffset(r.styleable.bubblearrowtextview_bubblestrokewidth, 0); mtriangleheight = a.getdimensionpixeloffset(r.styleable.bubblearrowtextview_triangleheight, densityutil.dip2px(context, 6); mtrianglewidth = a.getdimensionpixeloffset
8、(r.styleable.bubblearrowtextview_trianglewidth, densityutil.dip2px(context, 3.5f); triangledirection = a.getint(r.styleable.bubblearrowtextview_triangledirection, 0); a.recycle(); setgravity(gravity.center); initpaint(); / 初始化畫筆 public void initpaint() mpaint = new paint(); mpaint.setantialias(true)
9、; mpaint.setstyle(paint.style.fill); mpaint.settextsize(getpaint().gettextsize(); mpaint.setdither(true); / 初始化邊框線畫筆 public void initstrokepaint() mstrokepaint = new paint(); mstrokepaint.setantialias(true); mstrokepaint.setstyle(paint.style.fill); mstrokepaint.setdither(true); override protected vo
10、id onmeasure(int widthmeasurespec, int heightmeasurespec) super.onmeasure(widthmeasurespec, heightmeasurespec); mlabelheight = getfontheight() + getpaingtop() + getpaingbottom(); mtotalheight = mlabelheight + mtriangleheight * 2 + mstrokewidth * 2; mtotalwidth = getpaingleft() + getfontwidth() + get
11、paingright() + mstrokewidth * 2; setmeasureddimension(mtotalwidth, mtotalheight); override protected void ondraw(canvas canvas) drawview(canvas); super.ondraw(canvas); / 繪制氣泡 private void drawview(canvas canvas) if (mstrokecolor != 0 & mstrokewidth != 0) initstrokepaint(); mstrokepaint.setcolor(
12、mstrokecolor); drawround(canvas, mstrokepaint, 0); drawtriangle(canvas, mstrokepaint, 0); if (mbgcolor != 0) mpaint.setcolor(mbgcolor); drawround(canvas, mpaint, mstrokewidth); drawtriangle(canvas, mpaint, mstrokewidth); / 繪制矩形 private void drawround(canvas canvas, paint paint, int strokewidth) canv
13、as.drawroundrect(strokewidth, mtriangleheight + strokewidth, mtotalwidth - strokewidth, mtotalheight - mtriangleheight - strokewidth, mradius, mradius, paint); / 繪制三角形 private void drawtriangle(canvas canvas, paint paint, int strokewidth) path path = new path(); switch (triangledirection) / 上 case t
14、riangle_direction_top: path.moveto(mtotalwidth * 0.8f - mtrianglewidth / 2 + strokewidth / 2, mtriangleheight + strokewidth); path.lineto(mtotalwidth * 0.8f, strokewidth + strokewidth / 2); path.lineto(mtotalwidth * 0.8f + mtrianglewidth / 2 - strokewidth / 2, mtriangleheight + strokewidth); break;
15、/ 下 case triangle_direction_bottom: path.moveto(mtotalwidth * 0.8f - mtrianglewidth/2 + strokewidth / 2, mtotalheight - mtriangleheight - strokewidth); path.lineto(mtotalwidth * 0.8f, mtotalheight - strokewidth - strokewidth / 2); path.lineto(mtotalwidth * 0.8f + mtrianglewidth/2 - strokewidth / 2, mtotalheight - mtriangleheight - strokewidth); break; default: return; canvas.drawpath(path, paint); / 根據字號求字體高度 private int getfontheight() pai
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能硬件庫存質押擔保協議3篇
- 專業(yè)化危險品運輸安全承諾協議模板版
- 2024建筑模板購銷合同范本
- 2025年度LED廣告車租賃與旅游景觀點亮工程合同3篇
- 2024暑期兼職項目人力資源派遣合同3篇
- 2025版高標準承包魚塘養(yǎng)殖基地管理合同3篇
- 2024智能音響控制系統設計與施工合同
- 2024某城市地鐵線路擴建工程勘察設計合同
- ‘卓爾系’產品2024年度庫存管理與合作合同
- 2024版房地產全程策劃合同
- 硫磺安全技術說明書MSDS
- 職中英語期末考試質量分析
- 過盈配合壓裝力計算
- 中國的世界遺產智慧樹知到答案章節(jié)測試2023年遼寧科技大學
- 先天性肌性斜頸的康復
- GB/T 37518-2019代理報關服務規(guī)范
- GB/T 34370.1-2017游樂設施無損檢測第1部分:總則
- GB/T 15924-1995錫礦石化學分析方法碘量法測定錫量
- GB/T 13914-2013沖壓件尺寸公差
- 貝利尤單抗Belimumab詳細說明書與重點
- BB/T 0045-2021紙漿模塑制品工業(yè)品包裝
評論
0/150
提交評論