自定义控件(8)---PathEffect平滑曲线--点、线、矩形、圆
来源:互联网 发布:江苏网络安全教育平台 编辑:程序博客网 时间:2024/05/16 08:00
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical" > <com.aigestudio.customviewdemo.views.PathEffectView android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
MeasureUtil
package com.aigestudio.customviewdemo.utils;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Color;import android.util.DisplayMetrics;public final class MeasureUtil {public static int[] getScreenSize(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);return new int[] { metrics.widthPixels, metrics.heightPixels };}}
MainActivity
package com.aigestudio.customviewdemo.activities;import android.app.Activity;import android.os.Bundle;import com.aigestudio.customviewdemo.R;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}
PathEffectView
package com.aigestudio.customviewdemo.views;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.CornerPathEffect;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PathEffect;import android.util.AttributeSet;import android.view.View;/** * PathEffect */@SuppressLint({ "NewApi", "DrawAllocation" })public class PathEffectView extends View {private Paint mPaint;// 画笔对象private Path mPath;// 路径对象private PathEffect mEffects;// 路径效果数组public PathEffectView(Context context, AttributeSet attrs) {super(context, attrs);/* * 实例化画笔并设置属性 * 描边、宽度、颜色 */mPaint = new Paint();mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(5);mPaint.setColor(Color.DKGRAY);// 实例化路径mPath = new Path();// 定义路径的起点mPath.moveTo(0, 420);// 定义路径的各个点for (int i = 0; i <= 30; i++) {mPath.lineTo(i * 35, (float) (Math.random() * 300));}// 创建路径效果数组}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);/* * 实例化各类特效 */mEffects = new CornerPathEffect(50);/* * 绘制路径 */mPaint.setPathEffect(mEffects);canvas.drawPath(mPath, mPaint);// 刷新偏移值并重绘视图实现动画效果invalidate();}}
========================================
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.try_paint_blog.MainActivity" ></FrameLayout>
MainActivity
package com.example.try_paint_blog;import android.app.Activity;import android.os.Bundle;import android.widget.FrameLayout;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FrameLayout root=(FrameLayout)findViewById(R.id.root); root.addView(new MyView(MainActivity.this)); }}
MyView
package com.example.try_paint_blog;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Path;import android.graphics.Rect;import android.graphics.RectF;import android.view.View;public class MyView extends View {Context m_context;public MyView(Context context) {super(context);m_context = context;}// 重写OnDraw()函数,在每次重绘时自主实现绘图@SuppressLint("DrawAllocation")@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Paint paint = new Paint();paint.setColor(Color.RED); // 设置画笔颜色paint.setStyle(Style.FILL);// 设置填充样式paint.setStrokeWidth(5);// 设置画笔宽度/** * 画直线--drawLine(float startX, float startY, float stopX, float stopY, * Paint paint) */canvas.drawLine(0, 10, 100, 10, paint);/** * 两两一直线 (上面有四个点:( 0, 50)、(20, 50),(40, 50),(60, 50)),两两连成一条直线; */float[] pts = { 0, 50, 20, 50, 40, 50, 60, 50 };// drawLines(float[] pts, Paint paint)canvas.drawLines(pts, paint);/** * 画点 .drawPoint(float x, float y, Paint paint) */canvas.drawPoint(100, 100, paint);/** * 多个点float drawPoints里路过前两个数值,即第一个点横纵坐标,画出后面四个数值代表的点,即第二,第三个点 */float[] ptss = { 200, 100, 300, 100, 400, 100, 500, 100 };canvas.drawPoints(ptss, 2, 4, paint);/** * 矩形 .drawRect(float left, float top, float right, float bottom, Paint * paint) */canvas.drawRect(0, 200, 100, 300, paint);// 直接构造RectF rect = new RectF(150, 200, 250, 300);canvas.drawRect(rect, paint);// 使用RectF构造Rect rect2 = new Rect(300, 200, 400, 300);canvas.drawRect(rect2, paint);// 使用Rect构造/** * 圆角 drawRoundRect(RectF rect, float rx, float ry, Paint paint) float * rx:生成圆角的椭圆的X轴半径 float ry:生成圆角的椭圆的Y轴半径 */RectF rect3 = new RectF(0, 350, 200, 450);canvas.drawRoundRect(rect3, 20, 20, paint);/** * 圆 drawCircle(float cx, float cy, float radius, Paint paint) */canvas.drawCircle(400, 400, 50, paint);/** * 三角形 */paint.setStyle(Style.STROKE);// 填充样式改为描边Path path = new Path();path.moveTo(10, 500); // 设定起始点path.lineTo(10, 600);// 第一条直线的终点,也是第二条直线的起点path.lineTo(50, 600);// 画第二条直线path.close();// 闭环canvas.drawPath(path, paint);/** * 椭圆 椭圆是根据矩形生成的,以矩形的长为椭圆的X轴,矩形的宽为椭圆的Y轴,建立的椭圆图形 void drawOval (RectF * oval, Paint paint) */RectF rect22 = new RectF(100, 600, 300, 900);canvas.drawRect(rect, paint);// 画矩形paint.setColor(Color.GREEN);// 更改画笔颜色canvas.drawOval(rect22, paint);// 同一个矩形画椭圆/** * 划弧形drawArc(RectF oval, float startAngle, float sweepAngle, boolean * useCenter, Paint paint) RectF oval:生成椭圆的矩形 float * startAngle:弧开始的角度,以X轴正方向为0度 float sweepAngle:弧持续的角度 boolean * useCenter:是否有弧的两边,True,还两边,False,只有一条弧 *///画笔为描边RectF rect1 = new RectF(500, 600, 600, 800);canvas.drawArc(rect1, 0, 90, true, paint);RectF rect222 = new RectF(700, 600, 800, 800);canvas.drawArc(rect222, 0, 90, false, paint);}}
0 0
- 自定义控件(8)---PathEffect平滑曲线--点、线、矩形、圆
- Android 自定义控件学习-PathEffect
- 平滑曲线连接各点(贝塞尔曲线)
- 自定义圆角矩形控件
- 若干点连接成平滑曲线
- 学习笔记(自定义虚线样式)---PathEffect
- JS画图,(矩形,曲线,圆 等)
- 自定义控件(31)---贝塞尔曲线
- 自定义控件,圆角矩形(drawRoundRect)
- VB.NET构建圆角平滑的矩形控件(示例Panel)
- 曲线平滑-贝塞尔曲线
- ECharts学习笔记<如何去掉点以及让曲线平滑>
- UGUI绘制过多点连续的平滑曲线
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形) .
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- D3D11天空盒的实现
- http协议
- 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对
- 01 (maven+SSH)网上商城项目实战之项目简介
- 从头到尾写SQL(一)
- 自定义控件(8)---PathEffect平滑曲线--点、线、矩形、圆
- 【Android学习笔记】用于共享数据的Content Provider
- JavaScript学习(三):JavaScript对象类型
- windows版webrtc编译教程(2015.11)
- 关于安卓eclipse SDK下载不了的解决方法
- 技术疑惑解决
- zeromq push-pull 模式
- Spring mvc 搭建与总结
- 异常一般用于突发情况的处理,而不是用于正常的业务逻辑判断