这几天学习了一下小码哥的安卓教程,记录一下安卓的自定义控件的一些笔记.
application;t.Context;
aphics.Bitmap;
aphics.BitmapFactory;
aphics.Canvas;
aphics.Color;
aphics.Paint;
aphics.RectF;
import android.support.annotation.ColorRes;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;public class CanvasView extends View {public CanvasView(Context context) {super(context);}public CanvasView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {Draw(canvas);//画线Paint paint = new Paint();canvas.drawLine(0, 0, 100, 100, paint);//画文字paint.setTextSize(20);paint.setColor(Color.RED);canvas.drawText("王天泽的test", 200, 200, paint);//画点paint.setStrokeWidth(5);canvas.drawPoint(150, 150, paint);//画弧度paint.setStyle(Paint.Style.STROKE);RectF rectF = new RectF(100, 100, 200, 200);canvas.drawArc(rectF, 30, 60, true, paint);//画图片//1.用项目中已经有的图片Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);//2.从0开始创建BitmapBitmap createdBmp = ateBitmap(100, 100, Bitmap.Config.RGB_565);for (int i = 0; i < 100; i++) {for (int j = 0; j < 100; j++) {createdBmp.setPixel(i, j, Color.RED);}}canvas.drawBitmap(createdBmp, 150, 300, paint);}
}
application;t.Context;
aphics.Canvas;
aphics.Paint;
aphics.Path;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;public class CanvasPathView extends View {public CanvasPathView(Context context) {super(context);}public CanvasPathView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {Draw(canvas);Paint paint = new Paint();//如果需要绘制path的话,需要设置paint的style为STROKEpaint.setStyle(Paint.Style.STROKE);//复杂的线条需要通过Path来画Path path = new Path();//移动接下来的要绘制的内容的起点位置veTo(50, 50);//直线path.lineTo(100, 100);//二阶贝塞尔曲线path.quadTo(200, 200, 300, 100);canvas.drawPath(path, paint);}
}
application;t.Context;
aphics.Canvas;
aphics.Color;
aphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;public class TranslateCanvasView extends View {public TranslateCanvasView(Context context) {super(context);}public TranslateCanvasView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {Draw(canvas);Paint paint = new Paint();paint.setColor(Color.RED);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(5);anslate(100, 100);//保存当前绘制的坐标系canvas.save();ate(90);//销毁坐标系,还原到上一次保存的坐标系效果store();canvas.drawLine(0, 0, 100, 100, paint);}
}
application;t.Context;
aphics.Canvas;
aphics.Color;
import android.icu.util.Measure;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Display;
import android.view.View;public class MeasureView extends View {public MeasureView(Context context) {super(context);}public MeasureView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {Measure(widthMeasureSpec, heightMeasureSpec);Log.v(getClass().getSimpleName(), "onMeasure:widthMeasureSpec=" + widthMeasureSpec + ",onMeasure:heightMeasureSpec=" + heightMeasureSpec);//MeasureSpec 由两个int值组成的int widthMode = Mode(widthMeasureSpec);int widthSize = Size(widthMeasureSpec);int heightMode = Mode(heightMeasureSpec);int heightSize = Size(heightMeasureSpec);
// setMeasuredDimension(50, 50);//UNSPECIFIED 父控件对你的尺寸不做任何限制//ATMOST代表父控件对你的尺寸设置了最大值switch (widthMode) {case MeasureSpec.UNSPECIFIED:break;case MeasureSpec.AT_MOST:break;case MeasureSpec.EXACTLY:break;}}@Overrideprotected void onDraw(Canvas canvas) {Draw(canvas);canvas.drawColor(Color.RED);}
}
本文发布于:2024-02-01 10:21:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675409035945.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |