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

Android面试官最爱问的12个自定义View的高级问题

参考简答: View与ViewGroup:View是Android界面的基本构建块,而ViewGroup是一种特殊的View,用于包含和管理其他View。...出发点:测试面试者对于View绘制流程的全面理解。 参考简答: onDraw方法:在onDraw中进行实际的绘制操作,包括绘制图形、文本等。...Canvas的使用:通过Canvas对象进行绘制,使用不同的绘制方法完成各种图形效果。 invalidate的调用:通过调用invalidate方法触发视图的重绘,再次执行onDraw方法。...事件分发与触摸事件处理 问题:解释事件分发的流程是如何进行的? 出发点:测试面试者对于Android中事件传递机制的深入理解。...注册监听器:将GestureDetector与View关联,通过onTouchEvent方法传递触摸事件。 问题:在自定义View中,如何处理多点触控事件?

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

    Android高级图片滚动控件,编写3D版的图片轮播器

    (Canvas canvas) { if (mBitmap == null) { // 如果Bitmap对象还不存在,先使用父类的onDraw方法进行绘制 super.onDraw(canvas...然后在initImageViewBitmap()方法中初始化了一些必要的信息,比如对当前图片进行截图,以用于后续的立体操作,得到当前图片的宽度等。...然后还提供了一个setRotateData()方法,用于设置当前图片的下标和滚动距离,有了这两样数据就可以通过computeRotateData()方法来计算旋转角度的一些数据,以及通过isImageVisible...接下来当图片需要绘制到屏幕上的时候就会调用onDraw()方法,在onDraw()方法中会进行判断,如果当前图片可见就调用computeRotateData()方法来计算旋转时所需要的各种数据,之后再通过...除此之外,Image3DSwitchView中还提供了setCurrentImage()方法和setOnImageSwitchListener()方法,分别可用于设置当前显示哪张图片,以及设置图片滚动的监听器

    3.9K81

    Android中的绘图

    学习内容 Ø Android中基本图形的绘制 Ø Android文本的绘制 Ø 双缓冲技术 Ø 图像的绘制及效果处理 能力目标 Ø 能使用View类搭建绘图框架 Ø 能在Android中绘制基本图形...在Android中绘图只需要继承View类,并重写它的onDraw()方法就可以了。在具体的绘图过程中可能会涉及Paint类、Color类、Canvas类等。...1.1.2 绘制文本 除了可以在屏幕上绘制简单的形状图形外,我们还可以在图形中绘制文本。在Android中我们不仅可以中规中矩地绘制文本,还可以按照指定的路径绘制文本。...这在开发中是很有用的,比如游戏中人物上面的提示文字等。 ​示例1.4​ 演示Android中文本的绘制,包括文本的简单绘制及沿着指定路径绘制。...要实现图像的旋转需要用到矩阵Matrix类的相关知识,要实现图像的不断旋转,需要在onDraw()方法中调用invalidate()方法。

    4800

    【Android 应用开发】自定义View 和 ViewGroup

    自定义View 自定义一个View组件铺满全屏, 在绘制该View组件的时候, 在onDraw()方法中根据一个xy坐标绘制一个小球; 这个xy坐标在触摸回调方法onTouchEvent()方法中动态改变..., 当检测到触摸位置发生改变, 那么就重新给xy坐标赋值, 并且调用invalidate()方法重绘该组件, invalidate()方法执行后, 会回调onDraw()方法; public class...(Canvas canvas) { super.onDraw(canvas); paint.setColor(Color.RED); canvas.drawCircle(currentX,...; (3)设置事件监听 View在本身发生变化的时候, 会将信息广播出去, 这边变化例如 : 点击, 焦点改变等; 一个事件的广播到来, 该事件就会传递到相应的View中对应的监听器里, 相当于回调View...中的监听器方法; (4)设置显示与隐藏 View可以在XML或者代码中设置是否显示或者隐藏.

    55020

    【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )

    (context, this); ④ 为组件设置触摸监听器 : 为本自定义组件设置触摸监听器 ; setOnTouchListener(this); 2 ....触摸事件传递给 GestureDetector : 在 View.OnTouchListener 触摸监听器的 onTouch 触摸回调方法中 , 将触摸事件传递给 mGestureDetector 处理...触摸滑动操作 : ① onScroll 方法 : 触摸滑动主要在 GestureDetector.OnGestureListener 监听器中的 onScroll 方法中实现 , 该方法是触摸滑动事件...; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; import...(Canvas canvas) { super.onDraw(canvas); if(mBitmapRegionDecoder == null) return;

    1.6K22

    Android开发笔记(十三)视图绘制的几个方法

    三个可进行绘制的方法 在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout、onDraw、dispatchDraw。...由于该函数没有画布,因此只适合绘制现成的视图控件。 2、onDraw(Canvas canvas) :  自定义控件一般是重写onDraw方法,在画布中绘制各种图形。...3、dispatchDraw(Canvas canvas) :  dispatchDraw与onDraw的区别在于:onDraw在绘制下级视图之前,而dispatchDraw在绘制下级视图之后,所以如果不想自己的绘图被下级视图覆盖的话...Canvas画布的使用 Canvas是Android提供的图形操作类,Canvas的使用不难,多练习几次就熟练了。...移动整个画布 rotate : 旋转画布 scale : 缩放画布 translate : 平移画布 存取画布的状态 Canvas的不同绘制操作会互相影响,比如说我们想对整个画布做旋转

    1.2K30

    2014-10-27Android学习------布局处理(七)------26个字母的布局列表的监听事件处理-----城市列表应用程序

    : 首先,Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,就是通过onTouchListener实现; 其次,所有View的子类都可以通过setOnTouchListener...,触摸字母变化监听器 , 里面的函数的作用是: 2.定义完这个接口我们现在要做的就是在我们实现的类中声明这个变量 ,并写出它的设置函数 public class MyLetterListView..., 例如触摸的位置、触摸的类型以及触摸的时间等。...那么我们来在代码中加入输出日志 看看它是怎么执行的: 首先我贴上这个类的代码(加了输出跟踪日志): import android.content.Context; import android.graphics.Canvas...(Canvas canvas) { // TODO Auto-generated method stub System.out.println("onDraw()"); super.onDraw

    48530

    Android开发笔记(九十九)圆形转盘

    圆形转盘的实现思想 圆形转盘的运用场景常见的有:抽奖转盘、圆形菜单列表、热点客户端环状列表等等。对于圆形转盘的编码实现,主要难点除了手势的触摸控制之外,就在于旋转角度的计算了。...下面是旋转角度计算的解决办法: 一、运用Math类的三角函数,计算视图旋转到某个角度时的x坐标和y坐标,此时旋转的圆心是转盘的中心点; 二、运用Path类和Matrix类,对指定文本或图像做旋转操作...,此时旋转的圆心是文本或图像的中心点; 三、刷新整个转盘的视图,对于继承自View的视图,直接调用postInvalidate方法即可。...下面列出文本旋转和图像旋转的代码例子。 文本旋转 旋转文本先调用Path类的addArc方法添加一段弧形路径,再调用Canvas的drawTextOnPath方法在该弧形路径上画出文本。...下面是一个可旋转文本的自定义控件代码: import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas

    2K30

    自定义View进阶路:绘制饼图

    (Canvas canvas) {        super.onDraw(canvas);    } } 2....,我们首先在onDraw()设置一些常规操作(这里也就是指的上面说的移动坐标系到屏幕中心点)    @Override    protected void onDraw(Canvas canvas)...{        super.onDraw(canvas);        // 保存Canvas的状态        canvas.save();        // 移动坐标系到屏幕中心点...宽高各取一半        canvas.translate(mWidth / 2, mHeight / 2);        // 用来恢复Canvas旋转、缩放等之后的状态,当和canvas.save...这里要为大家引入一个新的东西,当然,引入之前需要说明原因。 这里大家回想一下,我们虽然定义出了用户触摸的扇形区域,但是我们在每次点击,校验直到知道当前点击扇形区域,onDraw方法知道吗?

    73220

    【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

    继承自 View 的触摸事件, 当出现触摸事件的时候, 就会回调该方法 * (non-Javadoc) * @see android.view.View#onTouchEvent(...StaticLayout 布局容器 (1) StaticLayout 解析 StaticLayout 解析 : 该组件用于显示文本, 一旦该文本被显示后, 就不能再编辑, 如果想要修改文本, 使用 DynamicLayout...(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.BLUE); } } 给定具体值情况 :  -- 组件信息...#onDraw(android.graphics.Canvas) */ @Override protected void onDraw(Canvas canvas) {...); } /* * 继承自 View 的触摸事件, 当出现触摸事件的时候, 就会回调该方法 * (non-Javadoc) * @see android.view.View

    2.3K10

    Android-2D绘图

    以图形处理来说,我们最常用到的就是在一个View上画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。...这段代码同时也演示了Android中绘图操作的流程,一般是通过重载View类中的onDraw方法来实现的。...---- setTypeface方法:设置字体样式 【功能说明】该方法用于设置画笔的字体样式,可以指定系统自带的字体,也可以使用自定义的字体。该方法是设置画笔显示文本字体的最常用方法。...---- rotate方法:旋转画布 【功能说明】该方法用于旋转画布,通过旋转画布,可以将画布上绘制的对象旋转。在使用这个方法的时候,将会把画布上的所有对象都旋转。...px:旋转点的x坐标。 py:旋转点的y坐标。 【实例演示】下面通过代码来演示如何旋转画布上的一个对象。

    5.1K20

    Android 自定义 View 独家技巧

    在Android开发中,自定义View是非常常见的需求。自定义View可以帮助我们实现一些特殊的效果,或者让我们的应用更加美观。本文将介绍Android自定义View的步骤,并提供示例代码。...@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // ......(Canvas canvas) { super.onDraw(canvas); if (mBitmap == null) { // 创建缓存的Bitmap...canvas.drawBitmap(mBitmap, 0, 0, null); } } 步骤四:处理触摸事件 如果我们的自定义View需要支持触摸事件,那么我们还需要实现触摸事件处理方法。...spec用于表示测量模式,size用于表示测量大小。 使用LayoutParams:LayoutParams可以帮助我们设置自定义View的布局参数,比如宽度、高度、位置等。

    29420
    领券