画笔和画布的使用
绘制几何图形
package com.example.pratice9;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制机器人
//创建一个画笔
Paint paint = new Paint();
//采用抗锯齿功能
paint.setAntiAlias(true);
paint.setColor(0xFFA4C739);//设置画笔颜色为绿色
//绘制机器人的头
RectF rectF = new RectF(10,10,100,100);//定义外轮廓矩形
rectF.offset(90,20);
canvas.drawArc(rectF,-10,-160,false,paint);
//绘制眼睛
paint.setColor(0xFFFFFFFF);//设置画笔颜色为白色
canvas.drawCircle(165,53,4,paint);
canvas.drawCircle(125,53,4,paint);
//绘制天线
paint.setStrokeWidth(2);//设置笔触宽度
paint.setColor(0xFFA4C739);
canvas.drawLine(110,15,125,35,paint);
canvas.drawLine(180,15,165,35,paint);
//绘制身体
canvas.drawRect(100,75,190,150,paint);//绘制矩形
RectF rectF_body = new RectF(100,140,190,160);
canvas.drawRoundRect(rectF_body,10,10,paint);
//绘制胳膊
RectF rectF_arm = new RectF(75,75,95,140);
canvas.drawRoundRect(rectF_arm,10,10,paint);
rectF_arm.offset(120,0);//调整偏移位置
canvas.drawRoundRect(rectF_arm,10,10,paint);
//绘制腿
RectF rectF_leg = new RectF(115,150,135,200);
canvas.drawRoundRect(rectF_leg,10,10,paint);
rectF_leg.offset(40,0);//调整偏移位置
canvas.drawRoundRect(rectF_leg,10,10,paint);
}}
注:
运行结果:
绘制文本
package com.example.pratice9;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制机器人
//创建一个画笔
Paint paint = new Paint();
//采用抗锯齿功能
paint.setAntiAlias(true);
paint.setColor(0xFFA4C739);//设置画笔颜色为绿色
//绘制机器人的头
RectF rectF = new RectF(10,10,100,100);//定义外轮廓矩形
rectF.offset(90,20);
canvas.drawArc(rectF,-10,-160,false,paint);
//绘制眼睛
paint.setColor(0xFFFFFFFF);//设置画笔颜色为白色
canvas.drawCircle(165,53,4,paint);
canvas.drawCircle(125,53,4,paint);
//绘制天线
paint.setStrokeWidth(2);//设置笔触宽度
paint.setColor(0xFFA4C739);
canvas.drawLine(110,15,125,35,paint);
canvas.drawLine(180,15,165,35,paint);
//绘制身体
canvas.drawRect(100,75,190,150,paint);//绘制矩形
RectF rectF_body = new RectF(100,140,190,160);
canvas.drawRoundRect(rectF_body,10,10,paint);
//绘制胳膊
RectF rectF_arm = new RectF(75,75,95,140);
canvas.drawRoundRect(rectF_arm,10,10,paint);
rectF_arm.offset(120,0);//调整偏移位置
canvas.drawRoundRect(rectF_arm,10,10,paint);
//绘制腿
RectF rectF_leg = new RectF(115,150,135,200);
canvas.drawRoundRect(rectF_leg,10,10,paint);
rectF_leg.offset(40,0);//调整偏移位置
canvas.drawRoundRect(rectF_leg,10,10,paint);
}}
绘制图片
绘制路径
package com.example.pratice10;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.os.Environment;
import android.view.View;
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(0xFF0000FF);
paint.setStyle(Paint.Style.STROKE);//设置填充样式为描边
Path path = new Path();
path.addCircle(550,500,150,Path.Direction.CW);//创建圆形路径
canvas.drawPath(path,paint);
//绘制绕路径的文本
//paint.setTextSize(26);
//canvas.drawTextOnPath("活着就是为了改变世界",path,0,0,paint);
}
}
逐帧动画
补间动画
渐变
扫描二维码关注公众号,回复:
11527380 查看本文章
Animation animation = AnimationUtils.
loadAnimation(MainActivity.this,R.anim.alpha);
imageView.startAnimation(animation);//开启动画
旋转
Animation animation = AnimationUtils.
loadAnimation(MainActivity.this,R.anim.rotate);
imageView.startAnimation(animation);//开启动画
缩放
Animation animation = AnimationUtils.
loadAnimation(MainActivity.this,R.anim.scale);
imageView.startAnimation(animation);//开启动画
平移
Animation animation = AnimationUtils.
loadAnimation(MainActivity.this,R.anim.translate);
imageView.startAnimation(animation);//开启动画