DiyView.java
package com.test1; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; /** * 九宫格解锁控件 * Created by Jerry on 2015/9/21. */ public class DiyView extends View { public DiyView(Context context) { this(context, null); } public DiyView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public DiyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); init(); } //初始化 Paint paint; private void init(){ this.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg));//背景 //初始画笔 paint = new Paint(); paint.setColor(Color.parseColor("#00B7EE")); paint.setAntiAlias(true);//消除锯齿 paint.setStrokeWidth(33); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画直线 //drawLine(float startX, float startY, float stopX, float stopY,Paint) canvas.drawLine(startX, startY, endX, endY, paint); } private float startX, startY; private float endX,endY; @Override public boolean onTouchEvent(MotionEvent event) { //获取手势当下坐标 float crtX = event.getX(); float crtY = event.getY(); if(event.getAction() == MotionEvent.ACTION_DOWN){ //按下时,开始 位置 和 结束位置 都是在一个点就是当前的点, startX = crtX; startY = crtY; // endX = crtX; endY = crtY; } if(event.getAction() == MotionEvent.ACTION_MOVE){ endX = crtX; endY = crtY; } if(event.getAction() == MotionEvent.ACTION_UP){ startX = 0; startY = 0; // endX = 0; endY = 0; } invalidate();//重新执行onDraw return true; } public void print(String str){ Log.d("mft",str); } }
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.test1.DiyView android:id="@+id/diyView" android:layout_width="match_parent" android:layout_height="300dip" android:background="#55ff00ff" /> </RelativeLayout>
入口文件 MainActivity.java 同样在这里面也可以做 画布的 监听
package com.test1; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class MainActivity extends Activity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // DiyView lockView = (DiyView) findViewById(R.id.diyView); lockView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { print("onMain Down"); } if (event.getAction() == MotionEvent.ACTION_MOVE) { print("onMain Move"); } if (event.getAction() == MotionEvent.ACTION_UP) { print("onMain Up"); } return false; } }); //\\ } @Override public void onClick(View v) { String str = v.getTag().toString(); print(str); } public void print(String con){ Log.d("mft",con); } }
相关推荐
在Android开发中,Canvas是用于在屏幕上绘制图形的重要工具,它是`android.graphics`包中的一个类。Canvas提供了各种方法来绘制线条、形状、文本、图片等元素,使得开发者能够实现丰富的用户界面,如画板应用。本文...
((TComboBox*)Control)->Canvas->TextOut(Rect.Left + 20, Rect.Top + 2, ((TComboBox*)Control)->Items->Strings[Index]); // 标记当前鼠标所在项(焦点项) if (State.Contains(odFocused)) { ((TComboBox*)...
手摸手教你用Canvas实现简单粒子动画 Attributes name format description 中文解释 pv_host_text string set left host text 设置左边主文案 pv_host_text_size dimension set host text size 设置主文案...
在Android开发中,自定义画布Canvas是实现图形绘制的核心工具。Canvas提供了丰富的API,允许开发者在屏幕上绘制各种形状、图像以及文字等。本教程将深入探讨如何利用Canvas实现绘制和清空画布的功能。 首先,我们...
在Android开发中,Canvas是用于在屏幕上绘制2D图形的核心组件。`Canvas`类提供了丰富的绘图方法,让我们能够在Bitmap或者Surface上绘制线条、形状、文本等元素。在这个"Android画布Canvas之连线动画Demo"中,我们将...
通过"android-canvas-donut-chart"这个示例项目,开发者可以学习到如何在Android中利用Canvas API创建自定义的可视化组件,理解图形绘制的基本原理,并且能掌握数据可视化的实现技巧。这个过程不仅锻炼了编程技能,...
在“android-openGL-canvas-master.zip”这个项目中,开发者可能结合了这两者,创建了一个示例应用来展示如何在 Android 上使用 OpenGL ES(OpenGL 的嵌入式版本)与 Canvas 进行交互,以实现更高效的图形绘制和动画...
dg->Canvas->Font->Style->SetElement(esBold); // 在(ACol, ARow)位置绘制文本 dg->Canvas->TextOut(Rect.Left + 5, Rect.Top + 5, "示例文本"); } ``` 在"诚诚照片Demo"中,你可能想要在DrawGrid中展示照片。...
Android Canvas是Android系统中用于图形绘制的核心组件,它在Android应用开发中扮演着至关重要的角色。...在学习过程中,参考提供的“android-canvas.pdf”文档,将会对理解Canvas的工作原理和实践技巧有很大帮助。
images-tools 基于 node-canvas、node-images 实现对图片的一些操作,包括放大、缩小、压缩、修改画布大小等。 功能 resize.js -> 修改图片画布大小 ...apis/frameAnimation.js -> node-canvas 裁剪图片,生成圆角图片
本篇文章将详细讲解如何利用Canvas在Android中画曲线图和三角形(多边形),并结合示例代码帮助理解。 首先,我们要明白Canvas的基本用法。Canvas是Android中的一个类,它提供了在Bitmap上绘制图形的方法。通常,...
`设置画笔宽度为5个像素,`Canvas->Pen->Color=clRed;`将画笔颜色设为红色,`Canvas->Pen->Style=psDashDot;`则设置线条样式为破折线加点线。 3. **Brush属性**:TBrush类用于定义填充封闭区域的颜色或样式。例如,...
EnglishVersion ->_->:https://github.com/jiang111/awesome-android-tips/blob/master/README-en.md 值得收藏的AS插件 ->_->:https://github.com/jiang111/awesome-androidstudio-plugins 这里收集了大家常用的...
项目应用功能提供一个类似Android Canvas类的使用OpenGL来实现实现的canvasGL。可以像传统自定义View那样直接继承GLViews,再使用这个canvas替换需要的东西。提供类似GPUImage里的Filter的API,可以在使用画布GL画...
在Android开发中,Canvas是用于在屏幕上绘制2D图形的核心组件。它允许开发者直接在Bitmap上进行绘制操作,实现各种视觉效果。以下是对标题和描述中提到的各种图形绘制方法的详细说明: 1. **点(Point)**:使用`...
本资源“Android -自定义view-Paint和Canvas.rar”着重讲解了如何利用Paint和Canvas进行自定义View的绘制。下面将详细介绍这两个关键概念及其在自定义View中的应用。 1. **Paint(画笔)**: Paint是Android图形库...
<canvas id="my-canvas" width="400" height="400"></canvas> <script src="path/to/literallycanvas.min.js"></script> <script> var lc = new LiterallyCanvas(document.getElementById('my-canvas')); ...
在这个“vue-canvas-poster”项目中,我们将探讨如何结合Vue和Canvas来实现一个海报合成的功能。 首先,Vue组件是Vue.js的核心概念,它允许开发者将UI拆分成可复用的部分。在这个案例中,“vue-canvas-poster”可能...
uni-app 利用canvas进行画框,移动框,放大缩小并删除,目前支持小程序,h5,其他没测试过