自定义View
文章平均质量分 84
Luckie stone
Android应用开发。
展开
-
穿过已知点画平滑曲线(3次贝塞尔曲线)
首先,我们计算出多边形所有边线的中点,Ai。然后连接起相邻边中点,得到很多线段,记为 Ci 。并用图记的方法计算出 Bi 点。最后一步,只需要简单地将 Ci 进行平移,平移的路径就是每条线段上 Bi 到对应顶点的路径。就这样,我们计算出了贝塞尔曲线的控制点,平滑的结果看起来也很棒。这里还可以做一点小小的改进,因为我们已经得到了一条决定控制点的直线,所以,我们可以根据需要,使控制点在这条直线上移动,这样可以改变插值曲线 的状态。我使用了一个与控制点和顶点初始距离相关的系数 K ,用来沿原创 2020-10-01 07:40:13 · 1315 阅读 · 0 评论 -
一篇文章让你轻松弄懂NestedScrollingParent & NestedScrollingChild
虽然很早之前使用CoordinatorLayout时就认识过nestedScrollingChild和nestedScrollingParent, 也看多很多博客,但每次看着就不知所云了,所以这篇文章,我们就以问题为线索,带着问题找答案。1. 谁实现 NestedScrollingChild,谁实现NestedScrollingParent ?在实际项目中,我们往往会遇到这样一种需求,当ViewA还显示的时候,往上滑动到viewA不可见时,才开始滑动viewB, 又或者向下滑动到viewB不能滑动时转载 2020-06-20 10:42:23 · 632 阅读 · 1 评论 -
GestureDetector使用详解
Android sdk给我们提供了GestureDetector(Gesture:手势Detector:识别)类,通过这个类我们可以识别很多的手势,主要是通过他的onTouchEvent(event)方法完成了不同手势的识别。虽然他能识别手势,但是不同的手势要怎么处理,应该是提供给程序员实现的。GestureDetector这个类对外提供了两个接口和一个外部类接口:OnGestureListener,OnDoubleTapListener内部类:SimpleOnGestureListener这个转载 2020-06-20 09:53:26 · 6551 阅读 · 0 评论 -
一个流畅的拖动排序DragSortGridView,自动滚屏
1.拖拽可以移动item,并且其他item会立即自动补位,快速拖拽也非常流畅2.item太多时,拖拽到边缘时会自动滚屏.3.可以自定义被拖拽的的View放大,添加阴影等效果4.长按启动删除模式,需要自己实现item的删除按钮展示,自己管理删除模式的切换5.可以放在ScrollView中拖动排序,需要ScrollView继承ListenScrollView,不影响外面控件的大部分事件....转载 2020-05-07 06:43:46 · 898 阅读 · 0 评论 -
ViewGroup不走onDraw()方法
如果你想要自定义viewgroup调用onDraw方法,必须在构造函数中调用setWillNotDraw(false);或者设置背景色。原创 2020-04-11 09:38:06 · 390 阅读 · 0 评论 -
Android自定义View——菊花进度条
当你看完这篇博客过后,相信你已经可以摸到自定义View的门道了,本篇博客将带你走一遍自定义View之旅废话不多说先上效果图。实现思路1. 创建attrs.xml文件,自定义一些我们需要的属性,对于format的取值大家可以搜索一下网上有很多教程,我这里就不重复造轮子了。<declare-styleable name="a_zhon"> <!--每...转载 2018-07-30 05:47:12 · 1075 阅读 · 0 评论 -
自定义LinearLayout实现RatingBar效果,打造一个评分控件
项目中一直用到RatingBar这个评分控件但奈何系统的太难用了,使用他要满足我们的需求需要弄一堆样式、设置这些或者那些东西。但这都不是重点最要命的是设置我们自己的图片他竟然对图片大小还有要求,若不合格就直接影响到了界面的美观….所以就有了这篇文章。一: 我们来看下实现的效果图二:总的来说这个自定义还是很简单的,大致步骤如下:定义一些布局属性 extends LinearLa...转载 2018-07-30 05:47:04 · 288 阅读 · 0 评论 -
Android 自定义ViewGroup手把手教你实现ArcMenu
逛eoe发现这样的UI效果,感觉很不错,后来知道github上有这么个开源项目~~~~当然本篇不是教你如何使用这个开源项目,而是教你如何自己通过自定义ViewGroup写这样的效果,自定义ViewGroup也是我的痛楚,嘿嘿,希望以此可以抛砖引玉~~效果图:1、实现思路通过效果图,会有几个问题:a、动画效果如何实现可以看出动画是从顶点外外发射的,可能有人说,那还不简单,默认元素都在定点位置,然后T...转载 2018-07-15 09:13:38 · 143 阅读 · 0 评论 -
Android 深入理解Android中的自定义属性
1、引言对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现:自定义一个CustomView(extends View )类编写values/attrs.xml,在其中编写styleable和item等标签元素在布局文件中CustomView使用自定义的属性(注意namespace)在CustomView的构造方法中通过TypedArray获取ps:如果你对上述几个步骤不熟悉,建议先熟悉下,...转载 2018-07-15 08:27:29 · 445 阅读 · 0 评论 -
Andoird 自定义ViewGroup实现竖向引导界面
一般进入APP都有欢迎界面,基本都是水平滚动的,今天和大家分享一个垂直滚动的例子。先来看看效果把:1、首先是布局文件:<com.example.verticallinearlayout.VerticalLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://s...转载 2018-07-15 08:27:21 · 121 阅读 · 0 评论 -
Android ViewDragHelper完全解析 自定义ViewGroup神器
一、概述在自定义ViewGroup中,很多效果都包含用户手指去拖动其内部的某个View(eg:侧滑菜单等),针对具体的需要去写好onInterceptTouchEvent和onTouchEvent这两个方法是一件很不容易的事,需要自己去处理:多手指的处理、加速度检测等等。 好在官方在v4的支持包中提供了ViewDragHelper这样一个类来帮助我们方便的编写自定义ViewGroup。简单看一下它...转载 2018-07-14 06:56:55 · 148 阅读 · 0 评论 -
Android 手把手教您自定义ViewGroup(一)
今天给大家带来一篇自定义ViewGroup的教程,说白了,就是教大家如何自定义ViewGroup,如果你对自定义ViewGroup还不是很了解,或者正想学习如何自定义,那么你可以好好看看这篇博客。1、概述在写代码之前,我必须得问几个问题:1、ViewGroup的职责是啥?ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为...转载 2018-07-14 06:56:46 · 122 阅读 · 0 评论 -
Android 自定义View (四) 视频音量调控
今天没事逛eoe,看见有人求助要做一个下面的效果,我看下面一哥们说要用12张图片,这尼玛逆天的麻烦,仔细看了一下感觉自定义控件木有问题,就花点时间写了一个。好了,进入正题,继续我们的自定义View四部曲。1、先分许需要的属性,两个小块的颜色、一张中间的图片、间隙大小、一个多少个块块。分析完毕,开始写attr.xml<?xml version="1.0" encoding="utf-8"?&g...转载 2018-07-14 06:56:36 · 548 阅读 · 0 评论 -
Android 自定义View (三) 圆环交替 等待效果
一个朋友今天有这么个需求(下图),我觉得那自定义View来做还是很适合的,就做了下,顺便和大家分享下,对于自定义View多练没坏处么。如果你看了前两篇,那么这篇一定so easy 。效果就这样,分析了一下,大概有这几个属性,两个颜色,一个速度,一个圆环的宽度。还是我们自定View的那几个步骤:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性[ 3、重写onMesure ]4、...转载 2018-07-14 06:56:29 · 322 阅读 · 0 评论 -
Android 自定义View (二) 进阶
自定义View显示一张图片,下面包含图片的文本介绍,类似相片介绍什么的。4个步骤:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性[ 3、重写onMesure ]4、重写onDraw直接切入正题:1、在res/values/attr.xml<?xml version="1.0" encoding="utf-8"?><resources> <...转载 2018-07-14 06:56:16 · 138 阅读 · 0 评论 -
Android 自定义View (一)
很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章。先总结下自定义View的步骤:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性[ 3、重写onMesure ]4、重写onDraw我把3用[]标出了,所以说3不一定是必须的,当然了大部分情况下还是需要重写的...转载 2018-07-14 06:56:09 · 163 阅读 · 0 评论 -
利用DecorView实现播放视频开灯/关灯效果和仿QQ消息提示框
写这篇文章前得先来了解一下activity.getWindow().getDecorView()获取到的DecorView视图首先我们通过强大的Android Studio开发神器,获取我们当前app界面的布局层次(结构)来帮助我们了解DecorView是个什么?依次点击菜单Tools——>Android——>Layout Inspector然后选择一个app所在的进程就可...转载 2018-07-30 05:46:50 · 439 阅读 · 0 评论 -
Android自定义View(一)__坐标系
*屏幕坐标系和数学中的坐标系的区别由于Android定义屏幕左上角为坐标原点 , 向右为x轴增大方向 , 向下为y轴增大方向 , 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的,详情如下图: - - - - - -> > > 实际手机的坐标系如下图所示 (黄色区域是手机屏幕)* 控件(View)的坐标系View的坐标系统是相对于父控件而言的...转载 2018-08-15 06:35:31 · 605 阅读 · 0 评论 -
Android自定义View(二)__角度和弧度的区别
一.前言:1.为什么讲这个?在我们自定义View,尤其是制作一些复杂炫酷的效果的时候,实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。 这其中可能会涉及到画布的相关操作(旋转),以及一些正余弦函数的计算等,这些内容就会用到一些角度、 弧度相关的知识。2.为什么对角的描述存在角度与弧度两种单位?简单来说就是为了方便,为了精确描述一个角的大小引入了角度与弧度的概...转载 2018-08-15 06:35:39 · 204 阅读 · 0 评论 -
Android自定义View(三)_颜色
下边我们来介绍自定义View的中的颜色.简要介绍安卓中的颜色相关内容,包括颜色的定义,创建颜色的几种方式,以及颜色的混合模式等。一.简单介绍颜色*安卓支持的颜色模式:颜色模式 备注 ARGB8888 四通道高精度(32位) ARGB4444 四通道低精度(16位) RGB565 屏幕默认模式(16位) Alpha8 仅有透明通道(8位)...转载 2018-08-15 06:35:49 · 1176 阅读 · 0 评论 -
Android自定义View(四)_自定义View的分类和流程
从本篇开始,将会逐渐揭开自定义View的神秘面纱,每一篇都将比上一篇内容更加深入,利用所学的知识能够制作更加炫酷自定义View,就像在台阶上一样,每一篇都更上一层,帮助大家一步步走向人生巅峰,出任CEO,迎娶白富美。 误,是帮助大家更加了解那些炫酷的自定义View是如何制作的,达到举一反三的效果。自定义View绘制流程函数调用链(简化版)一.自定义View分类1.自定义View...转载 2018-08-15 06:35:56 · 218 阅读 · 0 评论 -
Android自定义View(五)_Canvas之绘制基本形状
在本篇文章中,我们将介绍一下Canvas的用法一.Canvas简介Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大。一般来说,比较基础的东西有两大特点: 1.可操作性强:由于这些是构成上层的基础,所以可操作性必然十分强大。 2.比较难用:各种方法太过基础,想要完美的将这些操作组合起来有一定难度。不过不必担心,本系列文章不仅会介绍...转载 2018-08-15 06:36:04 · 546 阅读 · 0 评论 -
Android自定义View(六)_Canvas之画布操作
一.Canvas的常用操作速查表操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, draw...转载 2018-08-15 06:36:22 · 701 阅读 · 0 评论 -
Android自定义View(七)_Canvas之图片文字
一.Canvas的常用操作速查表操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, draw...转载 2018-08-15 06:36:30 · 4145 阅读 · 0 评论 -
Android自定义View(八)_Path之基本操作
一.Path常用方法表为了兼容性(偷懒) 本表格中去除了部分API21(即安卓版本5.0)以上才添加的方法。作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 设置终点 setLastPoint 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同 连接直线 lineTo 添加上一个...转载 2018-08-15 06:36:39 · 660 阅读 · 0 评论 -
Android自定义View(九)_Path之贝塞尔曲线
一.Path常用方法表为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 设置终点 setLastPoint 重置当前path中最后一个点...转载 2018-08-15 06:36:51 · 1501 阅读 · 0 评论 -
Android自定义View(十)_Path之完结篇(伪)
经历过前两篇Android自定义View(九)Path之贝塞尔曲线 的讲解,本篇终于进入Path的收尾篇,本篇结束后Path的大部分相关方法都已经讲解完了,但Path还有一些更有意思的玩法,应该会在后续的文章中出现吧,嗯,应该会的ˊ>ˋ一.Path常用方法表为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的...转载 2018-08-15 06:36:59 · 265 阅读 · 0 评论 -
Android自定义View(十一)_Path之玩出花样(PathMeasure)
Path之玩出花样(PathMeasure)可以看到,在经过 Android自定义View(十)_Path之完结篇(伪) 后, Path中各类方法基本上都讲完了,表格中还没有讲解到到方法就是矩阵变换了,难道本篇终于要讲矩阵了? 非也,矩阵这一部分仍在后面单独讲解,本篇主要讲解 PathMeasure 这个类与 Path 的一些使用技巧。| 准备搜索 | 放大镜图标逐渐变化为一个点 | ...转载 2018-08-16 06:37:28 · 177 阅读 · 0 评论 -
Android自定义View(十二)_ Matrix基础
本文内容偏向理论,和 画布操作 有重叠的部分,本文会让你更加深入的了解其中的原理。本篇的主角Matrix,是一个一直在后台默默工作的劳动模范,虽然我们所有看到View背后都有着Matrix的功劳,但我们却很少见到它,本篇我们就看看它是何方神圣吧。由于Google已经对这一部分已经做了很好的封装,所以跳过本部分对实际开发影响并不会太大,不想深究的粗略浏览即可,下一篇中将会详细讲解Matri...转载 2018-08-16 06:37:37 · 330 阅读 · 0 评论 -
Android自定义View(十二)_ Matrix详解
在上一篇文章中,我们对Matrix做了一个简单的了解,偏向理论,在本文中则会详细的讲解Matrix的具体用法,以及Matrix的一些实用技巧。Matrix方法表按照惯例,先放方法表做概览。方法类别 相关API 摘要 基本方法 equals hashCode toString toShortString 比较、 获取哈希值、 转换为字符串 数值操作 ...转载 2018-08-16 06:37:48 · 193 阅读 · 0 评论 -
Android自定义View_底部弹出Popuwindow
实现方式基础类package cn.yuan.xiaoyu.testmodule.view.picker;import android.content.Context;import android.graphics.Rect;import android.graphics.drawable.ColorDrawable;import android.os.Build;impor...转载 2018-08-23 06:39:26 · 623 阅读 · 0 评论 -
Android _自定义芝麻积分(装逼神器)
首先看下我们的效果图, 1. 自定义的控件第一步,(天才第一步….脑补吧),对,你没有看错,就是继承view,并生成三个构造方法.package cn.yuan.yu.mainmodule.module;import android.content.Context;import android.util.AttributeSet;import android.view.View;...转载 2018-08-23 06:39:33 · 2549 阅读 · 0 评论 -
关于android实现fastindexbar(快速索引)详解
首先看下自定义viewfastindex的实现 package cn.yuan.yu.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import andr...转载 2018-08-23 06:39:42 · 1025 阅读 · 0 评论 -
关于如何通过recycleview实现聊天界面的效果
首先定义主布局文件 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_hei...转载 2018-08-14 06:40:47 · 1646 阅读 · 2 评论 -
MeasureSpec的简单说明
注:Spec为specification的缩写,以为规格或者说明书的意思(英语不好,专门 用英语翻译软件翻译了一下)。所以顾名思义该类的所以就是定义View的测量规格或者测量规则。这个类是View里面的嵌套内部类,提供了三个对外公开的static变量UNSPECIFIED,EXACTLY,AT_MOST,,这三个变量统称为specMode,对于一个View来说它的宽和高各有属于自己的spec...转载 2018-08-07 06:31:26 · 347 阅读 · 0 评论 -
自定义View关于measure流程的基本思路整理
本文着重点在于怎么将android的一般测量规律应用到自己的自定义View中去,同时也算是给指定一个确定的思路。而对这些测量的内部细节不多做说明。其实对于Measure要分两个具体的情况:1)如果测量的是一个View,那么通过View这个类带的measure(int widthMeasureSpec, int heightMeasureSpec)方法就可以完成测量过程。2)如果是Vie...转载 2018-08-08 06:37:16 · 147 阅读 · 0 评论 -
自定义控件其实很简单1
自定义View,很多初学Android的童鞋听到这么一句话绝逼是一脸膜拜!因为在很多初学者眼里,能够自己去画一个View绝逼是一件很屌很Cool的事!但是,同样而言,自定义View对初学者来说却往往可望而不可及,可望是因为看了很多自定义View的源码好像并不难,有些自定义View甚至不足百行代码,不可及呢是因为即便看了很多文章很多类似的源码依然写不出一个霸气的View来。这时会有很多前辈告诉你多看...转载 2018-08-17 06:32:12 · 3649 阅读 · 3 评论 -
自定义控件其实很简单2
上一节我们粗略地讲了下如何去实现我们的View并概述了View形成动画的基本原理,这一节我们紧跟上一节的步伐来深挖如何去绘制更复杂的View!通过上一节的学习我们了解到什么是画布Canvas什么是画笔Paint,并且学习了如何去设置画笔的属性如何在画布上画一个圆,然而,画笔的属性并非仅仅就设置个颜色、大小那么简单而画布呢肯定也不单单只是能画一个圆那么无趣,工欲善其事必先利其器,既然想画好图那必...转载 2018-08-17 06:32:20 · 254 阅读 · 0 评论 -
自定义控件其实很简单3
上一回关羽操刀怒砍秦桧子龙拼命相救,岂料刘备这狗贼耍赖以张飞为祭品特殊召唤黑暗大法师消灭了场上所有逗逼,霎时间血流成河,鲜红的血液与冰冷的大地融合交汇在一起焕发出血液的煞气……那么,问题来了,请问这是使用了哪种PorterDuffXfermode?在上一节的最后一个Example中我们做了一个橡皮擦的View,但是这个View虽然在效果上没有什么问题,但是逻辑确实有问题的!你们发现了么?哥故意...转载 2018-08-17 06:32:28 · 238 阅读 · 0 评论 -
自定义控件其实很简单4
前几天身子骨出了点小毛病不爽,再加上CSDN抽风也木有更新,现在补上之前漏掉的1/3上一节结尾的时候我们说到,Paint类中我们还有一个方法没讲 setShader(Shader shader)这个方法呢其实也没有什么特别的,那么为什么我们要把它单独分离出来讲那么异类呢?难道它贿赂了我吗?显然不是的,哥视金钱如粪土(我的要求很低,只需要一克反物质即可)!怎么可能做出如此下三滥的事...转载 2018-08-17 06:32:37 · 240 阅读 · 0 评论