package com.example.zhangjinming.androidgame2;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Typeface;
import android.os.Build;
import android.view.View;
class MyView extends View {
private Paint paint;
private Path path;
public MyView(Context context) {
super(context);
paint=new Paint(Paint.ANTI_ALIAS_FLAG);
path=new Path();
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
paint.setColor(Color.BLACK);
canvas.drawText("hello world",100,100,paint);
canvas.drawRect(100,100,150,150,paint);
canvas.drawText("hello world",2,8,300,100,paint);
char[] text={'h','e','l','l','o',' ','w','o','r','l','d'};
canvas.drawText(text,2,8,500,100,paint);
paint.setColor(Color.RED);
paint.setTextSize(24);
paint.setUnderlineText(true);//设置下划线
canvas.drawText("hello world",100,200,paint);
paint.setStrikeThruText(true);//设置删除线
canvas.drawText("hello world",300,200,paint);
paint.setUnderlineText(false);
canvas.drawText("hello world",500,200,paint);
paint.setStrikeThruText(false);
paint.setColor(Color.BLUE);
paint.setTextSize(18);
paint.setTypeface(Typeface.DEFAULT);//缺省字体
canvas.drawText("hello world",50,250,paint);
paint.setTypeface(Typeface.DEFAULT_BOLD);//缺省加粗字体
canvas.drawText("hello world",200,250,paint);
paint.setTypeface(Typeface.MONOSPACE);//等宽字体
canvas.drawText("hello world",350,250,paint);
paint.setTypeface(Typeface.SANS_SERIF);//非衬体
canvas.drawText("hello world",500,250,paint);
paint.setTypeface(Typeface.SERIF);//衬体
canvas.drawText("hello world",650,250,paint);
paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.BOLD));//衬体+加粗
canvas.drawText("hello world",200,300,paint);
paint.setTypeface(Typeface.create("宋体",Typeface.ITALIC));
//"宋体不存在",变成:缺省+斜体
canvas.drawText("hello world",350,300,paint);
paint.setTypeface(Typeface.createFromAsset(getContext().getAssets(),"hwcy.TTF"));
//自定义字体
canvas.drawText("hello world",500,300,paint);
paint.setColor(Color.YELLOW);
paint.setTypeface(Typeface.DEFAULT);
paint.setTextScaleX(3);//文本沿X轴缩放3倍
canvas.drawText("hello world",50,350,paint);
paint.setColor(Color.GRAY);
paint.setTextScaleX(1);
paint.setTextSkewX(-0.5f);//设置斜率,负数表示右斜,正数表示左斜
canvas.drawText("hello world",350,350,paint);
paint.setTextSkewX(0.5f);
canvas.drawText("hello world",500,350,paint);
paint.setColor(Color.BLACK);
paint.setTextSkewX(0);
paint.setTypeface(Typeface.DEFAULT_BOLD);
canvas.drawText("hello world",50,400,paint);//缺省粗体
paint.setFakeBoldText(true);
canvas.drawText("hello world",200,400,paint);//缺省粗体+仿粗体
paint.setTypeface(Typeface.DEFAULT);
canvas.drawText("hello world",350,400,paint);//仿粗体
paint.setFakeBoldText(false);
canvas.drawText("hello world",500,400,paint);//缺省
paint.setColor(Color.CYAN);
paint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("hello world",canvas.getWidth()/2,450,paint);//居中对齐
paint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText("hello world",canvas.getWidth()/2,500,paint);//右对齐
paint.setTextAlign(Paint.Align.LEFT);
canvas.drawText("hello world",canvas.getWidth()/2,550,paint);//左对齐
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
path.addCircle(200,700,100,Path.Direction.CW);//顺时针
canvas.drawPath(path,paint);
canvas.drawTextOnPath("hello world",path,0,0,paint);
canvas.drawTextOnPath("hello world",path,180,20,paint);
//hOffset水平偏移,vOffset垂直偏移(顺时间时内向)
path.reset();
path.addCircle(600,700,100,Path.Direction.CCW);//逆时针
canvas.drawPath(path,paint);
canvas.drawTextOnPath("hello world",path,0,0,paint);
canvas.drawTextOnPath("hello world",path,180,20,paint);
//hOffset水平偏移,vOffset垂直偏移(逆时间时向外)
path.reset();
path.moveTo(100,900);
path.rCubicTo(100,-300,200,300,300,0);
paint.setColor(Color.MAGENTA);
canvas.drawTextOnPath("hello world hello world hello world" +
"hello world hello world",path,0,0,paint);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
paint.setColor(Color.parseColor("#abcdef"));
canvas.drawTextRun("hello world",1,8,0,9,
500,850,true,paint);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
paint.setColor(Color.parseColor("#fedcba"));
paint.setLetterSpacing(0.5f);//设置字符间距
canvas.drawText("hello world",500,900,paint);
paint.setLetterSpacing(0);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
paint.setColor(Color.parseColor("#112233"));
paint.setFontFeatureSettings("smcp");//用CSS的方式来设置文字,此处设置为"Small"
canvas.drawText("Hello World",500,950,paint);
}
}
}
一键复制
编辑
Web IDE
原始数据
按行查看
历史