
Android自定义View
文章平均质量分 94
mChenys
这个作者很懒,什么都没留下…
展开
-
Android自定义View(一) 基础篇
目录一、基本结构1.1 重写onMeasure 方法一、基本结构组件主要由两部分构成:组件类和属性定义。我们从第一种定义方式说起创建自定义组件类最基本的做法就是继承自类 View,其中,有三个构造方法和两个重写的方法又是重中之重。下面是自定义组件类的基本结构:public class MyView extends View { public MyView(Context context) { super(context); } public MyView(Co原创 2022-01-23 18:02:53 · 2877 阅读 · 0 评论 -
Android自定义View(二) 自定义容器
目录一、什么是自定义容器1.1 ViewGroup类1.2 ViewGroup的工作原理1.2.1 ViewGroup的onMeasure分析1.2.2 ViewGroup的onLayout分析1.2.3 ViewGroup的onDraw分析二、综合案例2.1 CornerLayout布局2.1.1 分析容器的宽高2.1.2 分析容器的内边距2.1.3 分析子View的外边距2.1.4 重写CornerLayout的onMeasure方法确定容器的宽高2.1.5 重写CornerLayout的onLayo原创 2022-01-23 22:34:29 · 2722 阅读 · 0 评论 -
Android自定义View(三) Scroller与平滑滚动
目录一、什么是Scroller二、认识scrollTo和scrollBy方法2.1 scrollTo、scrollBy对View内容的影响2.2.1 思考为什么移动负数距离会向坐标正方向移动?2.2 scrollTo、scrollBy对布局容器的影响三、Scroller类3.1 相关方法介绍3.2 scroller的基本使用3.3 平滑滚动的工作原理四、案例-触摸滑屏4.1 触摸滑屏技术分析4.2 速度追踪器VelocityTracker4.3 触摸滑屏的分步实现一、什么是ScrollerScrolle原创 2022-01-24 00:02:11 · 4826 阅读 · 0 评论 -
如何给图片设置标签
今天要实现的效果如下: 根据效果图需要完成以下功能: 1.添加,修改,移动,删除tag 2.保存tag的坐标和内容 3.根据tag保存的坐标和内容进行还原 4.隐藏/显示所有tag 5.切换背景图片 6.切换tag的背景(或者说是布局和样式,例子中只是更换了下tag的背景图片) 7.生成图片,这里是将整个自定义View进行绘制生成Bitmap 8.最大tag数量限制,不设置则表示不原创 2017-01-09 16:00:50 · 4063 阅读 · 0 评论 -
自定义验证码校验对话框
样式图:自定义dialog的布局文件layout_code_dialog.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="180dp" android:layout_height="90dp" androi原创 2015-12-02 01:07:48 · 1918 阅读 · 0 评论 -
自定义SlideMenu侧滑菜单
效果图:要实现上面的效果,首先需要理解2个概念,一个是内容视图,另一个是布局边框,看下图:布局边框可以理解为手机的屏幕,内容视图就是用于展示到屏幕显示的内容,我们所能看到的区域就是布局边框里面的区域,如果内容视图比较大,那么超出布局边框的区域将不被我们所看到,这就需要通过移动布局边框来显示我们想要看到的内容视图了.需要注意的是布局边框的移动和内容视图的移动是相对的,也就是说原创 2015-12-16 00:22:07 · 1780 阅读 · 0 评论 -
ViewDragHelper的使用介绍
ViewDragHelper是support.v4下提供的用于处理拖拽滑动的辅助类,查看Android的DrawerLayout源码,可以发现,它内部就是使用了该辅助类来处理滑动事件的.public DrawerLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, de原创 2015-12-19 18:30:47 · 1863 阅读 · 0 评论 -
通过ViewDragHelper实现ListView的Item的侧拉划出效果
先来看看,今天要实现的自定义控件效果图:关于ViewDragHelper的使用,大家可以先看这篇文章ViewDragHelper的使用介绍实现该自定义控件的大体步骤如下:1.ViewDragHelper使用的3部曲,初始化ViewDragHelper,传递触摸事件,实现ViewDragHelper.Callback抽象类.2.需要创建2个直接的子View,分别是前景View原创 2015-12-26 22:48:36 · 1924 阅读 · 2 评论 -
通过overScrollBy实现下拉视差特效
效果图:先来分析overScrollBy方法的使用,它是View的方法,参数有点多: /** * 当滑动的超出上,下,左,右最大范围时回调 * * @param deltaX x方向的瞬时偏移量,左边到头,向右拉为负,右边到头,向左拉为正 * @param deltaY y方向的瞬时偏移量,顶部到头,向下拉为负原创 2015-12-26 20:57:36 · 3154 阅读 · 1 评论 -
修改TagFlowLayout源码,让其响应子View的点击事件
TagFlowLayout组件是来自鸿洋提供的一个流式布局的框架,建议先看这篇文章修改FlowLayout源码,让其支持设置最大行数这里直接贴上代码/** * 用于布局TagView标签容器的流式布局 * Change by mChenys on 2019/1/8. * 修改后,支持子View响应点击事件,支持根据OnTagClickListener#onTagClick的返回值来处理状...原创 2019-05-13 16:08:22 · 1083 阅读 · 0 评论 -
如何绘制圆形百分比加载圈
先看一组效果图 自定义这样的圆形加载圈还是比较简单的,主要是用到Canvans的绘制文本,绘制圆和绘制圆弧的api:/** * 绘制圆 * @param cx 圆心x坐标 * @param cy 圆心y坐标 * @param radius 圆的半径 * @param paint 画笔 */ public void drawCircle(floa原创 2016-11-10 23:09:42 · 2418 阅读 · 0 评论 -
自定义流式布局控件
效果图:原理图:代码:/** * Created by mChenys on 2015/12/5. */public class MyFlowLayout extends ViewGroup { public static final int DEFAULT_SPACING = 20; //水平间距和垂直间距 private int mHo原创 2015-12-06 15:01:42 · 1257 阅读 · 1 评论 -
自定义带下拉刷新和滚动加载的ListView控件原理分析和实现
上面2张gif效果图,就是要实现的效果1.下拉刷新下拉刷新是用于刷新列表第一页数据用的,有3种状态,分别是:1)下拉刷新2)松手后刷新3)正在刷新原理介绍:a.关于下拉刷新头部控件的实现可以通过ListView的addHeaderView的方法,将一个View添加到ListView的头部,该HeaderView就是我们要实现了下拉刷新的头部控件,改控件的样式有可以自原创 2015-12-08 22:00:23 · 1326 阅读 · 0 评论 -
Android自制弹幕
好久没有写过文章,最近发现直播特别的火,很多app都集成了直播的功能,发现有些直播是带有弹幕的,效果还不错,今天心血来潮,特地写了篇制作弹幕的文章.今天要实现的效果如下: 1.弹幕垂直方向固定2.弹幕垂直方向随机上面效果图中白色的背景就是弹幕本身,是一个自定义的FrameLayout,我这里是为了更好的展示弹幕的位置才设置成了白色,当然如果是叠加在VideoView上的话,就需要设置成透明色了.原创 2016-09-29 17:59:58 · 1343 阅读 · 0 评论 -
自定义字母导航条控件
效果图:实现这个效果的大致步骤有: 1. A-Z索引的绘制. 2. 处理Touch事件. 3. 提供使用监听\回调. 4. 汉字转换成拼音. 5. 进行排序展示. 6. 进行分组. 7. 将自定义控件和ListView合体. 需要注意的地方有:1.文本绘制的起始点绘制文本是用Canvas的drawText(String text, f原创 2015-12-22 23:56:38 · 1819 阅读 · 0 评论 -
实现ViewPager新手引导页的指示点跟随移动的效果
效果图如下所示:ViewPager的滑动实现这个相信大家已经非常熟悉了,这里就不多说了,这里主要是将指示点的跟随移动的效果要如何实现.由上图可知,会动的指示点只有一个,也就是那个红点.关于如何让其动起来,有很多种实现方式,这里采用的方式是通过改变小红点的leftMargin来实现.那么在什么时候来改变这个leftMargin的值呢?在ViewPager的OnPageChange原创 2016-01-02 20:41:46 · 2284 阅读 · 0 评论 -
自定义加载圈动画
实现如下效果: 该效果图主要有3个动画: 1.旋转动画 2.聚合动画 3.扩散动画以上3个动画都是通过ValueAnimator来实现,配合自定义View的onDraw()方法实现不断的刷新和绘制界面.具体代码如下:package blog.youkuaiyun.com.mchenys.myanimationloading;import android.animation.Animator;impor原创 2016-05-25 21:36:34 · 1835 阅读 · 0 评论