当测量好一个View后,我们可以简单的重写onDraw()方法,并在Canvas对象上来绘制所需要的图形
2 canvas画板 该类提供的方法,可以绘制各种图形 (矩形,圆形,线条)
Paint画笔
用来描述图形的颜色和分格,线宽,颜色,透明度,填充效果
准备材料 图片
自定义一个view
重写onDraw()方法
把图片画在view上
声明一组常量 bitmapx,bitmapy为图片的x,y的坐标点
在布局中引用
package com.yifei.myapplication;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class MyCanvasView extends View {
private float bitmapX;//声明坐标点的x值
private float bitmapY;//声明坐标点的y值
//构造方法里
public MyCanvasView(Context context) {
super(context);
}
public MyCanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
bitmapX = 50;
bitmapY= 50;
}
public MyCanvasView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//得到画笔, 定义颜色,线宽
Paint paint = new Paint();
//
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.timg);//得到这张图片转成bitmap(位图)对象
//绘制出来了这张图片
canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
//判断图片是否回收
if(bitmap.isRecycled()){
bitmap.recycle();//强制回收图片
}
}
}
xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@drawable/abc"
>
<com.yifei.myapplication.MyCanvasView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
在代码中添加一个自定义view
FrameLayout frameLayout = findViewById(R.id.frame);
MyCanvasView myCanvasView = new MyCanvasView(this);
myCanvasView.bitmapX = 200;
myCanvasView.bitmapY=200;
frameLayout.addView(myCanvasView);