android 文字路径,Android自定义控件:路径及文字
創建路徑
canvas中繪制路徑利用:
void drawPath (Path path, Paint paint)
直線路徑
void moveTo (float x1, float y1):直線的開始點;將直線路徑的繪制點定在(x1,y1)的位置;
void lineTo (float x2, float y2):直線的結束點,又是第二次繪制直線路徑的開始點;lineTo()可以一直用;
void close ():如果連續畫了幾條直線,但沒有形成閉環,調用Close()會將路徑首尾點連接起來,形成閉環;
1 Paint paint = new Paint();
2
3 paint.setColor(Color.BLUE);//設置畫筆顏色
4 paint.setStyle(Paint.Style.STROKE);//填充樣式改為描邊
5 paint.setStrokeWidth(10); //設置畫筆寬度
6
7 Path path = new Path();
8
9 path.moveTo(5,5);//設置起始點
10 path.lineTo(10,100);//第一條直線的終點,及第二條直線的起點
11 path.lineTo(200,100);//
12 path.lineTo(400,100);//第三條直線
13 path.close();//閉環
14
15 canvas.drawPath(path,paint);
TIM圖片20180823145016.png
矩形路徑
void addRect (float left, float top, float right, float bottom, Path.Direction dir)
void addRect (RectF rect, Path.Direction dir)
這里Path類創建矩形路徑的參數與上篇canvas繪制矩形差不多,唯一不同點是增加了Path.Direction參數;
Path.Direction有兩個值:
TIM圖片20180823150133.png
Path.Direction.CCW:指創建逆時針方向的矩形路徑;
Path.Direction.CW:指創建順時針方向的矩形路徑;
1 Paint paint = new Paint();
2 paint.setColor(Color.BLUE);//設置畫筆顏色
3 paint.setStyle(Paint.Style.STROKE);//填充樣式改為描邊
4 paint.setStrokeWidth(10); //設置畫筆寬度
5 //先創建兩個不一樣的路徑
6 //第一個逆向生成
7
8 Path CCWpath = new Path();
9
10 RectF rectF = new RectF(50,50,250,200);
11 CCWpath.addRect(rectF, Path.Direction.CCW);
12
13 //第二個順向生成
14 Path CWpath = new Path();
15 RectF rectF1 = new RectF(300,50,450,200) ;
16 CWpath.addRect(rectF1, Path.Direction.CW);
17
18
19 // 先畫出這兩個路徑
20 canvas.drawPath(CCWpath,paint);
21 canvas.drawPath(CWpath,paint);
TIM圖片20180823152108.png
1 Paint paint = new Paint();
2 paint.setColor(Color.BLUE);//設置畫筆顏色
3 paint.setTextSize(20);
4 paint.setStyle(Paint.Style.STROKE);//填充樣式改為描邊
5 paint.setStrokeWidth(1); //設置畫筆寬度
6 //先創建兩個不一樣的路徑
7 //第一個逆向生成
8
9 Path CCWpath = new Path();
10
11 RectF rectF = new RectF(50,50,250,200);
12 CCWpath.addRect(rectF, Path.Direction.CCW);
13
14 //第二個順向生成
15 Path CWpath = new Path();
16 RectF rectF1 = new RectF(300,50,450,200) ;
17 CWpath.addRect(rectF1, Path.Direction.CW);
18
19
20 // 先畫出這兩個路徑
21 canvas.drawPath(CCWpath,paint);
22 canvas.drawPath(CWpath,paint);
23
24 String text = "新手上路,多多努力,一起加油!";
25 paint.setColor(Color.RED);
26 canvas.drawTextOnPath(text,CCWpath,0,10,paint);//文字逆時針生成
27 canvas.drawTextOnPath(text,CWpath,0,10,paint);//文字順時針生成
TIM圖片20180823153151.jpg
文字
構造函數:
void drawText (String text, float x, float y, Paint paint)
void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)
void drawText (String text, int start, int end, float x, float y, Paint paint)
void drawText (char[] text, int index, int count, float x, float y, Paint paint)
1 //普通設置
2 Paint paint=new Paint();
3 paint.setAntiAlias(true); //是否使用抗鋸齒功能,如果使用,使繪圖速度變慢
4 paint.setStyle(Paint.Style.FILL);//繪圖樣式,對于設文字和幾何圖形有效
5 // Style.FILL/Style.FILL_AND_STROKE/Style.STROKE
6 paint.setTextAlign(Paint.Align.CENTER);//s設置文字對齊方式,取值:align.CENTER、align.LEFT或align.RIGHT
7 paint.setTextSize(10);//設置文字大小
8 paint.setStrokeWidth(10);//設置畫筆寬度
9
10 //樣式設置
11 paint.setFakeBoldText(true);//將水平方向拉伸,高度不變
12 paint.setUnderlineText(true);//設置下劃線
13 paint.setTextSkewX((float)-0.5);//設置字體水平傾斜度,普通斜體字是-0.5
14 paint.setStrikeThruText(true);//設置帶有刪除線效果
15
16 //其他設置
17 paint.setTextScaleX(5);//將水平方向拉伸,高度不變
TIM圖片20180909093213.png
Typeface create(String familyName, int style) //直接通過指定字體名來加載系統中自帶的文字樣式
Typeface create(Typeface family, int style) //通過其它Typeface變量來構建文字樣式
Typeface createFromAsset(AssetManager mgr, String path) //通過從Asset中獲取外部字體來顯示字體樣式
Typeface createFromFile(String path)//直接從路徑創建
Typeface createFromFile(File path)//從外部路徑來創建字體樣式
Typeface defaultFromStyle(int style)//創建默認字體
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,如果使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置為填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",150,100,paint);
11
12 //繪圖樣式設置為描邊
13 paint.setStyle(Paint.Style.STROKE);
14 canvas.drawText("加油努力吧!",150,200,paint);
15
16 //繪圖樣式設置為填充并且描邊
17 paint.setStyle(Paint.Style.FILL_AND_STROKE);
18 canvas.drawText("加油努力吧!",150,300,paint);
TIM圖片20180825211057.jpg
Style的枚舉值如下:
Typeface.NORMAL //正常體
Typeface.BOLD //粗體
Typeface.ITALIC //斜體
Typeface.BOLD_ITALIC //粗斜體
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,如果使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置為填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",150,100,paint);
11
12 paint.setFakeBoldText(true);//將水平方向拉伸,高度不變
13 paint.setUnderlineText(true);//設置下劃線
14 paint.setStrikeThruText(true);//設置帶有刪除線效果
15
16 paint.setTextSkewX((float)-0.5);//設置字體水平傾斜度,普通斜體字是-0.5
17 canvas.drawText("加油努力吧!",150,200,paint);
18
19
20 paint.setTextSkewX((float)0.5);//設置字體水平傾斜度,普通斜體字是-0.5
21 canvas.drawText("加油努力吧!",150,300,paint);
TIM圖片20180825214706.jpg
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,如果使用,使繪圖速度變慢
5
6 paint.setTextSize(50);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置為填充
9 paint.setStyle(Paint.Style.FILL);
10 canvas.drawText("加油努力吧!",10,50,paint);
11
12 paint.setTextScaleX(2);//水平方向拉伸,高度不變
13 canvas.drawText("加油努力吧!",10,100,paint);
14
15
16 //寫在同一位置,同顏色,看高度是否不變
17
18
19 paint.setTextScaleX(1);//先還原拉伸效果
20 canvas.drawText("加油努力吧!",10,150,paint);
21
22 paint.setColor(Color.RED);
23 paint.setTextScaleX(2);//重新設置拉伸效果
24 canvas.drawText("加油努力吧!",10,200,paint);
TIM圖片20180826161306.png
使用系統中的字體
Typeface defaultFromStyle(int style)//創建默認字體
Typeface create(String familyName, int style) //直接通過指定字體名來加載系統中自帶的文字樣式
1 //普通設置
2 Paint paint=new Paint();
3 paint.setColor(Color.BLUE);
4 paint.setAntiAlias(true); //是否使用抗鋸齒功能,如果使用,使繪圖速度變慢
5
6 paint.setTextSize(100);//設置文字大小
7 paint.setStrokeWidth(5);//設置畫筆寬度
8 //繪圖樣式,設置為填充
9 paint.setStyle(Paint.Style.FILL);
10
11 String familyName = "宋體";
12 Typeface font = Typeface.create(familyName,Typeface.NORMAL);
13 paint.setTypeface(font);
14 canvas.drawText("努力加油",10,100, paint);
TIM圖片20180909093256.png
總結
以上是生活随笔為你收集整理的android 文字路径,Android自定义控件:路径及文字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 50行车记录仪降压线怎么诱骗acc?
- 下一篇: android开发控件水波纹,Andro