十年专注于品牌网站建设 十年专注于品牌网站建设,低调、高逼格、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

定制视图之创建BoxDrawingView视图的方法

百恒网络 2017-08-25 190

Android自带了很多优秀的标准视图与组件,但有时为追求独特的应用视觉效果,我们仍需创建定制视图。 虽然定制视图种类繁多,但大致可以分为以下两大类别。

1、简单视图:简单视图内部也可以很复杂;之所以归为简单类别,是因为简单视图不包括子视图。而且,简单视图几乎总是会执行定制绘制。

2、聚合视图:聚合视图由其他视图对象组成。聚合视图通常管理着子视图,但不负责执行定制绘制。图形绘制任务都委托给了各个子视图。

3、创建定制视图所需的三大步骤如下:

(1)选择超类,对于简单定制视图而言,View是个空白画布,因此它作为超类最常见。对于聚合定制视图,我们应选择合适的超类布局,比如FrameLayout。

(2)继承选定的超类,并至少覆盖一个超类构造方法。

(3)覆盖其他关键方法,以定制视图行为。

今天,南昌APP制作开发公司小编为大家介绍一下定制视图中创建 BoxDrawingView视图的方法。

BoxDrawingView是个简单视图,同时也是View的直接子类。

以View为超类,新建BoxDrawingView类。在BoxDrawingView.java中,添加两个构造方法。具体操作如下代码所示。

初始的BoxDrawingView视图类(BoxDrawingView.java)

public class BoxDrawingView extends View {

// Used when creating the view in code

public BoxDrawingView(Context context) {

this(context, null);

}

// Used when inflating the view from XML

public BoxDrawingView(Context context, AttributeSet attrs) {

super(context, attrs);

}

}

这里之所以添加了两个构造方法,是因为视图可从代码或者布局文件实例化。从布局文件中实例化的视图可收到一个AttributeSet实例,该实例包含了XML布局文件中指定的XML属性。 即使不打算使用构造方法,按习惯做法也应添加它们。

有了定制视图类,我们来更新fragment_drag_and_draw.xml布局文件以使用它,具体做法如下代码所示。

在布局中添加BoxDrawingView(fragment_drag_and_draw.xml)

在布局中添加BoxDrawingView

注意,我们必须使用BoxDrawingView的全路径类名,这样布局inflater才能够找到它。布局 inflater解析布局XML文件,并按视图定义创建View实例。如果元素名不是全路径类名,布局inflater 会转而在android.view和android.widget包中寻找目标。如果目标视图类放置在其他包中,布局inflater将无法找到目标并最终导致应用崩溃。

因此,对于android.view和android.widget包以外的定制视图类,必须指定它们的全路径类名。

运行DragAndDraw应用,一切正常的话,屏幕上会出现一个空视图,如下图所示。

运行DragAndDraw应用

未绘制的BoxDrawingView

接下来,让BoxDrawingView监听触摸事件,并实现在屏幕上绘制矩形框。

以上就是小编为大家介绍的关于在南昌APP开发中创建 BoxDrawingView视图的方法,其实方法很简单,估计大家看一遍就会了。不过如果还有哪些不太明白的地方也不用担心,可随时来电咨询百恒网络,我们专业为您解答!


400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×