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

自定义View实现字母导航控件

今天分享一个以前实现的通讯录字母导航控件,下面自定义一个类似通讯录的字母导航 View,可以知道需要自定义的几个要素,如绘制字母指示器、绘制文字、触摸监听、坐标计算等,自定义完成之后能够达到的功能如下:...,必须要测量出当前自定义 View 的宽高,然后才可以通过测量到的尺寸计算相关坐标,具体测量过程就是继承 View 重写 omMeasure() 方法完成测量,关键代码如下: @Override protected...View 实际上就是在 View 上找到合适的位置,将自定义的元素有序的绘制出来即可,绘制过程最困难的就是如何根据具体需求计算合适的左边,至于绘制都是 API 的调用,只要坐标位置计算好了,自定义 View...的基本绘制结束了,现在使用自定义的 View 界面能够显示出来了,只是还没有添加相关的事件操作,下面将在 View 的触摸事件里实现相关逻辑。...的自定义关键部分基本完成。

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

    自定义View(八)-View的工作原理- View的measure

    同Activity的布局加载了解了整个View树加载的流程。最后是通过View的三大流程来实现布局的显示的。那么我们这篇来讲下布局的三大流程之一-->measure。...,在自定义View的时候如果直接继承View要重写onMeasure()方法,否者warp_content和match_parent效果相同 sizeSpec大小是有父容器决定的,我们由上篇文章知道知道父容器...onMearsure(),这也能理解,因为ViewGroup是所有空间容器的父类,具体的测量方式应该是子类容器控件实现的。...那么我们现在回过头来进入FrameLayout#onMearsure()方法看他是如何实现的: · @Override protected void onMeasure(int widthMeasureSpec...View的测量(1).png ---- 结语 View的测量基本上就是这样了。通过本章的学习,我们应该掌握测量的流程和里面重要的方法,这样我们在自定义View的时候才会更的得心应手。

    74610

    自定义View实现水平滚动控件

    前几天项目中需要使用到一个水平可滚动的选择条,类似下图效果(图片是从简书上一位作者那儿找来的,本篇也是在这位作者的文章的基础上修改的,站在大神的肩膀上,哈哈,由于原文没有提供demo,而且实现的效果跟我要的不一样...这个滚动选择条主要基于RecyclerView实现,实现的功能如下: 1. 滚动选择   2.点击选择   3.选中项目居中高亮显示 效果图如下: ?...介绍下我的这个demo的使用,非常简单: 1.在xml中加入自定义的布局 写入自定义view的包名全路径,设置一下其他基本属性,完事。 ?...2.在MainActivity中设置使用     (1)找到自定义的view和其中的RecyclerView     (2)准备数据     (3)添加监听器              这个监听器主要是为了获取...(4)调用自定义View公开的方法,设置数据,初始化适配器。 ?

    90620

    自定义View实现设置中心的功能视图

    View来减少工作量,这里利用自定义View实现设置中心的功能视图。...自定义View实现设置中心的功能视图Demo ---- 把上边布局文件中的需要重复书写的布局提取出来,放到一个单独的布局文件中,以供自定义View的引用。...就能将布局转化为View对象,在三个构造方法中都实现了一个初始化View对象的initView方法。...,就已经完了自定义View的引用。...到目前为止,到目前为止,到目前为止,通过自定义View实现了文章刚开始的那个界面,你可能会说自定义View也就如此,但是接下来你就会体验到它的强大和方便了,比如还需要一个更新状态是否开启的设置,只需在布局文件中添加一个

    93540

    android自定义view实现公章效果

    上次去一个公司面试,面试官问了一个题,怎么用android的自定义view实现一个公章的效果,据说这是华为之前的面试题,我想了下,要是公章的效果,最外层是一个圆,里面是一个五角星,但是这文字怎么画呢,比较难搞...,后来回来看了下java的api,发现人家的Path里面本来就提供了这么一个方法: public void addArc(RectF oval, float startAngle, float sweepAngle...好的,下面是全部代码: 首先继承自View,我们在构造里面初始化,同样为了方便程序的扩展性,我们用自定义属性, view.SealView android:layout_width="200dp" android:layout_height="200dp"...请到下面地址下载:http://download.csdn.net/detail/xiangzhihong8/9479372好的,就是这么简单,有任何疑问的请加我们的技术群278792776或者188716429

    98850

    歌词显示控件的实现(下)——自定义View

    接下来我想和大家分享的就是如何通过自定义View实现炫酷的LyricView歌词显示控件。...01 — 分析 我们最重要的目的是将文字绘制在View中,并设置各种效果和动画,而在绘制之前我们需要计算出文字的位置,而歌词又是以 行 为单位来显示,所以,计算行高和行间距,当然,还需要一些文字颜色等属性...好的,大致思路就是这样,接下来我们一步步地实现: 02 — 解析歌词,设置实体类 解析歌词上一篇文章已经介绍很详细,这里不再累赘。...注意: 已经绘制过的不再进行绘制 超出屏幕的不绘制 不在中心区域的其他位置的字体设置透明度 在中心区,也就是当前局无透明度 08 — 触摸事件、回弹效果 如果单纯实现视图滑动的功能的话,比较简单:只需要记录...但是,这样实现的话,用户一直滑动,整个歌词内容区域就会滑动出我们的可视区域,也就是常说的overScroll,如果不加以限制将会是一种非常差的用户体验。

    1.2K10

    自定义view——圆形进度条的实现

    最近刚完成一个版本的迭代,所有抽空学习了下自定义view,简单实现了一个可定制的圆形进度条,首先看下效果图: 效果.gif 下面一步一步来介绍这里我是怎么实现的。...首先推荐一篇文章,关于自定义view的“官方套路”,http://blog.csdn.net/yissan/article/details/51136088 写的很好,看完相信大家对于自定义的流程会有一个了解...实现步骤 1.分析自定义进度条所需要的属性 2.在项目中声明自定义属性 3.获取自定义属性 4.绘制 需要哪些自定义属性?...--外圆颜色--> 获取自定义属性 下面就开始重点了,首先我们新建一个类CustomProgress,让它继承View,然后重写它的带有AttributeSet...绘制 当我们获取完自定义属性之后,接下来就要绘制了,我们都知道,绘制在onDraw方法中执行。下面我们就按本文最开始的 "实现思路"来写绘制进度条的逻辑代码。

    1.1K10

    自定义View基础(二)View的滑动

    Android 自定义View View的滑动 ---- 在移动设备上,滑动基本是基础特性。不管是用的最多的下拉刷新还是ViewPager,他们的基础都是滑动。...View的滑动实现方法也是绚丽的自定义View的基础知识。...1、实现View滑动的三种方式 1.1使用ScrollTo/ScrollBy 首先我们来看一下这两个函数的源码: public void scrollTo(int x, int y) {...地址:View的位置参数及其Scroller类的理解 3.2使用动画 就是属性动画的实现方式,再给大家贴出代码一边: ObjcetAnimator.ofFloat(targetView,"translationX...动画API和scrollTo方法的实现方式,不过下面这种方法只是View内容的移动,如果要View的移动可能需要改变View的布局参数,这就很麻烦了。

    46420

    自定义View(九)-View的工作原理- View的layout()和draw()

    不过这是指大多数的情况下,如果你自定义View重写了layout()方法那么最后的宽高就不会不同。...3.绘制视图View的内容onDraw 第三步是调用onDraw()方法绘制内容。发现是一个空的方法,也就是说所有View继承View的控件都要重写这个方法来实现对自己内容的绘制。...因为你想怎么实现什么样的效果View也不知道就只好给你一个空方法你自己去实现。...因此,我们在自定义View的时候都一般都需要重写父类的onDraw方法来实现View内容绘制。....不管任何情况,每一个View视图都会绘制 scrollBars滚动条,且绘制滚动条的逻辑是在父类View中实现,子类无需自己实现滚动条的绘制。

    2.9K20

    自定义View

    自定义View 通过纯代码自定义控件 继承自系统自带的控件,写一个属于自己的控件 在 .h 文件中声明模型对象 @class@property(nonatomic,strong)Shop *shop;...目的:封装控件内部的细节,不让外界关心 步骤 新建一个继承UIView的类 在initWithFrame:方法中添加子控件 当控件第一次创建或者通过 init 和initWithFrame...- 一定要调用[super layoutSubviews]; /** * 当前控件的frame发生改变的时候就会调用 * 第一次显示也会调用 * 这个方法专门用来布局子控件,设置子控件的...= [UIImage imageNamed:shop.icon]; self.shopLabel.text = shop.namelabel; } 通过xib自定义控件 新建一个继承UIView...用来描述局部的 UI 界面 storyboard 是重量级的,用来描述整个软件的多个界面 并且 storyboard 能展示多个界面之间的跳转关系

    73560

    Android View体系(九)自定义View

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四...七)从源码解析View的measure流程 Android View体系(八)从源码解析View的layout和draw流程 前言 学习了以上的文章后,接下来我们来讲讲自定义View,自定义View一直被认为是高手掌握的技能...,因为情况太多,想实现的效果又变化多端,但它也要遵循一定的规则,我们要讲的就是这个规则,至于那些变化多端的酷炫的效果就由各位来慢慢发挥了。...1.自定义View简介 自定义View按照笔者的划分,分为两大类,一种是自定义View,一种是自定义ViewGroup;其中自定义View又分为继承View和继承系统控件两种。...2.继承系统控件的自定义View 这种自定义View在系统控件的基础上进行拓展,一般是添加新的功能或者修改显示的效果,一般情况下我们在onDraw()方法中进行处理。

    799100

    自定义View基础 - 最易懂的自定义View原理系列(1)

    前言 自定义View原理是Android开发者必须了解的基础; 在了解自定义View之前,你需要有一定的知识储备; 本文将全面解析关于自定义View中的所有知识基础。 ---- 目录 ?...View的构造函数:共有4个,具体如下: 自定义View必须重写至少一个构造函数: // 如果View是在Java代码里面new的,则调用第一个构造函数 public CarsonView(Context...context) { super(context); } // 如果View是在.xml里声明的,则调用第二个构造函数 // 自定义属性是从AttributeSet参数传进来的...Android的角度(angle)与弧度(radian) 自定义View实际上是将一些简单的形状通过计算,从而组合到一起形成的效果。...因为你们的赞同/鼓励是我写作的最大动力! ---- 9. 总结 关于自定义View基础已经讲解完毕

    48110

    自定义view实现超萌动感小炸弹

    下面我们和自定义view实现超萌动感天气小太阳一样,开始解析动画!...我们先把静态view绘制出来,然后再实现动画,Let's go。 ? 1.地板 ? 可以看到地板其实就是一条直线。然后中间两个缺口。这要个么实现呢?看到小太阳的小伙伴可能都会说,这很简单。...只要画一线直线然后覆盖两个白的区间就可以了。的确这可以实现,但是仔细观察可以发现下方的缺口是两个半圆加矩形实现的,这样的话就有点麻烦,而且不方便缺口位置的移动。那有什么简单的方法呢?...有,那就是使用Path进行绘画一条直线,然后通过设置圆笔头,再设置DashPathEffect(实现虚线,一段画,一段不画的效果,可以自由控制各段长度)来实现间隔(本view的缺口都是使用此特性实现的,...希望小伙伴们能有所收获,掌握更多自定义view的套路,更多分析方法,我们下次见。

    71720

    自定义View学习之路(三)————验证码的实现

    简介: 走往android的进阶之路,避不开自定义View的学习和绘制。这里以绘制一个可用的验证码为例。开始系统的学习View的绘制。 验证码需求: 类似于TextView。...自定义控件的实现步骤: 自定义View的属性(参考自定义View学习之路一) 在View的构造方法中获得我们自定义的属性 (参考自定义View学习之路一) 重写onMesure (在View的绘制中并不是必须重写该方法...这时,我们需要重新定制View在warp-content的时候的宽高大小) 重写onDraw(最重要的一步。可以理解为一个画板,可以在上面绘制我们想要的一切。...在三参构造函数中利用TypeArray获取View的属性(自定义的属性) 实例化Paint和Reac。...在画Text的时候,确定了它的x、y轴后,它会在这个坐标点开始,往上绘制。给人的感觉就是它是以左下角为坐标点的。所以为了保证验证内容不超出View范围。在做x、y的随机点时需要做范围判断。

    52110

    自定义View之客服好评View

    在工作中难免遇到自定义 View 的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累。自定义View实战....,所以需要通过自定义来满足特定的产品需求。...mEditable 是否可被点击 具体实现 既然星星有两种状态可供选择,那么单个 View 就使用 CheckBox 代替,首先初始化的时候,需要根据 mStarTotal 来控制添加多少个 CheckBox...主要的难点和重点在于根据理由内容的长短进行展示,如果内容长则显示一条,如果内容短可以显示多条。 具体实现 我们都知道 View 的测量工作主要是在 onMeasure 里进行。...sizeHeight : resultHeight); 既然 宽高 计算完了,剩下就是子 View 的摆放了,自然是在在 onLayout() 中实现。

    99550
    领券