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实现画板的功能。
手摸手教你用Canvas实现简单粒子动画 Attributes name format description 中文解释 pv_host_text string set left host text 设置左边主文案 pv_host_text_size dimension set host text size 设置主文案...
QML--Canvas画布实现矩形圆形等圈定
android-canvas-donut-chart.7z
android-openGL-canvas-master.zip
by wxy ...this->PDFDocument1->Canvas->TextOutA(100,100,"1234567"); this->PDFDocument1->EndDoc(); 以上四句话,就可以生产一个pdf文件,不需要安装虚拟打印机了。 enjoy it! 2011年11月10日
Android 自定义画布canvas 实现绘制和清空画布功能,内含源码、apk
wxml-to-canvas 小程序内通过静态模板和样式绘制 canvas ,导出图片,可用于生成分享图等场景
ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-canvas 实现echart图表显示ec-...
images-tools 基于 node-canvas、node-images 实现对图片的一些操作,包括放大、缩小、压缩、修改画布大小等。 功能 resize.js -> 修改图片画布大小 ...apis/frameAnimation.js -> node-canvas 裁剪图片,生成圆角图片
EnglishVersion ->_->:https://github.com/jiang111/awesome-android-tips/blob/master/README-en.md 值得收藏的AS插件 ->_->:https://github.com/jiang111/awesome-androidstudio-plugins 这里收集了大家常用的...
android 画曲线图 画三角形(多边形),可以画成股票K线图,儿童成长曲线等,使用android的canvas
项目应用功能提供一个类似Android Canvas类的使用OpenGL来实现实现的canvasGL。可以像传统自定义View那样直接继承GLViews,再使用这个canvas替换需要的东西。提供类似GPUImage里的Filter的API,可以在使用画布GL画...
Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
对学习android的朋友在画图上有很大的参考意义
node-canvas, node Canvas是一个Cairo支持的NodeJS画布实现 节点画布这是版本 2.0.0 -alpha的文档Alpha版本的2.0可以使用 npm install canvas@next 安装。有关从 1.x 升级到 2. x.的指南,请参阅变更日志版本 1.x ...
HTML5+JS游戏开发模块----canvas图片拖放,炮塔攻击范围绘制,炮塔原本位置,炮塔图片的拖放
使用vue 2.0开发的基于 canvas 绘制海报的组件!
android 自定义view(Paint和Canvas),安卓自定义View,安卓自定义。
uni-app 利用canvas进行画框,移动框,放大缩小并删除,目前支持小程序,h5,其他没测试过