自定义View-XLPictureUnlock
一. 前言封装了手势解锁的基本操作,正常状态和选中状态的图片都可以替换,线条的颜色和宽度也可以改变,同时你可以设置同一个点能否选择多次。为了绘制的线条在点视图的下面,所以需要嵌套一个RelativeLayout,XLPictureUnlcok在嵌套的RelativeLayout中的宽高都是match_parent。
Github地址:XLPictureUnlock
二. 自定义View1. 自定义用到的属性1234567891011121314151617181920212223242526272829303132//正常状态的图片资源private int normal_image_id = R.drawable.normal;//选中状态的图片资源private int select_image_id = R.drawable.selected;//点的大小private int dot_size = 45;//线条的颜色private int line_color = Color.parseColor("#99CCFF");//线条的宽度private in ...
Android项目:手势解锁
一. 运行效果以及源码1.gif图效果
2.源码地址XLPictureUnlock
二. 主要的思路1.如何让点亮点?设置选中点的图片资源是选中的图片资源。
2.怎么判断点亮那个点?
通过触摸事件获取触摸点的坐标,然后判断触摸点具体在哪一个点所在区域。
既然我们需要判断在哪一个点的区域,那么我们在添加点的时候,将它们添加到一个List集合,便于遍历。
如何判断一个点是否在一个视图区域呢,利用 RectF 类,它包含一个方法 public boolean contains(float x, float y),用来判断一个点是否在当前区域。
3.怎么绘制线条?以及保存图案?
我们设置一个startPoint和一个endPoint保存一个线条的起止坐标。当手指从一个点滑出但是没有滑到其他的点时,我们利用startPoint和一个endPoint来drawLine。如果两个点被点亮,那么我们需要保存这两个点之间的Path,并保存进去集合,方便绘制。
我们给每一个点设置了 id,那么一系列点亮的点就可以用对应的 id 表示,就将密码图案转化为字符串图案。
使用 SharedPreference ...
Android随笔-手势识别
一. 前言1. 介绍Android手势识别类:GestureDetector类是 Android 提供的一个手势识别工具类。
作用:识别用户输入的手势,从而做出对应的响应。
2. 使用主要分为两个大部分来使用:
① 接口使用
OnGestureListener 和 OnDoubleTapListener
② 类使用
SimpleOnGestureListener
3. 本文源码GestureDetector
二. OnGestureListener1. 监听的手势类型按下的瞬间,按压,长按,轻击,快速滑屏,快速拖动
2. 使用步骤① 创建手势检测器实例
常用的手势检测器构造方法是第二个
123456//构造函数1GestureDetector gestureDetector = new GestureDetector(GestureDetector.OnGestureListener listener);//构造函数2GestureDetector gestureDetector = new GestureDetector(Context context,GestureDetector ...
Android随笔-声音的播放
一. 前言
MediaPlayer和SoundPool都是用来播放音频的。
一般大家使用的是MediaPlayer来播放音频,它的创建和销毁都是非常消耗资源的,如果我们的需求是播放一些短促而且频繁播放的音频的话MediaPlayer就有些不合适了,应该使用SoundPool来播放短促的音频。
二. MediaPlayer常用于播放背景音乐
1. 单例工具类123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 ...
Android项目:画板
一. 运行效果以及源码1.gif图效果
2.源码地址MyDrawBoard
二.主要的思路自定义View,在onDraw方法中利用Canvas的draw方法完成画板的各种操作。
三.使用到的技术点1. 主要的内容用到了下面的三个自己之前写的静态库。
① 底部按钮的控制器:自定义View-XLBottomView
② 画板的核心实现:自定义View-XLDrawBoard
③ 进度控制器:自定义View-XLSeekBar
2. 隐藏状态栏参考文章:Android 显示、隐藏状态栏和导航栏
12345678910111213<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colo ...
自定义View-XLBottomView
一. 前言仿照系统的BottomNavigationView而做的效果。
Github地址:XLBottomView
二. 自定义View1. 自定义用到的属性123456789101112131415161718192021//正常状态的颜色private int normal_color = Color.BLACK;//选中状态的颜色private int select_color = Color.MAGENTA;//两端是否给间距private boolean hasLeftOrRightSize = true;//item的大小private int item_size = 50;//item的布局private int item_layout;//按钮选中状态被点击是否响应事件private boolean isSelectClick = false;//上一个被选中的private MyItem lastItem;//监听者private XLBottomViewItemListener listener;//数据源private List<BottomViewIt ...
自定义View-XLItem
一. 前言常用来做子项。被一个自定义的View引用后,没有显示,可能的解决方案:自定义控件(15)—ViewGroup绘制的自定义子View的margin注意
Github地址:XLItem
二. 自定义View1. 自定义用到的属性123456789101112131415161718192021222324//资源private int icon_id = R.drawable.ic_launcher_background;//文本private String title = "测试";//正常状态的颜色private int normal_color = Color.BLACK;private int select_color = Color.MAGENTA;//记录自身的索引private int item_index = 0;//布局idprivate int layout_id = R.layout.item_layout;//显示icon的视图private ImageView icon_view;//显示title的视图private TextVi ...
自定义View-XLDrawBoard
一. 前言封装了画板的一些基本操作。
Github地址:XLDrawBoard
二. 自定义View1. 自定义用到的属性12345678910111213141516171819202122//背景颜色private int bg_color = Color.WHITE;//画板的状态private int board_state = BOARD_STATE_PEN;public static final int BOARD_STATE_PEN = 0;public static final int BOARD_STATE_ERASER = 1;//线条颜色private int lineColor = Color.MAGENTA;//线条的粗细private int lineWidth = 20;//临时的路径private Path temp_path;//存储绘制的线条private List<Graph> graphs;//用于反撤销功能而存储的线条private List<Graph> last_graphs;
2. 在values文件夹下自 ...