首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android实现九宫格解锁实例代码

我们就把九宫格分解成 外圆 、内圆、连线三部分 外圆半径Radius,内圆半径dp(5) 建立一个集合放置 外圆圆心( 内圆圆心也一样) private ArrayList<Point...主结构已经画完了,接下来就是如何绘制点与点之间连线了,有人会觉得没思路,其实很简单了,以3X3 为例子哈 我们可以给这九个棋子编号1–9号,把他存入LinkedHashSet中,着重介绍这个LinkedHashSet...还有一个问题,就是点击边界问题,这个好解决,我们把每一个棋子都花矩形,通过圆控制边界,(其实也可以通过矩形控制边界,这个也很简单,原理是差不多,有兴趣同学可以下去试试) 同样也是用集合。...我把代码都贴上来,注释很详细。当然加入了一个手指触控点,更加好看一些。...;//外圆半径 private float mMinRadius;//内圆半径 private float mStrokeWidth = 10; //绘制画笔宽度 private Point mMovePoint

82541
您找到你想要的搜索结果了吗?
是的
没有找到

LMT:高度定制单手虚拟按键

,触发扇形按钮之后,将手指移动到按钮上并松开,即可触发相应操作。   ...所谓"长按动作"就是触发扇形按钮之后,将手指移动到扇形按钮上按住不松开,超过设定时间后,扇形按钮便会变成你设置长按动作,继续按住手指不松开,将手指移动到相应扇形按钮,将会触发设定好长按动作。...除了扇形按钮这个功能之外,小苏今天还要介绍"扇形指针"功能,当扇形按钮被手指触发之后,且0扇形指针功能处于开启状态时,将手指向扇形直边方向滑动,即可触发扇形指针功能。...触发扇形指针功能后,屏幕上会出现一条圆弧和一条线段,圆弧和线相交之处有一个小圈,按住屏幕不放并移动手指,屏幕上圆弧线段和小圈会随你手指而移动,单手操作时,将小圈对准你想要点击而又够不着位置,松开手指...,LMT将会代替你手指而点击这个位置。

96630

android 终端模拟器

终端模拟器是一款非常精致手机模拟器,可以拒绝卡顿掉线情况,加快解压游戏加载进度,提升性能,加快手机速度。   ...相当于平台上一个Linux Shell工具,相当于中CMD命令提示符。...有了它,我们可以在上操作Linux系统命令,专业版自带SSH和远程登录客户端,让你有更多更好体验android 终端模拟器 源码,普通用户也可以使用,比如ping,方便。   ...界面清爽完美的中文版软件;   随你android 终端模拟器 源码,随你分,随你超神!   游戏主播必备;   00-1010可以选择屏幕大小,随意调节。   ...支持即时存档和金手指功能;   最有用最有价值移动福利投递之家。   自动匹配游戏列表,一键打开脚本助手。

1.6K10

flutter实现一个sideBar

因为你在上面滑动手指时候,这些索引会更随你手指滑动,明显操作体验就不对了。 比较难以知道你现在触碰到是哪个字母。 使用CupertinoPicker放置这些索引,这种也不可以?...然而,仔细一想体验似乎也不大对,他选中似乎不是你手指按住位置,放弃 使用Slider 怎么说,slider实际上浮动在一个控件上面,比如column,然后slider高度和这个column相同。...万能Stack Overflow上有这么一个解决方式, 虽然说可以实现滑动时候知道滑动到哪里,更具计算知道索引到哪个字母 手指点上去,也能瞬间移动到哪个位置,但是体验并不流畅,用起来挺复杂,放弃。...还是使用GestureDetactor,但是不仅仅是利用他回调,这里利用是有点类似于android额onTouchInterCeptor方式。...有了这货,就可以算出手指在这个父控件中相对位置了 也就说可以定位出目前手指在哪个字母索引上。 ok,最后实现效果就是这样了,目前已经将这个组件上传到了pub中了,地址是这里。

2K111

android中实现在ImageView上随意画线涂鸦方法

