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

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

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

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

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

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

    1K30

    android 终端模拟器

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

    1.7K10

    flutter实现一个sideBar

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

    2K111

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

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

    1.2K20

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

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

    1.6K10

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

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

    72131

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

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

    2.3K20

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

    手指第一次触摸屏幕 事件为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.3K20

    Flutter 中创建一个绘图画布

    在本文,我们将手把手构建一个简单绘图画布,在画布上用户可以在画布上使用手指自由绘画并选择不同颜色画笔。...这可能用于根据上下文或者触摸交互类型以不同方式处理触摸事件(例如,绘制一个点而不是一条线)。 Constructor:明确需要提供 points 和 paint。...如果当前点和下一个点标记为可绘制(isPoint 为真),此方法遍历列表并从每个点到下一个点绘制一条线。...如果点不是连续,即 isPoint 为 false,则跳过绘制到下一个点。这是处理用户手指抬离屏幕然后触屏生成另一个点绘制不连续点简单方法。...总结 现在,我们使用 Flutter 成功地创建了一个基础绘图应用!这个应用允许我们在屏幕上选择颜色绘制,并且清空绘制

    13710

    图片画画板

    页面布局,相对布局 按钮位于父窗体下方使用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

    89270

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

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

    71331

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

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

    1.8K30

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

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

    1.4K30

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

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

    838100

    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

    2K30

    仿支付宝手势密码

    正上方提示区域,用一个类(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.6K70

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

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

    1.3K30
    领券