`
kingsword
  • 浏览: 7465 次
社区版块
存档分类
最新评论

android自定义view

 
阅读更多

步骤:

1. 继承View

2. Override onSizeChanged()方法, 用来在view第一次出现或者是每次大小变化的时候计算View的大小。这个方法在最开始view被inflate的时候也会被调用。

3. Override onDraw()方法,用来在Canvas对象上画view,配合使用Paint可以给Canvas对象提供不同的风格

4. 最后,当响应用户事件需要更新view时,调用invalidate()方法,它将触发onDraw()方法被调用并对view进行redraw

 

要点:

  • onDraw方法是在每次屏幕刷新的时候会被调用,通常一秒钟会被触发很多次,出于性能考虑要注意避免在该方法中做过多的事情,尤其避免在onDraw中分配创建对象,否则频繁的GC内存抖动会导致virtual stutter
  • Canvas和paint上常用方法:
    • drawText()
    • setTypeface()
    • setColor()
    • 画primtive shapes例如drawRect(),drawOval(), drawArc()
    • setStyle(),可改变图形边框和是否填充
    • drawBitmap()
  • 如果是在复杂布局中,可能还需要考虑override onMeasure来配合父布局进行适当的布局

焦点的处理

对于使用D-pad控制UI的设备来说,界面上显示焦点很有必要,因为没有focus显示在控件上,用户可能不知道当前正在和什么控件在进行交互。然而对于大多数touch以后就能响应的设备来说,UI控件就不一定需要focus或者被高亮,因为用户可以从屏幕上直接点击任何控件,对于这种设备,一旦屏幕被touch以后,就进入了“Touch Mode"。在这个模式里面,如果仍然希望管理focus,只有那些isFocusableInTouchMode()为true的控件才可以获得焦点,比如在一个界面里面把文本输入框设置为focusableInTouchMode=true, 而把其他控件像Button这样的,弄成false,这样文本框就能获得焦点,而Button就只能被touch,响应点击事件,但touch了以后并不会获得焦点。

分享到:
评论

相关推荐

    BookPage-Android自定义View实现翻页效果,并附带实现教程.zip

    仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...

    android 自定义view比较综合的例子

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...

    Android自定义View实现转盘旋转的效果

    Android 自定义 View 实现转盘旋转的效果 Android 的自定义 View 为开发者定义和使用个性化的 View 提供了很好的支持,想要使用自己定义的 View,需要继承 View 类,并重写构造函数和 onDraw() 函数。onDraw 函数...

    Android 自定义View实现水平温度计

    总的来说,这个项目涵盖了Android自定义View的基本流程,以及图形绘制、颜色处理、动态更新等核心知识点,是学习Android自定义组件的一个良好实践。通过学习和研究,开发者不仅可以掌握自定义View的开发技巧,还能...

    android 自定义View界面大合集

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。"Android 自定义View界面大合集"的主题涵盖了这个领域的广泛知识点,包括但不限于...

    android自定义View(五)打造自己的遥控器菜单

    这个过程涉及到了Android自定义View的基本原理,包括绘图、触摸事件处理、动画和布局管理等。了解并掌握这些知识,对于提升Android应用的用户体验具有重要意义。想要了解更多关于Android自定义View的内容,可以访问...

    Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View

    方便调用,有示例。 Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View。kotlin编写的一个自定义View。

    Android 自定义view模板并实现点击事件的回调

    总结来说,创建Android自定义View模板并实现点击事件的回调,主要包括以下步骤: 1. 定义XML资源文件(如attrs.xml),声明自定义属性。 2. 创建自定义View类,继承自适当的父View类,如`RelativeLayout`。 3. 在...

    Android 自定义view 大合集源码

    在Android开发中,自定义View是一项重要的技能,它允许开发者突破系统提供的标准组件限制,创造出独特且富有创意的用户界面。本资源“Android 自定义view 大合集源码”由知名开发者雨松MOMO提供,旨在深入探讨并实践...

    Android自定义View-画直线、折线拖动点可移动demo

    Android自定义View,实现画直线、折现,拖动点可以随意移动位置。实现横竖屏切换时,坐标根据分辨率进行转换。

    Android自定义view,实现多画面播放器

    本项目"Android自定义view,实现多画面播放器"就是这样一个实例,它旨在提供一个能够同时展示多个视频流并支持交互操作的视图。 首先,自定义View的基本流程包括: 1. 创建一个新的View类,通常继承自View或已有的...

    【博文源码】Android 自定义 View 基础实例

    本篇博文源码聚焦于Android自定义View的基础实例,旨在帮助开发者掌握自定义View的基本步骤和技巧。 首先,自定义View通常涉及到以下几个关键点: 1. **创建新的View类**:开发者需要继承一个已有的View类,如View...

    Android自定义View实例:深度剖析 水晶/水滴 波浪球 实现步骤详解

    在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的UI元素,提升用户体验。本文将深度剖析如何实现一个名为“水晶/水滴 波浪球”的自定义View,并通过详细步骤讲解,帮助你掌握...

    Android自定义View的事件分发机制(一)

    在博客文章“Android自定义View的事件分发机制(一)”中,作者jsonnan详细阐述了这些概念,并可能通过实例代码展示了如何在自定义View中实现自定义的事件分发逻辑。通过阅读这篇文章,开发者可以更深入地理解...

    Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能

    我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能 http://blog.csdn.net/ouyang_peng/article/details/50813419 1、实现歌词同步滚动的功能,即歌曲播放到哪句...

    Android自定义View,View中的原点坐标相关问题

    总结,Android自定义View中的原点坐标问题涉及到视图的测量、布局、绘制和事件处理等多个方面。开发者需要深入理解这些概念,才能灵活地创建满足需求的自定义视图。通过源码学习、使用合适的工具以及不断实践,可以...

    Android自定义View之高仿QQ健康

    本项目"Android自定义View之高仿QQ健康"旨在教你如何模仿流行的QQ健康应用,利用谷歌的Material Design风格来设计自定义界面,提供一个既美观又实用的样式。 首先,我们来了解一下Material Design。它是谷歌推出的...

    Android自定义View高仿抖音潜艇大挑战小游戏.zip

    Android自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View...

    Android自定义View(验证码)

    在Android开发中,自定义View是一项重要的技能,它允许开发者扩展Android系统提供的基本视图组件,以满足项目中独特的需求。本篇文章将深入探讨如何基于鸿洋大神的博客内容,创建一个自定义的验证码View。 验证码的...

    Android 自定义View实现环形带刻度的进度条

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且富有表现力的用户界面。本篇文章将深入探讨如何实现一个环形带刻度的进度条,这个自定义View适用于各种需要展示进度的情况,比如...

Global site tag (gtag.js) - Google Analytics