我实现思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完)...,将所画线(点集合)保存在一个集合中 3.重写onDraw方法,利用canvas和所记录下线和点画出线 可能我讲十分笼统,下面来看看实际代码吧 //代表ImageView上一点 public...,获取保存所经过点并调用invalidate方法进行屏幕刷新(可以使onDraw方法被调用,稍后可以看到),当我们手指离开时添加之前所画线到集合中,并调用invalidate方法 接下来看看所重写...line实现撤销功能。...以上这篇android中实现在ImageView上随意画线涂鸦方法就是小编分享给大家全部内容了,希望能给大家一个参考。

1.5K10

快给你app上锁吧(android图案解锁)

序言:前两天因为项目的原因,去做了一下仿ios数字解锁功能,然后写了那篇快给你app上锁吧(android数字解锁),后来想到应用中常见还有另外一种解锁就是绘制图案解锁,这两种解锁布局看起来是很相似的...抬起正确状态 思路 这里又是一个九宫格布局,布局可以参考上一篇快给你app上锁吧(android数字解锁),只不过这里九宫格上我们画是图片(bitmap)。...2、然后每两个点连成一条线 首先需要判断第一个点状态是否是正常(这个是点属性,可以自定义),正常的话两点之间就连正确线,错误的话两点之间就连错误线 布局画好之后我们还需要判断手势,即onTouch...判断第一次按下是否选中九宫格中点(2). 如果第一次选中九宫格中点,将手指在移动且手指按下点不是九宫格中点这个标识位置为true 3、抬起: (1)....//表示一次完整图案绘制是否结束 private boolean isMoveButNotPoint; //表示手指在移动,但是并不是九宫格中点 private float

1.2K20

面试官问我:如何加载100M图片却不撑爆内存,一张 100M 大图,如何预防 OOM?

然后给我们自定义矩形mRect上下左右边界赋值。一般情况下我们使用这个自定义View显示大图,都是占满这个View,所以这里矩形初始大小就让它View一样大。...到这里运行就能绘制出一部分图片了,想要看全部图片,需要手指拖动来看,这就需要处理各种事件了。...,移动矩形绘制区域,这里需要处理各个边界点,比如左边最小就为0,右边最大为图片宽度,不能超出边界否则就报错了。...缩放完成之后,需要根据当前缩放比重新设置绘制区域边界。最后也需要重新定位一下边界,因为如果使用两个手指放大之后,这时候双击返回原状,如果不处理边界,位置会出错。处理边界代码可以抽取出来。...节省大家在网上搜索资料时间学习,也可以分享给身边好友一起学习。

2.2K20

教你五分钟实现Android超漂亮刻度轮播控件实例教程

截屏 一、自定义View常用方法 相信每个Android程序员都知道,我们每天开发工作当中都在不停地View打交道,Android任何一个布局、任何一个控件其实都是直接或间接继承自View...总之,画布无关操作都不要写在这里。...View   本文并没有使用View提供scrollTo和scrollBy控制滚动,而是重新定义一个x,y属性记录滚动位置,通过这个属性绘制相应位置,实现滚动效果。...这样操作可以通过指定绘制区域(屏幕外内容不绘制,感兴趣同学可以去尝试实现)解决性能问题。   drawScale通过遍历items绘制每一个元素,包括刻度和对应文字,都是比较基本操作。...最后通过postInvalidateOnAnimation或invalidate通知重新绘制,onDraw根据新x,y绘制对应位置画面,实现滑动。

66231

切换按钮-自定义控件-拖动效果

手指第一次触摸屏幕 事件为MotionEvent.ACTION_MOVE是手指在屏幕上移动 事件为MotionEvent.ACTION_UP是手指离开屏幕 当手指触摸到屏幕 定义手指最后坐标lastX...调用MotionEvent对象getX() 方法,得到lastX值 当手指在屏幕上移动 定义手指横向移动距离dis 调用getX()-lastX就是移动距离 定义滑动按钮左边就是这个移动距离...变量,如果有拖动发生,就把这个变量赋值true 在onCllick()方法里面对这个变量进行判断 当手指抬起时候 判断当前slideBtnLeft确定当前按钮是开还是关状态 slideBtnLeft...比较 maxLeft一半就能判断当前状态 package com.tsh.myswitchbtn; import android.content.Context; import android.graphics.Bitmap...; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint

1.2K20

图片画画板

页面布局,相对布局 按钮位于父窗体下方使用android:layout_alignParentBottom=”true” 图片位于按钮上方,填充父窗体,使用android:layout_above=...getAction()方法,获取触摸事件 switch判断这个事件 事件为MotionEvent.ACTION_DOWN是手指第一次触摸屏幕 事件为MotionEvent.ACTION_MOVE是手指在屏幕上移动...事件为MotionEvent.ACTION_UP是手指离开屏幕 当手指触摸屏幕时 定义手指开始位置坐标startX startY 调用MotionEvent对象getX() 和 getY()方法,...可以得到坐标 当手指移动时候,我们要获取新坐标newX和newY,方法和上面一样 调用Canvas对象drawLine()方法,画一条线,参数:startX,startY,newX,newY,paint...; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View

85570

Android开发之自定义刮刮卡实现代码

,然后对这块区域进行多层绘图(背景层,前景层),然后去监听触摸事件,把手指触摸区域前景层给消除即可。...首先我们先来实现一个简单版: 步骤: 1、绘制图片作为背景层 2、绘制一张和背景层大小一致灰色图层作为前景层 3、监听手指触摸区域,把对应区域前景层消除 1、首先绘制图片作为背景层,这个太简单了...: 步骤: 1、绘制中奖信息作为背景层 2、绘制一张和中奖信息同等大小刮奖封面作为前景层 3、监听手指触摸区域,把对应区域前景层消除 4、在消除大部分区域时候,讲中奖信息完整展示 步骤...关于文字位置的确定 首先我们需要知道任何控件在Android布局中外层都是一个矩形,A代表刮刮卡绘制区域,B代表中奖信息绘制区域,所以在这里我们绘制文本信息起始点应该是A布局宽一半减去B布局宽一半...Path记录用户手指触摸路径就是一样了,这里我们额外来添加一个功能,使得当用户在刮刮卡上刮区域范围超过50%后,自动消除刮刮卡前景层。

67831

Android自定义圆形View实现小球跟随手指移动效果

本文实例为大家分享了Android实现小球跟随手指移动效果具体代码,供大家参考,具体内容如下 一. 需求功能 手指在屏幕上滑动,红色小球始终跟随手指移动。...实现思路: 1)自定义View,在onDraw中画圆作为小球; 2)重写自定义ViewonTouchEvent方法,记录触屏坐标,用新坐标重新绘制小球; 3)在布局中引用自定义View布局,运行程序...; /** * 自定义圆形小球view:手指在屏幕上滑动,红色小球始终跟随手指移动。...比如在修改某个view显示时,调用invalidate()才能看到重新绘制界面。invalidate()调用是把之前view从主UI线程队列中pop掉。...其余线程可以理解为工作者线程。invalidate()得在UI线程中被调动,在工作者线程中可以通过Handler通 知UI线程进行界面更新。

1.7K30

Android自定义视图实现手指移动轨迹

今天看了大神写关于贝塞尔曲线博客,就写下了关于手指轨迹一篇博客, 一、什么是贝塞尔曲线 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序数学曲线。...一般矢量图形软件通过它精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动支点,线段像可伸缩皮筋,我们在绘图工具上看到钢笔工具就是做这种矢量曲线。...三、手指轨迹原理 因为这个我们用是自定义控件,所以我们创建一个finger类集成View,重写onDraw onTouchEvent这个两个方法 public finger(Context context...其实手指轨迹原理也很简单,就是通过onTouchEvent获取道手指位置,绘制path路径即可。...ACTION_DOWN时,这里我通过moveTo方法绘制了第一个点,这个必须使用moveTo,因为如果不使用这个这个点将会在(0,0)开始,最后我们回去到xy点作为控制点,最后使用返回 真的方式让ACTION_MOVE

1.3K30

Android模拟实现滑动解锁界面

在onDraw方法中绘制出滑块,在控件布局文件中设置控件背景图片 设置滑块触摸事件,分别算出当手指按下屏幕.移动,离开屏幕时滑块位置 在移动过程中,对滑块位置进行限定,使滑块位置不能超过指定区域...在手指离开屏幕事件中判定手指位置,如果滑块没有到达最右边,那就让滑块回到开始位置 通过重写computeScroll方法,让滑块在手指离开屏幕时候如果没有到达最右边,那就让他回到开始位置 设置一个回调接口...(); break; case MotionEvent.ACTION_MOVE: //当手指移动时候,记录移动距离 destance = (int)(event.getX()-startx); //...,记录手指离开位置 if (destance<bgBitmap.getWidth()-slidBitmap.getWidth()){ //手指抬起时,如果滑块不在右边,那就让他回到左边 startx...int currx = scroller.getCurrX(); scrollTo(-currx,0); //重新绘制 invalidate(); } } //设置一个解锁接口 interface

1.9K30

Android查缺补漏(View篇)--自定义 View 基本流程

(View 绘制流程是从 ViewRoot performTraversals() 方法开始,它经过 measure、layout、draw 三个流程最终才能将一个 View 完整绘制出来。)...直接继承 View 实现自定义 View 这种方式比较灵活,可以实现很多复杂效果,这种方式最关键步骤就是重写 onDraw() 方法,通过 Paint 画笔等工具在 Canvas 画布上进行各种图案绘制以达到我们想要效果...其实在自定义 View 过程中,难点往往不是怎么使用画笔本身,而是绘制出预期效果思路,例如:你想通过自定义 View 做一个折线图控件,传入一组数据怎么确定这些数据在画布上对应点相对坐标,而确定点坐标就需要通过相关数学公式计算了...ScaleGestureDetector 缩放手指检测 除了上面最普通 MotionEvent 事件之外,Android 还提供了很多有趣事件,就想 GestureDetector(手势检测)、VelocityTracker...实现,效果平时在手机查看照片时我们用两根手指放大/缩小图片一样。

813100

仿支付宝手势密码

正上方提示区域,用一个类(LockIndicator.java)实现,自定义view绘制9个提示图标; 2....手势密码绘制区域,用一个类(GestureContentView.java)实现,它继承自ViewGroup里面, 添加9个ImageView表示图标, 在onLayout()方法中设置它们位置;...、ACTION_UP事件,绘制手势连接不同点之间路径; 4. 9个点对象,用一个类(GesturePoint.java)实现,保存它位置、状态、背景图片等相关信息; 5....手势密码获取,判断手指当前位置,根据滑动路径经过点,按顺序保存绘制顺序(这里点顺序从上到下分别是:1,2,3,4,5,6,7,8,9),不能有重复点。...复写onLayout这个方法,让点按需求排列 3.定义一个可以画线View,复写onTouchEvent方法,在这个方法里面进行画直线操作 4.判断用户手指当前位置,取出当前位置去与那9个点中每个点位置进行比较

1.5K70

Android自定义View九宫格手势密码解锁

由于公司新项目需要用到九宫格手势密码解锁功能,于是觉得自己写一个。废话不多说,直接上效果图: ? 首选我们分析下实现思路: 1....手指离开屏幕时候判断手势密码是否正确,如若错误这把错误状态下点和线绘制出来。 具体实现: 首先我们得绘制出默认正常状态下九个点: ?...计算出x y偏移量后,初始化九个点位置。...并标记现在是绘制状态下。同样在移动手指时候也是把检测到点存储起来,修改状态为按下。当手指离开屏幕时候,把标记改为不在绘制。...所有被选中绘制完后,如果当前还处在绘制状态(手机没有离开屏幕),那我们就new一个手指触摸位置作为连接线终点。

1.2K30

2014-11-6Android学习------Android画笔实现画曲线--------贝塞尔曲线(二)

我学习Android都是结合源代码去学习,这样比较直观,非常清楚看清效果,觉得很好,今天学习源码是网上找源码 百度搜就知道很多下载地方 网上源码名字叫:Android 仿真翻页效果.zip我博客写比较乱...private Paint paint; //画笔 private Canvas canvas; //画布 private Thread th; //线程,用这个线程独立负责更新视图...startY, controlX, controlY, endX, endY; //贝塞尔曲线需要三个点,起始,控制,结束 private Path path; //曲线路径,也即是你手指移动生成一个路径...} 5.接下来就是怎么样去画贝塞尔曲线,Android中提供是Path.quadTo()这个函数去画 private void myDraw() { //定义自己画图函数.../在画布上绘制出这条曲线 } 7.上面的所有准备工作作为了,还有个需要处理,就是监听我手指移动事件 //响应触摸屏事件,通过手指位置取得两个重要点,起始点,和终止点

42730
领券